
Kaif Kutchwala 201267448 ELEC2645 Project
Dependencies: mbed
Game/Game.h@25:467d8fd0fec4, 2020-05-25 (annotated)
- Committer:
- KaifK
- Date:
- Mon May 25 18:25:00 2020 +0000
- Revision:
- 25:467d8fd0fec4
- Parent:
- 21:d5b1160f349f
- Child:
- 29:532e5c371be4
code cleaned up
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
KaifK | 4:08a0ff6668df | 1 | #ifndef GAME_H |
KaifK | 4:08a0ff6668df | 2 | #define GAME_H |
KaifK | 4:08a0ff6668df | 3 | |
KaifK | 6:09a555c0d997 | 4 | #include <cmath> |
KaifK | 9:e6566d09f087 | 5 | #include <cstdlib> |
KaifK | 4:08a0ff6668df | 6 | #include "mbed.h" |
KaifK | 4:08a0ff6668df | 7 | #include "Gamepad.h" |
KaifK | 4:08a0ff6668df | 8 | #include "N5110.h" |
KaifK | 4:08a0ff6668df | 9 | #include "Ball.h" |
KaifK | 4:08a0ff6668df | 10 | #include "Splash.h" |
KaifK | 21:d5b1160f349f | 11 | #include "SDFileSystem.h" |
KaifK | 21:d5b1160f349f | 12 | #include "SDCRC.h" |
KaifK | 20:c697902b844f | 13 | #include "GoalSounds.h" |
KaifK | 4:08a0ff6668df | 14 | |
KaifK | 25:467d8fd0fec4 | 15 | /** Game class |
KaifK | 25:467d8fd0fec4 | 16 | @brief Class that controls how the game flows/functions. |
KaifK | 25:467d8fd0fec4 | 17 | @version 1.0 |
KaifK | 25:467d8fd0fec4 | 18 | @author Kaif Kutchwala |
KaifK | 25:467d8fd0fec4 | 19 | @date May 2020 |
KaifK | 25:467d8fd0fec4 | 20 | */ |
KaifK | 4:08a0ff6668df | 21 | |
KaifK | 4:08a0ff6668df | 22 | class Game { |
KaifK | 9:e6566d09f087 | 23 | private: |
KaifK | 25:467d8fd0fec4 | 24 | //objects |
KaifK | 25:467d8fd0fec4 | 25 | N5110 *_lcd; |
KaifK | 25:467d8fd0fec4 | 26 | Gamepad *_pad; |
KaifK | 25:467d8fd0fec4 | 27 | Ball *_ball; |
KaifK | 25:467d8fd0fec4 | 28 | |
KaifK | 4:08a0ff6668df | 29 | public: |
KaifK | 9:e6566d09f087 | 30 | Game(N5110 &lcd, Gamepad &pad, Ball &ball); |
KaifK | 4:08a0ff6668df | 31 | ~Game(); |
KaifK | 25:467d8fd0fec4 | 32 | /** @brief initialise variables, checks for initial highscore*/ |
KaifK | 25:467d8fd0fec4 | 33 | void init(); |
KaifK | 8:5ede90f99a27 | 34 | /** @brief combines all other functions to form main gameplay loop)*/ |
KaifK | 9:e6566d09f087 | 35 | void play(); |
KaifK | 6:09a555c0d997 | 36 | /** @brief reads values user inputs i.e. direction and power (x and y)*/ |
KaifK | 9:e6566d09f087 | 37 | void readInput(); |
KaifK | 6:09a555c0d997 | 38 | /** @brief updates score on screen*/ |
KaifK | 9:e6566d09f087 | 39 | void updateScore(); |
KaifK | 6:09a555c0d997 | 40 | /** @brief updates number of lives on leds */ |
KaifK | 9:e6566d09f087 | 41 | void updateLives(); |
KaifK | 9:e6566d09f087 | 42 | /** @brief updates speed based on score */ |
KaifK | 9:e6566d09f087 | 43 | void updateSpeed(); |
KaifK | 17:2fbe40177b9c | 44 | /** @brief updates speed based on score */ |
KaifK | 17:2fbe40177b9c | 45 | void updateLevel(); |
KaifK | 17:2fbe40177b9c | 46 | /** @brief updates all leds based on given value |
KaifK | 25:467d8fd0fec4 | 47 | * @param val @details array containing values to write to each led |
KaifK | 25:467d8fd0fec4 | 48 | */ |
KaifK | 25:467d8fd0fec4 | 49 | void updateLeds(int val[6]); |
KaifK | 25:467d8fd0fec4 | 50 | /** @brief plays sound effect for when new highscore is reached |
KaifK | 25:467d8fd0fec4 | 51 | * @param sound @details determines which sound to play (1-miss,2-goal, |
KaifK | 25:467d8fd0fec4 | 52 | * 3-game over, 4-extra life) |
KaifK | 25:467d8fd0fec4 | 53 | */ |
KaifK | 20:c697902b844f | 54 | void playGoalSound(int sound); |
KaifK | 25:467d8fd0fec4 | 55 | |
KaifK | 16:1f196a0e12be | 56 | //accessors and mutators |
KaifK | 25:467d8fd0fec4 | 57 | /** @brief sets highscore |
KaifK | 25:467d8fd0fec4 | 58 | * @param score @details integer value to be set as highscore |
KaifK | 25:467d8fd0fec4 | 59 | */ |
KaifK | 16:1f196a0e12be | 60 | void set_highscore(int score); |
KaifK | 25:467d8fd0fec4 | 61 | /** Gets highscore value |
KaifK | 25:467d8fd0fec4 | 62 | * @returns a positive integer value |
KaifK | 25:467d8fd0fec4 | 63 | */ |
KaifK | 16:1f196a0e12be | 64 | int get_highscore(); |
KaifK | 25:467d8fd0fec4 | 65 | |
KaifK | 4:08a0ff6668df | 66 | private: |
KaifK | 12:ca7329a41fc5 | 67 | //functions |
KaifK | 7:2a3b566aedd3 | 68 | /** @brief takes pointer input for aim on x-axis */ |
KaifK | 9:e6566d09f087 | 69 | void pointer_input(); |
KaifK | 25:467d8fd0fec4 | 70 | |
KaifK | 7:2a3b566aedd3 | 71 | /** @brief takes power input for aim on y-axis */ |
KaifK | 9:e6566d09f087 | 72 | void power_meter_input(); |
KaifK | 25:467d8fd0fec4 | 73 | |
KaifK | 7:2a3b566aedd3 | 74 | /** @brief converts _x_val from pointer range (8-72) to screen range (0-84) */ |
KaifK | 7:2a3b566aedd3 | 75 | void convert_to_shot_x(); |
KaifK | 25:467d8fd0fec4 | 76 | |
KaifK | 7:2a3b566aedd3 | 77 | /** @brief converts _y_val from power meter range (0-20) to goal range (0-24) */ |
KaifK | 7:2a3b566aedd3 | 78 | void convert_to_shot_y(); |
KaifK | 25:467d8fd0fec4 | 79 | |
KaifK | 9:e6566d09f087 | 80 | /** @brief generates random value for given limit |
KaifK | 25:467d8fd0fec4 | 81 | * @param limit @details sets max limit for random generator |
KaifK | 25:467d8fd0fec4 | 82 | * @returns random number in range 1-limit |
KaifK | 25:467d8fd0fec4 | 83 | */ |
KaifK | 9:e6566d09f087 | 84 | int random_level_gen(int limit); |
KaifK | 25:467d8fd0fec4 | 85 | /** @brief Prints "Goal" or "Miss" on screen based on input integer |
KaifK | 25:467d8fd0fec4 | 86 | * @param n @details tells function what message to print |
KaifK | 25:467d8fd0fec4 | 87 | * (0- Miss 1- Goal) |
KaifK | 25:467d8fd0fec4 | 88 | */ |
KaifK | 15:5bf3f951d337 | 89 | void print_goal_message(int n); |
KaifK | 25:467d8fd0fec4 | 90 | |
KaifK | 12:ca7329a41fc5 | 91 | //variables |
KaifK | 17:2fbe40177b9c | 92 | bool _is_goal; |
KaifK | 4:08a0ff6668df | 93 | int _score; |
KaifK | 16:1f196a0e12be | 94 | int _highscore; |
KaifK | 4:08a0ff6668df | 95 | int _lives; |
KaifK | 16:1f196a0e12be | 96 | int _new_lives_threshold; |
KaifK | 12:ca7329a41fc5 | 97 | int _level; |
KaifK | 9:e6566d09f087 | 98 | float _x_val; |
KaifK | 9:e6566d09f087 | 99 | float _y_val; |
KaifK | 7:2a3b566aedd3 | 100 | int _shot_x; |
KaifK | 7:2a3b566aedd3 | 101 | int _shot_y; |
KaifK | 9:e6566d09f087 | 102 | float _speed; |
KaifK | 16:1f196a0e12be | 103 | float _new_speed_threshold; |
KaifK | 25:467d8fd0fec4 | 104 | }; |
KaifK | 4:08a0ff6668df | 105 | #endif |