Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Helicopter - Main.cpp

Main.cpp

Caricato da: RiccardoG97
Scarica il programma completo

  1. // Inclusione delle classi create
  2. #include "Helicopter.h"
  3. #include "Wall.h"
  4.  
  5. // Inclusione di allegro
  6. #include "allegro.h"
  7.  
  8. // Variabili
  9. BITMAP *buf, *menuIniziale, *background, *scrolling;
  10. PALETTE colors;
  11. MIDI *music;
  12. FONT *metersFont;
  13. SAMPLE *newRecord;
  14. int xScroll = 0;
  15. int scrollSpeed = 3.5;
  16. double meters = 0;
  17. double record = 0;
  18. bool sound = false;
  19.  
  20. // Prototipi di funzione
  21. void doubleBuffering ( void );
  22. void backgroundScroll ( void );
  23. void makeMenu ( void );
  24.  
  25. void doubleBuffering ( void )
  26. {
  27.     vsync();
  28.     blit ( buf, screen, 0, 0, 0, 0, 700, 500 );
  29.     clear ( buf );
  30. }
  31.  
  32. void backgroundScroll ( void )
  33. {
  34.     xScroll += scrollSpeed;
  35.     blit ( scrolling, buf, xScroll, 0, 0, 0, 700, 500 );
  36.  
  37.     if ( xScroll >= 700 )
  38.         xScroll = 0;
  39. }
  40.  
  41. void makeMenu ( void )
  42. {
  43.     blit ( menuIniziale, buf, 0, 0, 0, 0, 700, 500 );
  44. }
  45.  
  46. int main ( void )
  47. {
  48.     allegro_init();
  49.     install_keyboard();
  50.     set_color_depth ( 32 );
  51.     set_palette ( colors );
  52.     set_gfx_mode ( GFX_AUTODETECT, 700, 500, 0, 0 );
  53.     install_sound ( DIGI_AUTODETECT, MIDI_AUTODETECT, 0 );
  54.     set_volume ( 200, 200 );
  55.     buf = create_bitmap ( 700, 500 );
  56.     clear ( buf );
  57.     scrolling = create_bitmap ( 1400, 500 );
  58.     clear ( scrolling );
  59.  
  60.     menuIniziale = load_bmp ( "MenuIniziale.bmp", colors );
  61.     background = load_bmp ( "Background.bmp", colors );
  62.     music = load_midi ( "Music.mid" );
  63.     metersFont = load_font ( "MetersFont.pcx", NULL, NULL );
  64.     newRecord = load_wav ( "OhYeah.wav" );
  65.  
  66.     play_midi ( music, TRUE );
  67.  
  68.     for ( int i = 0; i <= 1400; i += 700 )
  69.         blit ( background, scrolling, 0, 0, i, 0, 700, 500 );
  70.  
  71.     // Instanziamo gli oggetti
  72.     Helicopter helicopter;
  73.     Wall wall;
  74.  
  75.     while ( !key[KEY_ESC] )
  76.     {
  77.         helicopter.setY();
  78.         wall.setX();
  79.         meters = 0;
  80.         xScroll = 0;
  81.         scrollSpeed = 3.5;
  82.         sound = false;
  83.         while ( !key[KEY_ENTER] )
  84.         {
  85.             doubleBuffering();
  86.             makeMenu();
  87.             textprintf ( buf, metersFont, 500, 150, makecol ( 0, 255, 0 ), "%i", static_cast<int>( record ) );
  88.             if ( key[KEY_ESC] )
  89.                 return EXIT_SUCCESS;
  90.         }
  91.  
  92.         while ( !key[KEY_ESC] )
  93.         {
  94.             doubleBuffering();
  95.             backgroundScroll();
  96.             helicopter.makeHelicopter ( buf );
  97.             helicopter.moveHelicopter();
  98.             wall.makeWall ( buf );
  99.             wall.moveWall ( scrollSpeed );
  100.  
  101.             // Aumento delle velocità
  102.             if ( static_cast<int> ( meters ) % 100 == 0 )
  103.             {
  104.                 scrollSpeed += 2.5;
  105.                 meters += 1;
  106.             }
  107.  
  108.             //Aumento dei metri
  109.             meters = meters + ( 0.1 * ( scrollSpeed * 0.1 ) );
  110.  
  111.             //Output che indica la distanza percorsa
  112.             textprintf ( buf, metersFont, 0, 0, makecol ( 0, 255, 0 ), "%i", static_cast<int>( meters ) );
  113.  
  114.             //Collisione fra Elicottero e Wall
  115.             if ( ( ( wall.getX() <= 197 ) && ( ( wall.getX() + 34 ) >= 110 ) ) && ( wall.getY() <= ( helicopter.getY() + 40 ) && ( ( wall.getY() + 106 ) >= helicopter.getY() ) ) )
  116.             {
  117.                 if ( meters > record )
  118.                     record = meters;
  119.                 break;
  120.             }
  121.  
  122.             if ( helicopter.getY() < 65 )
  123.             {
  124.                 if ( meters > record )
  125.                     record = meters;
  126.                 break;
  127.             }
  128.  
  129.             if ( helicopter.getY() > 405 )
  130.             {
  131.                 if ( meters > record )
  132.                     record = meters;
  133.                 break;
  134.             }
  135.  
  136.             if ( meters > record && sound == false )
  137.             {
  138.                 play_sample ( newRecord, 255, 128, 1000, FALSE );
  139.                 sound = true;
  140.             }
  141.  
  142.             if ( record + 15 > meters && sound == true )
  143.                     textprintf ( buf, metersFont, 300, 0, makecol ( 0, 255, 0 ), "NEW RECORD!" );
  144.         }
  145.     }
  146.     destroy_bitmap ( buf );
  147.     destroy_bitmap ( menuIniziale );
  148.     destroy_bitmap ( scrolling );
  149.     destroy_bitmap ( background );
  150.  
  151.     return EXIT_SUCCESS;
  152. }
  153. END_OF_MAIN();