animation - C Animated Roulette Wheel -


for class have been tasked animating roulette wheel must:

  1. read standard input 1 valid bet on single number.
  2. randomly select winning number.
  3. display animation of roulette wheel consisting of @ least 2 images. 4.display user bet, winning number , payout value (calculated on basis each bet value 1) on image @ end of animation.

i have animated wheel using loop , have random winner require assistance user input.

for user input have comments , feedback:

       char userbet[3];          int result1;        scanf( "%s" , &userbet);        if(atoi(userbet) >=0 && atoi(userbet) <= 36){result1 = 1;        printf("you bet on number %s", &userbet);}         else {        printf("please enter valid bet", &userbet);} 

this works, tested several numbers , got results wanted. can me using trigger animation?

hoping use 'result' trigger animation through if statement instead program skips past whole section , plays animation anyway. if has idea how force program check stdin console or can see way around please help!

i'm beginner , comments valued, thank reading , hope question doesn't break rules. thank feedback!

if has better suggestion user input ears.

rest of source code:

    #include <stdio.h>     #include <stdlib.h>     #include <gd.h>      #define use_global_colormap  1     #define use_local_colormap   0      #define loop_animation_forever  0     #define do_not_loop_animation  -1     #define auto_frame_disposal     1     #define animation_delay         1 /* in milliseconds */      #define image_width        640     #define image_height       720     #define circle_diameter    30     #define max_frames_count   70     #define movement_per_frame 10       int main( void )     {        file *animatedgif;       gdimageptr frameimage;       int yellow, black, red, green, brown, darkbrown, gold, silver, white, grey, framecounter, drawingcolor, number, winningangle;       int slicecounter = 0;       int slicestartingangle = 0;       int sliceendingangle = 0;       int sliceangleincrement = 9;       int centerpointx = 320;       int centerpointy = 360;       int wheeldiameter = 560;       int insidecoverdiameter = 400;       int textpositionangle = 367;       int textrotationangle = 270;       int ballpositionangle = 0;       int ballspeed;       int ballroute = 180;       double textpositionx, textpositiony, ballpositionx, ballpositiony;       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" };                            srand( time( 0 ) );       number = rand();       number = number % 100;       number++;       ballspeed = number;           animatedgif = fopen( "animation.gif", "wb" );       frameimage = gdimagecreate( image_width, image_height );       gdimagecolorallocate( frameimage, 34, 139, 34 );       gdimagegifanimbegin( frameimage, animatedgif, use_global_colormap,         do_not_loop_animation);         ( framecounter = 0; framecounter <= max_frames_count; framecounter++ )       {         gdimagedestroy( frameimage );          frameimage = gdimagecreate( image_width, image_height );         gdimagecolorallocate( frameimage, 34, 139, 34 );         yellow = gdimagecolorallocate( frameimage, 255, 255, 0 );         green = gdimagecolorallocate( frameimage,  0, 190, 0  );         red = gdimagecolorallocate( frameimage, 255, 0, 0 );         black = gdimagecolorallocate( frameimage, 0, 0, 0 );         brown = gdimagecolorallocate( frameimage, 222, 184, 135 );         darkbrown = gdimagecolorallocate( frameimage, 139, 69, 19);         gold = gdimagecolorallocate( frameimage, 255, 215, 0);         silver = gdimagecolorallocate( frameimage, 191, 192, 192);         white = gdimagecolorallocate( frameimage, 255, 255, 255 );         grey = gdimagecolorallocate( frameimage, 105, 105, 105 );         gdimagesetthickness( frameimage, 4 );         gdimagefilledarc(frameimage, centerpointx, centerpointy, 596, 596, 0, 360, brown, gdarc);         {          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) * (wheeldiameter / 2.25)) + centerpointx;         textpositiony = centerpointy - (sin(textpositionangle * degreestoradiansmultiplier) * (wheeldiameter / 2.25));          gdimagefilledarc( frameimage, centerpointx, centerpointy, wheeldiameter, wheeldiameter, slicestartingangle, sliceendingangle, drawingcolor, gdarc );           gdimagestringft( frameimage, null, white, "vera.ttf", 14, textrotationangle * degreestoradiansmultiplier, textpositionx, textpositiony, pocketnumbers[ slicecounter ] );         }while (++slicecounter < 37 );          gdimagefilledarc(frameimage, centerpointx, centerpointy, 400, 400, 0, 360, grey, gdarc);          gdimagefilledarc(frameimage, centerpointx, centerpointy, 320, 320, 0, 360, black, gdarc);          gdimagearc(frameimage, centerpointx, centerpointy, 400, 400, 0, 360, gold);         gdimagefilledarc(frameimage, centerpointx, centerpointy, 100, 100, 0, 360, black, gdarc);         gdimagefilledarc(frameimage, centerpointx, centerpointy, 20, 20, 0, 360, silver, gdarc);         gdimagefilledarc(frameimage, centerpointx, 345, 10, 20, 0, 360, silver, gdarc);         gdimagefilledarc(frameimage, centerpointx, 375, 10, 20, 0, 360, silver, gdarc);         gdimagefilledarc(frameimage, 335, centerpointy, 20, 10, 0, 360, silver, gdarc);         gdimagefilledarc(frameimage, 305, centerpointy, 20, 10, 0, 360, silver, gdarc);         gdimagearc(frameimage, centerpointx, centerpointy, 460, 460, 0, 360, gold);         gdimagearc(frameimage, centerpointx, centerpointy, 600, 600, 0, 360, darkbrown);          if ( framecounter == 70 ) {         ballpositionx = (cos( degreestoradiansmultiplier * ballpositionangle ) * 215) + centerpointx;         ballpositiony = centerpointy - (sin( degreestoradiansmultiplier * ballpositionangle ) * 215);         gdimagefilledellipse( frameimage, ballpositionx, ballpositiony, circle_diameter, circle_diameter, silver );         ballpositionangle = winningangle; }          else if(framecounter >= 20) {         ballpositionx = (cos( degreestoradiansmultiplier * ballpositionangle ) * ballroute) + centerpointx;         ballpositiony = centerpointy - (sin( degreestoradiansmultiplier * ballpositionangle ) * ballroute);         gdimagefilledellipse( frameimage, ballpositionx, ballpositiony, circle_diameter, circle_diameter, silver ); }          slicecounter = 0;         slicestartingangle = 0;         sliceendingangle = 9;         textpositionangle = 367;         textrotationangle = 270;         ballpositionangle = 0;         slicestartingangle += 9 * framecounter;         sliceendingangle += 9 * framecounter;         textpositionangle -= 9 * (framecounter + 1);         textrotationangle -= 9 * (framecounter + 1);         ballpositionangle += ballspeed * (framecounter);            gdimagegifanimadd( frameimage, animatedgif, use_global_colormap, 0, 0, animation_delay, auto_frame_disposal, null ); }            //slicecounter = (winningangle / 9);         //gdimagestringft( frameimage, null, white, "vera.ttf", 14, 0, centerpointx, centerpointy, pocketnumbers[ slicecounter ] ); }        gdimagegifanimend( animatedgif );       fclose( animatedgif );       gdimagedestroy( frameimage ); } 

how expect handle input greater 10 code?

char userbet[2];        // 2 characters! scanf( "%s" , userbet); // %s means string, means ends \0 terminator. 

an input of 10 or greater like:

[1] [0] [\0-terminator]. 

that 3 characters!


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -