Diff for /froggix/src/froggix.c between versions 1.1 and 1.4

version 1.1, 2009/03/28 03:48:45 version 1.4, 2009/04/07 04:16:45
Line 25 Line 25
 /*   /* 
  * Set some basic definitions   * Set some basic definitions
  */   */
 #define VERSION "$Id$"  #define VER "$Id$"
 #define TITLE "Froggix"  #define TITLE "Froggix"
 #define SCREEN_WIDTH 640  #define SCREEN_WIDTH 640
 #define SCREEN_HEIGHT 480  #define SCREEN_HEIGHT 480
Line 60 Line 60
 #define SCORE_PINK 200  #define SCORE_PINK 200
 #define SCORE_SECONDS 10  #define SCORE_SECONDS 10
 #define HIGH_SCORE 4630  #define HIGH_SCORE 4630
 #define SCORE_FREE_FROG 200  #define SCORE_FREE_FROG 2000
   
 /* The green game timer */  /* The green game timer */
 #define MAX_TIMER 350  #define MAX_TIMER 350
 #define TIMER_SIZE 150  #define TIMER_SIZE 150
 #define TIMER_COLOR 32, 211, 0  #define TIMER_COLOR 32, 211, 0
 #define TIMER_LOW_COLOR 255, 0, 0  #define TIMER_LOW_COLOR 255, 0, 0
   #define FLY_MAX_TIME 50
   #define GATOR_MAX_TIME 70
   
 /* baddies */  /* baddies */
 #define VEHICLE 0  #define VEHICLE 0
Line 156  typedef struct { Line 158  typedef struct {
         int type;      /* SHORT, MEDIUM, or LONG */          int type;      /* SHORT, MEDIUM, or LONG */
         int speed;     /* What speed does the log move at */          int speed;     /* What speed does the log move at */
         int hasPink;   // Is bonus frog riding          int hasPink;   // Is bonus frog riding
           int isGator;   /* Are we a gator?  if > 1 we have an open mouth */
   
         SDL_Rect src;          SDL_Rect src;
 } logObj;  } logObj;
Line 184  void beginGame( void ); Line 187  void beginGame( void );
 int loadMedia( void );  int loadMedia( void );
 int heartbeat( void );  int heartbeat( void );
 int updateGameState( void );  int updateGameState( void );
   void checkFly( void );
   void checkGator( void );
 void configGameScreen( void );  void configGameScreen( void );
 void drawGameScreen( void );  void drawGameScreen( void );
 void drawBackground( void );  void drawBackground( void );
Line 219  void drawImage(SDL_Surface *srcimg, int Line 224  void drawImage(SDL_Surface *srcimg, int
 void playSound( Mix_Chunk *sound );  void playSound( Mix_Chunk *sound );
 void setFullScreenMode( void );  void setFullScreenMode( void );
   
   int flyTimer = 0;
   int gatorTimer = 0;
 int level = 0;  int level = 0;
 int playing = 0;  int playing = 0;
 int lives = 0;  int lives = 0;
Line 331  int loadMedia( void ) { Line 338  int loadMedia( void ) {
          * Load frogger's textures and sounds           * Load frogger's textures and sounds
          */           */
         gfx = IMG_Load( "images/frogger.png" );          gfx = IMG_Load( "images/frogger.png" );
   
         if ( gfx == NULL ) {          if ( gfx == NULL ) {
                 fprintf( stderr, "Error: 'images/frogger.bmp' could not be open: %s\n", SDL_GetError( ) );                  fprintf( stderr, "Error: 'images/frogger.bmp' could not be open: %s\n", SDL_GetError( ) );
                 result--;                  result--;
Line 452  int keyEvents( SDL_Event event ) { Line 458  int keyEvents( SDL_Event event ) {
                                         default:                                          default:
                                                 break;                                                  break;
                                 }                                  }
   /* Uncomment for positioning debug information
                                 printf( "x,y,d => %i,%i,%i,%i\n", frogger.placement[X],                                  printf( "x,y,d => %i,%i,%i,%i\n", frogger.placement[X],
                                                                frogger.placement[Y],                                                                 frogger.placement[Y],
                                                                frogger.direction,                                                                 frogger.direction,
                                                                frogger.currentRow );                                                                 frogger.currentRow );
   */
                         }                          }
                         /* Game over man, game over! */                          /* Game over man, game over! */
                         if ( ! lives ) {                          if ( ! lives ) {
Line 493  int keyEvents( SDL_Event event ) { Line 501  int keyEvents( SDL_Event event ) {
 }  }
   
 int updateGameState( void ) {  int updateGameState( void ) {
 /*          int i;
         printf( "D: Updating game state\n" );  
 */  
         if ( ! drawBG ) configGameScreen( );          if ( ! drawBG ) configGameScreen( );
   
         if ( lives <= 0 ) {          if ( lives <= 0 ) {
Line 507  int updateGameState( void ) { Line 514  int updateGameState( void ) {
                         playing = 0;                          playing = 0;
                         lives   = 0;                          lives   = 0;
                         level   = 0;                          level   = 0;
                           score   = 0;
                           givenFreeFrog = 0;
                           drawBG  = 0;
                           for ( i = 0; i < MAX_GOALS; i++ ) { goals[i].occupied = 0; }
                           
                 }                  }
                 return 500;                  return 500;
         }          }
Line 544  logObj setWood( int type, int speed, int Line 556  logObj setWood( int type, int speed, int
         tempWood.src.x = imgPixelSrc;          tempWood.src.x = imgPixelSrc;
         tempWood.src.w = FRAME * tempWood.type;          tempWood.src.w = FRAME * tempWood.type;
         tempWood.src.h = FRAME;          tempWood.src.h = FRAME;
           tempWood.isGator = 0;
   
         return tempWood;          return tempWood;
 }  }
Line 699  void configGameScreen( void ) { Line 712  void configGameScreen( void ) {
         rightBorderRect.w = SCREEN_WIDTH - RIGHT_SIDE;          rightBorderRect.w = SCREEN_WIDTH - RIGHT_SIDE;
         rightBorderRect.h = SCREEN_HEIGHT;          rightBorderRect.h = SCREEN_HEIGHT;
   
           /*
            *  We reset the flyTimer since this may not be the first game played
            */
           flyTimer = 0;
   
         /*           /* 
          * Draw frogger in starting position            * Draw frogger in starting position 
Line 742  void drawGameScreen( void ) { Line 759  void drawGameScreen( void ) {
         /*          /*
          * Update and draw everthing else           * Update and draw everthing else
          */           */
           checkFly( );
           checkGator( );
         drawImage( background, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, screen, 0, 0, 255 );          drawImage( background, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, screen, 0, 0, 255 );
         drawScore( 0, score );          drawScore( 0, score );
         drawScore( 1, hScore );          drawScore( 1, hScore );
Line 753  void drawGameScreen( void ) { Line 772  void drawGameScreen( void ) {
         drawVehicles( );          drawVehicles( );
   
         if ( frogger.alive == FALSE ) {          if ( frogger.alive == FALSE ) {
                   frogger.riding = FALSE;
                 if ( ! drawDeathSequence( frogger.deathType ) ) {                  if ( ! drawDeathSequence( frogger.deathType ) ) {
                         lives--;                          lives--;
                         if ( lives < 0 ) { drawGameOver( ); }                          if ( lives < 0 ) { drawGameOver( ); }
Line 791  int getRowPixel ( int row ) { Line 811  int getRowPixel ( int row ) {
 }  }
   
 /*  /*
    * Check our fly timers to determine if we need to display or
    * remove a fly from the goal area
    */
   void checkFly ( void ) {
           int i;
   
           for ( i = 0; i < MAX_GOALS; i++ ) {
                   if ( goals[i].fly ) {
                           goals[i].fly++;
                           if ( goals[i].fly > FLY_MAX_TIME ) {
                                   goals[i].fly = 0;
                                   flyTimer = 0;
                           }
   
                           return;
                   }
           }
   
           flyTimer++;
   
           if ( flyTimer > ( FLY_MAX_TIME ) ) {
                   int randGoal = ( ( int ) timeLeft % 10 );
                   if ( ( goals[randGoal].gator == 0 ) &&
                        ( goals[randGoal].occupied == 0 ) )  {
                           printf( "Displaying fly in goal %i\n", randGoal );
                           goals[randGoal].fly = 1;
                   }
           }
   
           return;
   }
   
   /*
    * Check our gator timers.  Similiar to fly timers above, however, the gator
    * has an extra stage as it enters in to the goal area.
    */
   void checkGator ( void ) {
           int i;
   
           for( i = 0; i < MAX_GOALS; i++ ) {
                   if ( goals[i].gator ) {
                           goals[i].gator++;
                           if ( goals[i].gator > GATOR_MAX_TIME ) {
                                   goals[i].gator = 0;
                                   gatorTimer = 0;
                           }       
           
                           return;
                   }
           }
   
           gatorTimer++;
   
           if ( gatorTimer > GATOR_MAX_TIME ) {
                   int randGoal = ( ( int ) ( timeLeft * 2 ) % 10 );
                   if ( ( goals[randGoal].fly == 0 ) &&
                        ( goals[randGoal].occupied == 0 ) )  {
                           printf( "Displaying gator in goal %i\n", randGoal );
                           goals[randGoal].gator = 1;
                   }       
           }
   
           return;
   }
   
   /*
  * This does collision detection based on the row frogger   * This does collision detection based on the row frogger
  * is in to help reduce overhead    * is in to help reduce overhead 
  */   */
Line 847  int collisionRow ( void ) { Line 933  int collisionRow ( void ) {
                         if ( collideFrogger( goals[i].x, goals[i].y, goals[i].w, goals[i].h ) ) {                          if ( collideFrogger( goals[i].x, goals[i].y, goals[i].w, goals[i].h ) ) {
                                 if ( goals[i].occupied ) return 1;                                  if ( goals[i].occupied ) return 1;
                                 goals[i].occupied++;                                  goals[i].occupied++;
                                   if ( goals[i].fly ) {
                                           goals[i].fly = 0;
                                           flyTimer = 0;
                                           score += SCORE_FLY;
                                   }
                                 /* playSound( s_goal ); */                                  /* playSound( s_goal ); */
                                 score += SCORE_GOAL;                                  score += SCORE_GOAL;
                                 score += ( ( int ) ( timeLeft / 10 ) ) * 10;                                  score += ( ( int ) ( timeLeft / 10 ) ) * 10;
Line 1186  void drawNumbers( int num, int x, int y Line 1277  void drawNumbers( int num, int x, int y
 void drawGoals( void ) {  void drawGoals( void ) {
         int drawDebugRect = 0;          int drawDebugRect = 0;
         int i;          int i;
           
         for ( i = 0; i < MAX_GOALS; i++ ) {          for ( i = 0; i < MAX_GOALS; i++ ) {
                 if ( drawDebugRect ) {                  if ( drawDebugRect ) {
                         SDL_Rect d;                          SDL_Rect d;
Line 1201  void drawGoals( void ) { Line 1292  void drawGoals( void ) {
                 if ( goals[i].occupied )                   if ( goals[i].occupied ) 
                         drawImage( gfx, FRAME * 15, 0, FRAME, FRAME,                           drawImage( gfx, FRAME * 15, 0, FRAME, FRAME, 
                                    screen, goals[i].x + 13, goals[i].y + 5, 255 );                                     screen, goals[i].x + 13, goals[i].y + 5, 255 );
                   if( goals[i].fly ) {
                           drawImage( gfx, FRAME * 16, 0, FRAME, FRAME, 
                                      screen, goals[i].x + 13, goals[i].y + 5, 255 );
                   }
                   if( goals[i].gator ) {
                           int frame = 17;
   
                           if ( goals[i].gator > ( ( int ) GATOR_MAX_TIME / 2 ) )
                                   frame++;
                           
                           drawImage( gfx, FRAME * frame, 0, FRAME, FRAME, 
                                      screen, goals[i].x + 13, goals[i].y + 5, 255 );
                   }               
         }          }
 }  }
   

Removed from v.1.1  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>