Kaif Kutchwala 201267448 ELEC2645 Project

Dependencies:   mbed

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?

UserRevisionLine numberNew 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