Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of el17dg by
game/gameovermanager.h@33:c623c6d5ed16, 2019-04-29 (annotated)
- Committer:
- Noximilien
- Date:
- Mon Apr 29 08:10:52 2019 +0000
- Revision:
- 33:c623c6d5ed16
- Child:
- 34:754915ce9de5
Have started working on boss mode. Changed the structure of game.cpp to finite state machine. Moved Game Over to a separate class. slightlight changed the player class. changed geometry into collision library. Cleaned the code to be under 20 lines.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Noximilien | 33:c623c6d5ed16 | 1 | #ifndef GAMEOVERMANAGER_H |
Noximilien | 33:c623c6d5ed16 | 2 | #define GAMEOVERMANAGER_H |
Noximilien | 33:c623c6d5ed16 | 3 | |
Noximilien | 33:c623c6d5ed16 | 4 | #include "main.h" |
Noximilien | 33:c623c6d5ed16 | 5 | |
Noximilien | 33:c623c6d5ed16 | 6 | class GameOverManager { |
Noximilien | 33:c623c6d5ed16 | 7 | public: |
Noximilien | 33:c623c6d5ed16 | 8 | GameOverManager() { reset(); } |
Noximilien | 33:c623c6d5ed16 | 9 | |
Noximilien | 33:c623c6d5ed16 | 10 | void reset() { started = false; } |
Noximilien | 33:c623c6d5ed16 | 11 | |
Noximilien | 33:c623c6d5ed16 | 12 | void updateAndDraw() { |
Noximilien | 33:c623c6d5ed16 | 13 | if (!started) { |
Noximilien | 33:c623c6d5ed16 | 14 | startAnimation(); |
Noximilien | 33:c623c6d5ed16 | 15 | } |
Noximilien | 33:c623c6d5ed16 | 16 | |
Noximilien | 33:c623c6d5ed16 | 17 | if (animation_counter < animation_length) { |
Noximilien | 33:c623c6d5ed16 | 18 | if (gamepad.check_event(gamepad.START_PRESSED)) { |
Noximilien | 33:c623c6d5ed16 | 19 | gameOverLogo.pos.x = game_area_x - 29 + 42; |
Noximilien | 33:c623c6d5ed16 | 20 | youDied.pos.x = game_area_width - 42; |
Noximilien | 33:c623c6d5ed16 | 21 | } else { |
Noximilien | 33:c623c6d5ed16 | 22 | animation_counter++; |
Noximilien | 33:c623c6d5ed16 | 23 | gameOverLogo.pos.x += 1; |
Noximilien | 33:c623c6d5ed16 | 24 | youDied.pos.x -= 1; |
Noximilien | 33:c623c6d5ed16 | 25 | } |
Noximilien | 33:c623c6d5ed16 | 26 | } |
Noximilien | 33:c623c6d5ed16 | 27 | drawSprite(gameOverLogo.pos, game_over_sprite); |
Noximilien | 33:c623c6d5ed16 | 28 | drawSprite(youDied.pos, you_died_sprite); |
Noximilien | 33:c623c6d5ed16 | 29 | |
Noximilien | 33:c623c6d5ed16 | 30 | char buffer[32]; |
Noximilien | 33:c623c6d5ed16 | 31 | sprintf(buffer,"Your Score %i", GameGlobals::game_score); |
Noximilien | 33:c623c6d5ed16 | 32 | lcd.printString(buffer,0,3); |
Noximilien | 33:c623c6d5ed16 | 33 | lcd.printString("Press Y",0,4); |
Noximilien | 33:c623c6d5ed16 | 34 | lcd.printString("to restart",0,5); |
Noximilien | 33:c623c6d5ed16 | 35 | |
Noximilien | 33:c623c6d5ed16 | 36 | musicGameOver(); |
Noximilien | 33:c623c6d5ed16 | 37 | ledsGameOver(); |
Noximilien | 33:c623c6d5ed16 | 38 | } |
Noximilien | 33:c623c6d5ed16 | 39 | |
Noximilien | 33:c623c6d5ed16 | 40 | bool isPlayingAnimation() { |
Noximilien | 33:c623c6d5ed16 | 41 | return animation_counter < animation_length; |
Noximilien | 33:c623c6d5ed16 | 42 | }; |
Noximilien | 33:c623c6d5ed16 | 43 | |
Noximilien | 33:c623c6d5ed16 | 44 | private: |
Noximilien | 33:c623c6d5ed16 | 45 | void startAnimation() { |
Noximilien | 33:c623c6d5ed16 | 46 | started = true; |
Noximilien | 33:c623c6d5ed16 | 47 | gameOverLogo.pos.x = game_area_x - 29; // 0 - the sprite length |
Noximilien | 33:c623c6d5ed16 | 48 | gameOverLogo.pos.y = game_area_y; |
Noximilien | 33:c623c6d5ed16 | 49 | youDied.pos.x = game_area_width; |
Noximilien | 33:c623c6d5ed16 | 50 | youDied.pos.y = game_area_y; |
Noximilien | 33:c623c6d5ed16 | 51 | animation_counter = 0; |
Noximilien | 33:c623c6d5ed16 | 52 | led_state = false; |
Noximilien | 33:c623c6d5ed16 | 53 | low_frequency_music_counter = 0; |
Noximilien | 33:c623c6d5ed16 | 54 | high_frequency_music_counter = 0; |
Noximilien | 33:c623c6d5ed16 | 55 | } |
Noximilien | 33:c623c6d5ed16 | 56 | |
Noximilien | 33:c623c6d5ed16 | 57 | void ledsGameOver(){ |
Noximilien | 33:c623c6d5ed16 | 58 | gamepad.led(1,(float)led_state); |
Noximilien | 33:c623c6d5ed16 | 59 | gamepad.led(2,(float)!led_state); |
Noximilien | 33:c623c6d5ed16 | 60 | gamepad.led(3,(float)led_state); |
Noximilien | 33:c623c6d5ed16 | 61 | gamepad.led(4,(float)!led_state); |
Noximilien | 33:c623c6d5ed16 | 62 | gamepad.led(5,(float)led_state); |
Noximilien | 33:c623c6d5ed16 | 63 | gamepad.led(6,(float)!led_state); |
Noximilien | 33:c623c6d5ed16 | 64 | led_state = !led_state; |
Noximilien | 33:c623c6d5ed16 | 65 | } |
Noximilien | 33:c623c6d5ed16 | 66 | |
Noximilien | 33:c623c6d5ed16 | 67 | void musicGameOver(){ |
Noximilien | 33:c623c6d5ed16 | 68 | lowFrequencyPartMusic(); |
Noximilien | 33:c623c6d5ed16 | 69 | highFrequencyPartMusic(); |
Noximilien | 33:c623c6d5ed16 | 70 | high_frequency_music_counter++; |
Noximilien | 33:c623c6d5ed16 | 71 | low_frequency_music_counter++;//comment out this for epic game over beat. |
Noximilien | 33:c623c6d5ed16 | 72 | //printf("Low frequency counter value:: %i\n", low_frequency_music_counter); |
Noximilien | 33:c623c6d5ed16 | 73 | //printf("high frequency counter value:: %i\n", high_frequency_music_counter); |
Noximilien | 33:c623c6d5ed16 | 74 | } |
Noximilien | 33:c623c6d5ed16 | 75 | |
Noximilien | 33:c623c6d5ed16 | 76 | void lowFrequencyPartMusic(){ |
Noximilien | 33:c623c6d5ed16 | 77 | // Low frequency |
Noximilien | 33:c623c6d5ed16 | 78 | if (low_frequency_music_counter == 0){ gamepad.tone(60,3);} |
Noximilien | 33:c623c6d5ed16 | 79 | else if (low_frequency_music_counter == 3){gamepad.tone(90,3);} |
Noximilien | 33:c623c6d5ed16 | 80 | else if (low_frequency_music_counter == 6){gamepad.tone(60,3);} |
Noximilien | 33:c623c6d5ed16 | 81 | else if (low_frequency_music_counter == 9){gamepad.tone(80,3);} |
Noximilien | 33:c623c6d5ed16 | 82 | else if (low_frequency_music_counter == 12){gamepad.tone(70,2);} |
Noximilien | 33:c623c6d5ed16 | 83 | else if (low_frequency_music_counter == 14){gamepad.tone(60,2);} |
Noximilien | 33:c623c6d5ed16 | 84 | else if (low_frequency_music_counter == 16){gamepad.tone(70,3);} |
Noximilien | 33:c623c6d5ed16 | 85 | else if (low_frequency_music_counter == 19){gamepad.tone(50,1);} |
Noximilien | 33:c623c6d5ed16 | 86 | else if (low_frequency_music_counter == 20){gamepad.tone(40,3);} |
Noximilien | 33:c623c6d5ed16 | 87 | else if (low_frequency_music_counter== 23){ |
Noximilien | 33:c623c6d5ed16 | 88 | gamepad.tone(60,2); |
Noximilien | 33:c623c6d5ed16 | 89 | low_frequency_music_counter = 0; |
Noximilien | 33:c623c6d5ed16 | 90 | } |
Noximilien | 33:c623c6d5ed16 | 91 | } |
Noximilien | 33:c623c6d5ed16 | 92 | |
Noximilien | 33:c623c6d5ed16 | 93 | void highFrequencyPartMusic(){ |
Noximilien | 33:c623c6d5ed16 | 94 | // High frequency |
Noximilien | 33:c623c6d5ed16 | 95 | if ( high_frequency_music_counter == 0){ gamepad.tone(300,0.1);} |
Noximilien | 33:c623c6d5ed16 | 96 | else if (high_frequency_music_counter == 3){gamepad.tone(250,0.1);} |
Noximilien | 33:c623c6d5ed16 | 97 | else if (high_frequency_music_counter == 6){gamepad.tone(230,0.2);} |
Noximilien | 33:c623c6d5ed16 | 98 | else if (high_frequency_music_counter == 9){gamepad.tone(250,0.1);} |
Noximilien | 33:c623c6d5ed16 | 99 | else if ( high_frequency_music_counter == 12){gamepad.tone(250,0.2);} |
Noximilien | 33:c623c6d5ed16 | 100 | else if ( high_frequency_music_counter == 14){gamepad.tone(220,0.1);} |
Noximilien | 33:c623c6d5ed16 | 101 | else if ( high_frequency_music_counter == 16){gamepad.tone(210,0.3);} |
Noximilien | 33:c623c6d5ed16 | 102 | else if ( high_frequency_music_counter == 19){gamepad.tone(200,1);} |
Noximilien | 33:c623c6d5ed16 | 103 | else if ( high_frequency_music_counter == 21){gamepad.tone(250,1);} |
Noximilien | 33:c623c6d5ed16 | 104 | else if ( high_frequency_music_counter == 22){ |
Noximilien | 33:c623c6d5ed16 | 105 | gamepad.tone(200,1); |
Noximilien | 33:c623c6d5ed16 | 106 | high_frequency_music_counter = 0; |
Noximilien | 33:c623c6d5ed16 | 107 | } |
Noximilien | 33:c623c6d5ed16 | 108 | } |
Noximilien | 33:c623c6d5ed16 | 109 | |
Noximilien | 33:c623c6d5ed16 | 110 | bool started; |
Noximilien | 33:c623c6d5ed16 | 111 | static const int animation_length = 42; |
Noximilien | 33:c623c6d5ed16 | 112 | int animation_counter; |
Noximilien | 33:c623c6d5ed16 | 113 | GameObject gameOverLogo; |
Noximilien | 33:c623c6d5ed16 | 114 | GameObject youDied; |
Noximilien | 33:c623c6d5ed16 | 115 | bool led_state; |
Noximilien | 33:c623c6d5ed16 | 116 | int low_frequency_music_counter; |
Noximilien | 33:c623c6d5ed16 | 117 | int high_frequency_music_counter; |
Noximilien | 33:c623c6d5ed16 | 118 | }; |
Noximilien | 33:c623c6d5ed16 | 119 | |
Noximilien | 33:c623c6d5ed16 | 120 | #endif |