Initial publish
Dependencies: mbed
Fork of el17dg by
game/hud.h@30:d454d0cb72bc, 2019-04-16 (annotated)
- Committer:
- Noximilien
- Date:
- Tue Apr 16 21:16:33 2019 +0000
- Revision:
- 30:d454d0cb72bc
- Parent:
- 29:579e00b7f118
- Child:
- 31:becb8f6bf7b7
Hace modified some comments. Have added a feature of a force shield. Updated the tutorial, Have finished the settings mode.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Noximilien | 21:0eb394495b8a | 1 | #ifndef HUD_H |
Noximilien | 21:0eb394495b8a | 2 | #define HUD_H |
Noximilien | 21:0eb394495b8a | 3 | |
Noximilien | 26:676874c42883 | 4 | #include "game.h" |
Noximilien | 21:0eb394495b8a | 5 | |
Noximilien | 29:579e00b7f118 | 6 | /**Hud Class |
Noximilien | 29:579e00b7f118 | 7 | * @brief A library for describing the player's heads up display(hud). |
Noximilien | 29:579e00b7f118 | 8 | * @author Dmitrijs Griskovs |
Noximilien | 29:579e00b7f118 | 9 | * @date 15/04/2019 |
Noximilien | 29:579e00b7f118 | 10 | */ |
Noximilien | 26:676874c42883 | 11 | class Hud { |
Noximilien | 27:f05f4e738ba9 | 12 | |
Noximilien | 26:676874c42883 | 13 | public: |
Noximilien | 29:579e00b7f118 | 14 | /** @brief Draws an in-game score on the screen during the gameplay. */ |
Noximilien | 27:f05f4e738ba9 | 15 | void drawScore(){ |
Noximilien | 26:676874c42883 | 16 | char buffer[16]; |
Noximilien | 26:676874c42883 | 17 | sprintf(buffer," Score: %i",game_score); |
Noximilien | 26:676874c42883 | 18 | lcd.printString(buffer,0,0); |
Noximilien | 26:676874c42883 | 19 | } |
Noximilien | 29:579e00b7f118 | 20 | /**@brief Displays the highest score reached in the main menu. */ |
Noximilien | 28:35af3843de8f | 21 | void drawHighScore(){ |
Noximilien | 27:f05f4e738ba9 | 22 | if (high_score < game_score){ |
Noximilien | 27:f05f4e738ba9 | 23 | high_score = game_score; |
Noximilien | 27:f05f4e738ba9 | 24 | } |
Noximilien | 28:35af3843de8f | 25 | char buffer[16]; |
Noximilien | 28:35af3843de8f | 26 | sprintf(buffer,"High Score %i",high_score); |
Noximilien | 28:35af3843de8f | 27 | lcd.printString(buffer,0,0); |
Noximilien | 28:35af3843de8f | 28 | } |
Noximilien | 27:f05f4e738ba9 | 29 | |
Noximilien | 30:d454d0cb72bc | 30 | /** @brief Mointors, updates and shows the player's lives. |
Noximilien | 29:579e00b7f118 | 31 | * @details Checks the palyer's life value and lights the LEDs on/off accordingly to |
Noximilien | 29:579e00b7f118 | 32 | * how many lifes are left. green = 3, yellow = 2 and red = 1. |
Noximilien | 29:579e00b7f118 | 33 | */ |
Noximilien | 27:f05f4e738ba9 | 34 | void displayLifes(){ |
Noximilien | 27:f05f4e738ba9 | 35 | //printf("displayLifes:: %i\n", player_lifes); |
Noximilien | 27:f05f4e738ba9 | 36 | if (player_lifes == 3){ |
Noximilien | 28:35af3843de8f | 37 | playerHasThreeLives(); |
Noximilien | 27:f05f4e738ba9 | 38 | } |
Noximilien | 27:f05f4e738ba9 | 39 | else if (player_lifes == 2){ |
Noximilien | 28:35af3843de8f | 40 | playerHasTwoLives(); |
Noximilien | 27:f05f4e738ba9 | 41 | } |
Noximilien | 27:f05f4e738ba9 | 42 | else if (player_lifes == 1){ |
Noximilien | 28:35af3843de8f | 43 | playerHasOneLife(); |
Noximilien | 27:f05f4e738ba9 | 44 | } |
Noximilien | 27:f05f4e738ba9 | 45 | else { |
Noximilien | 27:f05f4e738ba9 | 46 | // all LEDs are flashing |
Noximilien | 27:f05f4e738ba9 | 47 | gamepad.leds_off(); |
Noximilien | 27:f05f4e738ba9 | 48 | } |
Noximilien | 26:676874c42883 | 49 | } |
Noximilien | 28:35af3843de8f | 50 | private: |
Noximilien | 28:35af3843de8f | 51 | void playerHasThreeLives(){ |
Noximilien | 28:35af3843de8f | 52 | //turn all LEDs on |
Noximilien | 28:35af3843de8f | 53 | gamepad.leds_on(); |
Noximilien | 28:35af3843de8f | 54 | |
Noximilien | 28:35af3843de8f | 55 | } |
Noximilien | 28:35af3843de8f | 56 | void playerHasTwoLives(){ |
Noximilien | 28:35af3843de8f | 57 | // only yelow and red are lit (total 4) |
Noximilien | 28:35af3843de8f | 58 | gamepad.led(6,0.0); |
Noximilien | 28:35af3843de8f | 59 | gamepad.led(3,0.0); |
Noximilien | 28:35af3843de8f | 60 | |
Noximilien | 28:35af3843de8f | 61 | } |
Noximilien | 28:35af3843de8f | 62 | void playerHasOneLife(){ |
Noximilien | 28:35af3843de8f | 63 | // red LED is lit and flashes. |
Noximilien | 28:35af3843de8f | 64 | gamepad.led(2,0.0); |
Noximilien | 28:35af3843de8f | 65 | gamepad.led(5,0.0); |
Noximilien | 28:35af3843de8f | 66 | gamepad.led(6,0.0); |
Noximilien | 28:35af3843de8f | 67 | if (red_led_flashing == 5){ |
Noximilien | 28:35af3843de8f | 68 | gamepad.led(1,(float)red_led_state); |
Noximilien | 28:35af3843de8f | 69 | gamepad.led(4,(float)red_led_state); |
Noximilien | 28:35af3843de8f | 70 | gamepad.led(1,(float)!red_led_state); |
Noximilien | 28:35af3843de8f | 71 | gamepad.led(4,(float)!red_led_state); |
Noximilien | 28:35af3843de8f | 72 | red_led_flashing = 0; |
Noximilien | 28:35af3843de8f | 73 | red_led_state = !red_led_state; |
Noximilien | 28:35af3843de8f | 74 | } |
Noximilien | 28:35af3843de8f | 75 | red_led_flashing += 1; |
Noximilien | 28:35af3843de8f | 76 | } |
Noximilien | 26:676874c42883 | 77 | }; |
Noximilien | 21:0eb394495b8a | 78 | |
Noximilien | 21:0eb394495b8a | 79 | #endif |