2014-04-19 3 views
0

나는 결국 애니메이션이 될 룰렛 휠에서 일하고 있습니다. 이전에는 주머니에있는 숫자가 나타났습니다. 많은 변경을 한 후에 더 이상 나타나지 않았습니다. 나는 잠시 동안 코드를 살펴 봤다.내 텍스트는 어디에 있습니까?

수면 부족과 초보자 수준의 노하우로 인해 놓친 것 같아.

 #include <stdio.h> 
#include <stdlib.h> 
#include <gd.h> 
#include <math.h> 

#define USE_GLOBAL_COLORMAP 1 
#define USE_LOCAL_COLORMAP 0 

#define LOOP_ANIMATION_FOREVER 1 
#define DO_NOT_LOOP_ANIMATION 0 
#define AUTO_FRAME_DISPOSAL  1 
#define ANIMATION_DELAY   1 /* in milliseconds */ 

#define IMAGE_WIDTH  500 
#define IMAGE_HEIGHT  500 
#define CENTERX IMAGE_WIDTH /2 
#define CENTERY IMAGE_WIDTH /2 

#define WHEEL_DIAMETER  IMAGE_WIDTH - 20 
#define INSIDE_COVER_DIAMETER WHEEL_DIAMETER - 80 
#define MAX_FRAMES_COUNT 100 
#define MOVEMENT_PER_FRAME 5 


int main(void) 
{ 


    gdImagePtr Roulette = gdImageCreate (IMAGE_WIDTH, IMAGE_HEIGHT); 


    //FILE *animatedGIF; 
    FILE *jpgImageFile = NULL; 

    int red, black, green, gold, silver, white, trim; 
    int frameCount, frameImage; 

    double degreesToRadiansMultiplier = 0.0174532925; 
     char *pocketNumbers[] = { "32", "15", "19", "4", "21", "2", "25", "17", "34", 
          "6", "27", "13", "36", "11", "30", "8", "23", "10", 
          "5", "24", "16", "33", "1", "20", "14", "31", "9", 
          "22", "18", "29", "7", "28", "12", "35", "3", "26", "0" }; 


    int sliceCounter = 0; 
     int sliceStartingAngle = 0; 
     int sliceEndingAngle = 0; 
     int sliceAngleIncrement = 9; 
     int textPositionAngle = 367; 
     int textRotationAngle = 270; 
     int textPositionX, textPositionY; 
     int drawingColor; 




     frameImage = gdImageCreate(IMAGE_WIDTH, IMAGE_HEIGHT); 
    gdImageColorAllocate(Roulette, 34, 139, 34); 
    red = gdImageColorAllocate(Roulette, 204, 0, 0); 
    white = gdImageColorAllocate(Roulette, 255, 255, 255); 
    green = gdImageColorAllocate(Roulette, 0, 102, 0); 
    gold = gdImageColorAllocate(Roulette, 215, 215, 0); 
    silver = gdImageColorAllocate(Roulette, 192, 192, 192); 
    black = gdImageColorAllocate(Roulette, 0, 0, 0); 
    trim = gdImageColorAllocate (Roulette, 102, 51, 0); 

    gdImageSetThickness(Roulette, 4); 
    gdImageFilledArc(Roulette, CENTERX, CENTERY, 450, 450, 0, 360, trim, gdArc); 

     do 
{ 
sliceStartingAngle = sliceEndingAngle; 
sliceEndingAngle = sliceStartingAngle + sliceAngleIncrement; 
textRotationAngle -= sliceAngleIncrement; 
textPositionAngle -= sliceAngleIncrement; 

if (sliceCounter == 36) 
{ 
    drawingColor = green; 
    sliceEndingAngle += 1; 
    textPositionAngle -= 3; 
} 
else if ((sliceCounter % 2) == 0) 
{ 
    drawingColor = red; 
    textRotationAngle += 2; 
} 
else 
{ 
    drawingColor = black; 
    sliceEndingAngle += 1; 
    textPositionAngle -= 1; 
    textRotationAngle -= 1; 
} 

if ((sliceCounter % 5) == 0) sliceEndingAngle += 1; 
if ((sliceCounter % 7) == 6) { textPositionAngle -= 1; textRotationAngle -= 8; } 
if ((sliceCounter % 13) == 12) textPositionAngle -= 1; 

textPositionX = (cos(textPositionAngle * degreesToRadiansMultiplier) * (WHEEL_DIAMETER/2.25)) + CENTERX; 
textPositionY = CENTERY - (sin(textPositionAngle * degreesToRadiansMultiplier) * (WHEEL_DIAMETER/2.25)); 

gdImageFilledArc(Roulette, CENTERX, CENTERY, WHEEL_DIAMETER, WHEEL_DIAMETER, sliceStartingAngle, sliceEndingAngle, drawingColor, gdArc); 
gdImageStringFT(Roulette, NULL, white, "Vera.ttf", 14, textRotationAngle * degreesToRadiansMultiplier, textPositionX, textPositionY, pocketNumbers[ sliceCounter ]); 
    } while (++sliceCounter < 37); 

    gdImageFilledEllipse(Roulette, CENTERX, CENTERY, INSIDE_COVER_DIAMETER, INSIDE_COVER_DIAMETER, white); 





    //gdImageFilledArc(Roulette, CENTERX, CENTERY, WHEEL_DIAMETER, WHEEL_DIAMETER, sliceStartingAngle, sliceEndingAngle, gold, gdArc); 



    jpgImageFile = fopen("RouletteImage.jpg", "wb"); 
     gdImageJpeg(Roulette, jpgImageFile, -1); 
     fclose(jpgImageFile); 
     gdImageDestroy(Roulette); 
    } 

감사합니다 :) (아와 유럽 룰렛 휠)

답변

0

정말 간단했다, 나는 그냥 피곤 해요 같아요.

제거됨 기호 상수

#define WHEEL_DIAMETER IMAGE_WIDTH - 20 

정수로 치환

int WHEEL_DIAMETER = IMAGE_WIDTH - 20; 
관련 문제