All pastes #810485 Raw Edit

Stuff

public text v1 · immutable
·published 2007-12-10 00:01 UTC
rendered paste body
#include "datafile.h"
#include "allegro.h"

long timer = 1000;
void increment_timer()
{
     timer++;
}


long speed = 0;
void increment_speed()
{
      speed++;
}

long rail = 0;
void increment_rail()
{
      rail++;
}

long treeup = 0;
void increment_treeup()
{
      treeup++;
}

long treetimers = 0;
void increment_treetimers()
{
     treetimers++;
}

int main()
{
allegro_init();
install_keyboard();
install_timer();
install_int_ex(increment_timer,MSEC_TO_TIMER(1));
install_int_ex(increment_speed,MSEC_TO_TIMER(1));
install_int_ex(increment_rail,MSEC_TO_TIMER(1));
install_int_ex(increment_treeup,MSEC_TO_TIMER(1));
install_int_ex(increment_treetimers,BPS_TO_TIMER(60));

srand(time(0));

set_color_depth(16);
set_gfx_mode(GFX_AUTODETECT_FULLSCREEN,800,600,0,0);

BITMAP *buffer = create_bitmap(800,600);
FONT *font = load_font("unifont.dat",NULL,NULL);

if(buffer == NULL)
{
          set_gfx_mode(GFX_TEXT,0,0,0,0);
          allegro_message("Couldn't create buffer!");
          exit(EXIT_FAILURE);
}

DATAFILE *sprites = NULL;
sprites = load_datafile("sprites.dat");
if(sprites == NULL)
{
           set_gfx_mode(GFX_TEXT,0,0,0,0);
           allegro_message("Couldn't load sprites.dat!");
           exit(EXIT_FAILURE);
}

bool on = true;
bool gameison = true;
bool menu = true;
bool paused = false;
int skiier_x = (400 - 60);
int skiier_y = 50;
int dotposition = 1;
int instructions = false;
int tree1x = 0;
int tree1y = 600;
int tree2x = 0;
int tree2y = 600;
int tree3x = 0;
int tree3y = 600;
int tree4x = 0;
int tree4y = 600;
int tree1random = 0;
int tree2random = 0;
int tree3random = 0;
int tree4random = 0;
int x = 0;

while(on == true)
{
while(menu == true)
{
               
               if(timer > 50000)
               {
                        timer = 200;
               }

               if(key[KEY_E])
               {
                     gameison = false;
                     menu = false;
                     on = false;
                     break;
               }
               //menu logic starts here
               if(instructions == false)
               {
               if(key[KEY_UP] && !key[KEY_DOWN] && timer >= 200)
               {
                     dotposition--;
                     timer = 1;
               }
               else if(key[KEY_DOWN] && !key[KEY_UP] && timer >= 200)
               {
                     dotposition++;
                     timer = 1;
               }

               if(dotposition <= 0)
               {
                     dotposition = 3;
               }
               if(dotposition >= 4)
               {
                     dotposition = 1;
               }
               if(key[KEY_ENTER])
               {
                       if(dotposition == 1)
                       {
                            menu = false;
                            gameison = true;
                            break;
                       }
                       if(dotposition == 2)
                       {
                            instructions = true;
                       }
                       if(dotposition == 3)
                       {
                            gameison = false;
                            menu = false;
                            on = false;
                            break;
                       }
               }

               //menu drawing here

                              if(dotposition == 1)
                              {
                                       draw_sprite(buffer,(BITMAP*)sprites[dot].dat,250,110);
                              }
                              else if(dotposition == 2)
                              {
                                       draw_sprite(buffer,(BITMAP*)sprites[dot].dat,250,210);
                              }
                              else if(dotposition == 3)
                              {
                                      draw_sprite(buffer,(BITMAP*)sprites[dot].dat,250,310);
                              }

                              textprintf_ex(buffer,font,300,100,makecol(255,255,255),-1,"Start game",NULL);
                              textprintf_ex(buffer,font,300,200,makecol(255,255,255),-1,"Instructions",NULL);
                              textprintf_ex(buffer,font,300,300,makecol(255,255,255),-1,"Quit",NULL);
                              
               }

               if(instructions == true && timer >= 200)
               {

                               if(key[KEY_ESC] && timer >= 200)
                               {
                                     instructions = false;
                                     menu = true;
                                     timer = 1;
                               }
                               textprintf_ex(buffer,font,290,50,makecol(255,255,255),-1,"This is you :");
                               draw_sprite(buffer,(BITMAP*)sprites[ski_1].dat,450,50);
                               textprintf_ex(buffer,font,290,200,makecol(255,255,255),-1,"This is a tree :");
                               draw_sprite(buffer,(BITMAP*)sprites[tree_1].dat,470,190);
                               textprintf_ex(buffer,font,290,310,makecol(255,255,255),-1,"Don't hit the trees!");
                               textprintf_ex(buffer,font,150,345,makecol(255,255,255),-1,"Use the left and right arrows keys to move.");
                               textprintf_ex(buffer,font,265,380,makecol(255,255,255),-1,"Push P to pause the game.");
                               textprintf_ex(buffer,font,100,415,makecol(255,255,255),-1,"Push escape to go back to the menu during the game.");
                               textprintf_ex(buffer,font,245,450,makecol(255,255,255),-1,"Push escape to exit this screen.");

               }

               blit(buffer,screen,0,0,0,0,800,600);
               clear_bitmap(buffer);
}
//end of menu loop

/////////////////////////////////////////////////

rail = 0;
treetimers = 0;
tree1y = 600;
tree2y = 600;
tree3y = 600;
tree4y = 600;

//start of main game loop
while(gameison == true)
{
    
    while(skiier_y + 29 == tree1y + 40 && (skiier_x + 29 > tree1x + 30 && skiier_x + 29 < tree1x + 70))
    {
          draw_sprite(buffer,(BITMAP*)sprites[white].dat,0,0);
    if(rail >= 299)
    {
    draw_sprite(buffer,(BITMAP*)sprites[rail_red2].dat,0,0);
    draw_sprite(buffer,(BITMAP*)sprites[rail_red].dat,760,0);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow2].dat,0,128);
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow].dat,760,128);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_red2].dat,0,256);
    draw_sprite(buffer,(BITMAP*)sprites[rail_red].dat,760,256);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow2].dat,0,384);
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow].dat,760,384);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_red2].dat,0,512);
    draw_sprite(buffer,(BITMAP*)sprites[rail_red].dat,760,512);
    }
    else
    {
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow2].dat,0,0);
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow].dat,760,0);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_red2].dat,0,128);
    draw_sprite(buffer,(BITMAP*)sprites[rail_red].dat,760,128);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow2].dat,0,256);
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow].dat,760,256);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_red2].dat,0,384);
    draw_sprite(buffer,(BITMAP*)sprites[rail_red].dat,760,384);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow2].dat,0,512);
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow].dat,760,512);
    }
          draw_sprite(buffer,(BITMAP*)sprites[ski_1].dat,skiier_x,skiier_y);
          draw_sprite(buffer,(BITMAP*)sprites[tree_1].dat,tree1x,tree1y);
          draw_sprite(buffer,(BITMAP*)sprites[tree_2].dat,tree2x,tree2y);
          draw_sprite(buffer,(BITMAP*)sprites[tree_3].dat,tree3x,tree3y);
          draw_sprite(buffer,(BITMAP*)sprites[tree_2].dat,tree4x,tree4y);
          textprintf_ex(buffer,font,120,300,makecol(0,0,0),-1,"GAME OVER! Push esc to go back to the menu.");
          blit(buffer,screen,0,0,0,0,800,600);
          clear_bitmap(buffer);
          if(key[KEY_ESC])
          {
                menu = true;
                gameison = false;
                break;
          }
          
    }
    
    if(gameison == false)
    {
          break;
    }      
    
    if(key[KEY_P] && timer >= 200)
    {
          paused = true;
          timer = 1;
          while(paused == true)
          {
                clear_bitmap(buffer);
                textprintf_ex(buffer,font,330,280,makecol(255,255,255),-1,"PAUSED");
                blit(buffer,screen,0,0,0,0,800,600);
                if(key[KEY_P] && timer > 300)
                {
                     timer = 0;
                     paused = false;
                     break;
                }
          }
    }

    if(key[KEY_ESC])
    {
          menu = true;
          gameison = false;
    }

    if(key[KEY_E])
    {
          gameison = false;
          paused = false;
          menu = false;
          on = false;
    }
    
    
    if(key[KEY_LEFT] && !key[KEY_RIGHT] && speed >= 13)
    {
          skiier_x -= 2;
          speed = 0;
    }
    
    if(key[KEY_RIGHT] && !key[KEY_LEFT] && speed >= 13)
    {
          skiier_x += 2;
          speed = 0;
    }
    
    if(skiier_x <= 39)
    {
         skiier_x = 40;
    }
    else if(skiier_x >= 706)
    {
         skiier_x = 705;
    }

    //game drawing start
    
    draw_sprite(buffer,(BITMAP*)sprites[white].dat,0,0);
    if(rail >= 299)
    {
    draw_sprite(buffer,(BITMAP*)sprites[rail_red2].dat,0,0);
    draw_sprite(buffer,(BITMAP*)sprites[rail_red].dat,760,0);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow2].dat,0,128);
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow].dat,760,128);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_red2].dat,0,256);
    draw_sprite(buffer,(BITMAP*)sprites[rail_red].dat,760,256);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow2].dat,0,384);
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow].dat,760,384);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_red2].dat,0,512);
    draw_sprite(buffer,(BITMAP*)sprites[rail_red].dat,760,512);
    }
    else
    {
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow2].dat,0,0);
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow].dat,760,0);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_red2].dat,0,128);
    draw_sprite(buffer,(BITMAP*)sprites[rail_red].dat,760,128);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow2].dat,0,256);
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow].dat,760,256);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_red2].dat,0,384);
    draw_sprite(buffer,(BITMAP*)sprites[rail_red].dat,760,384);
    
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow2].dat,0,512);
    draw_sprite(buffer,(BITMAP*)sprites[rail_yellow].dat,760,512);
    }
    
    
    if(key[KEY_LEFT] && !key[KEY_RIGHT] && skiier_x != 40)
    {
          draw_sprite(buffer,(BITMAP*)sprites[ski_left].dat,skiier_x,skiier_y);
    }
    else if(key[KEY_RIGHT] && !key[KEY_LEFT] && skiier_x != 705)
    {
          draw_sprite(buffer,(BITMAP*)sprites[ski_right].dat,skiier_x,skiier_y);
    }
    else if(skiier_x == 40 && key[KEY_LEFT] || skiier_x == 705 && key[KEY_RIGHT] || (key[KEY_LEFT] && key[KEY_RIGHT]))
    {
          draw_sprite(buffer,(BITMAP*)sprites[ski_1].dat,skiier_x,skiier_y);
    }
    else
    {
          draw_sprite(buffer,(BITMAP*)sprites[ski_1].dat,skiier_x,skiier_y);
    }
    //25 and 675 range for trees
    
    //x must be randomized. y needs to be bottom of screen.
    
    if(tree1random == 0)
          {
                tree1x = 25 + rand() % (676 - 25);
                tree1random++;
          }
    if(tree2random == 0)
          {
                tree2x = 25 + rand() % (676 - 25);
                tree2random++;
          }
    if(tree3random == 0)
          {
                tree3x = 25 + rand() % (676 - 25);
                tree3random++;
          }
    if(tree4random == 0)
          {
                tree4x = 25 + rand() % (676 - 25);
                tree4random++;
          }
    
    
          
    
    //2800ish to get to the top = 700 delay between trees
    
    
    
              if(treetimers > 0 && treeup >= 6)
              {
                    tree1y -= 1;
                    draw_sprite(buffer,(BITMAP*)sprites[tree_1].dat,tree1x,tree1y);
                    treeup = 0;
              }
              if(treetimers > 700 && treeup >= 6)
              {
                    tree2y -= 1;
                    draw_sprite(buffer,(BITMAP*)sprites[tree_2].dat,tree2x,tree2y);
                    treeup = 0;
              }
              if(treetimers > 1400 && treeup >= 6)
              {
                    tree3y -= 1;
                    draw_sprite(buffer,(BITMAP*)sprites[tree_3].dat,tree3x,tree3y);
                    treeup = 0;
              }
              if(treetimers > 2100 && treeup >= 6)
              {
                    tree4y -= 1;
                    draw_sprite(buffer,(BITMAP*)sprites[tree_2].dat,tree4x,tree4y);
                    treeup = 0;
              }
              if(treeup >= 8)
              {
                    treeup = 0;
              }
              
    
    /*draw_sprite(buffer,(BITMAP*)sprites[tree_1].dat,tree1x,tree1y);
    draw_sprite(buffer,(BITMAP*)sprites[tree_2].dat,tree2x,tree2y);
    draw_sprite(buffer,(BITMAP*)sprites[tree_3].dat,tree3x,tree3y);
    draw_sprite(buffer,(BITMAP*)sprites[tree_2].dat,tree4x,tree4y);
    */
    textprintf_ex(buffer,font,350,300,makecol(0,0,0),-1,"treeup: %d treetimers: %d",treeup,treetimers);

    blit(buffer,screen,0,0,0,0,800,600);
    clear_bitmap(buffer);
    
    if(rail >= 600)     
    {
          rail = 0;
    }



    if(tree1y + 100 == 0)
    {
          tree1y = 600;
          tree1random = 0;
    } 
    if(tree2y + 100 == 0)
    {
          tree2y = 600;
          tree2random = 0;
    } 
    if(tree3y + 100 == 0)
    {
          tree3y = 600;
          tree3random = 0;
    } 
    if(tree4y + 100 == 0)
    {
          tree4y = 600;
          tree4random = 0;
    } 
}
//end of game loop
}
destroy_bitmap(buffer);
destroy_font(font);
unload_datafile(sprites);
}
END_OF_MAIN()