Kaif Kutchwala 201267448 ELEC2645 Project

Dependencies:   mbed

Committer:
KaifK
Date:
Mon May 25 00:55:38 2020 +0000
Revision:
21:d5b1160f349f
Parent:
20:c697902b844f
Child:
25:467d8fd0fec4
SFX added, high score is now saved on SD card, testing compiled.; Code needs to be cleaned up a bit and organised.

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 4:08a0ff6668df 15
KaifK 4:08a0ff6668df 16 class Game {
KaifK 9:e6566d09f087 17 private:
KaifK 9:e6566d09f087 18 //objects
KaifK 9:e6566d09f087 19 N5110 *_lcd;
KaifK 9:e6566d09f087 20 Gamepad *_pad;
KaifK 9:e6566d09f087 21 Ball *_ball;
KaifK 9:e6566d09f087 22
KaifK 4:08a0ff6668df 23 public:
KaifK 9:e6566d09f087 24 Game(N5110 &lcd, Gamepad &pad, Ball &ball);
KaifK 4:08a0ff6668df 25 ~Game();
KaifK 6:09a555c0d997 26 /** @brief initialise game values*/
KaifK 4:08a0ff6668df 27 void init();
KaifK 8:5ede90f99a27 28 /** @brief combines all other functions to form main gameplay loop)*/
KaifK 9:e6566d09f087 29 void play();
KaifK 6:09a555c0d997 30 /** @brief reads values user inputs i.e. direction and power (x and y)*/
KaifK 9:e6566d09f087 31 void readInput();
KaifK 6:09a555c0d997 32 /** @brief updates score on screen*/
KaifK 9:e6566d09f087 33 void updateScore();
KaifK 6:09a555c0d997 34 /** @brief updates number of lives on leds */
KaifK 9:e6566d09f087 35 void updateLives();
KaifK 9:e6566d09f087 36 /** @brief updates speed based on score */
KaifK 9:e6566d09f087 37 void updateSpeed();
KaifK 17:2fbe40177b9c 38 /** @brief updates speed based on score */
KaifK 17:2fbe40177b9c 39 void updateLevel();
KaifK 17:2fbe40177b9c 40 /** @brief updates all leds based on given value
KaifK 17:2fbe40177b9c 41 * @param val @details array containing values to write to each led
KaifK 17:2fbe40177b9c 42 */
KaifK 17:2fbe40177b9c 43 void updateLeds( int val[6]);
KaifK 20:c697902b844f 44 /** @brief plays sound effect for when new highscore is reached
KaifK 20:c697902b844f 45 * @param sound @details determines which sound to play (1-miss,2-goal,
KaifK 20:c697902b844f 46 * 3-game over)
KaifK 20:c697902b844f 47 */
KaifK 20:c697902b844f 48 void playGoalSound(int sound);
KaifK 12:ca7329a41fc5 49
KaifK 16:1f196a0e12be 50 //accessors and mutators
KaifK 16:1f196a0e12be 51 void set_highscore(int score);
KaifK 16:1f196a0e12be 52 int get_highscore();
KaifK 16:1f196a0e12be 53
KaifK 4:08a0ff6668df 54 private:
KaifK 12:ca7329a41fc5 55 //functions
KaifK 7:2a3b566aedd3 56 /** @brief takes pointer input for aim on x-axis */
KaifK 9:e6566d09f087 57 void pointer_input();
KaifK 7:2a3b566aedd3 58
KaifK 7:2a3b566aedd3 59 /** @brief takes power input for aim on y-axis */
KaifK 9:e6566d09f087 60 void power_meter_input();
KaifK 7:2a3b566aedd3 61
KaifK 7:2a3b566aedd3 62 /** @brief converts _x_val from pointer range (8-72) to screen range (0-84) */
KaifK 7:2a3b566aedd3 63 void convert_to_shot_x();
KaifK 7:2a3b566aedd3 64
KaifK 7:2a3b566aedd3 65 /** @brief converts _y_val from power meter range (0-20) to goal range (0-24) */
KaifK 7:2a3b566aedd3 66 void convert_to_shot_y();
KaifK 8:5ede90f99a27 67
KaifK 9:e6566d09f087 68 /** @brief generates random value for given limit
KaifK 9:e6566d09f087 69 * @param limit @details sets max limit for random generator
KaifK 9:e6566d09f087 70 */
KaifK 9:e6566d09f087 71 int random_level_gen(int limit);
KaifK 15:5bf3f951d337 72 /** @brief Prints "Goal" or "Miss" on screen based on input integer
KaifK 15:5bf3f951d337 73 * @param n @details 0- Miss 1- Goal
KaifK 15:5bf3f951d337 74 */
KaifK 15:5bf3f951d337 75 void print_goal_message(int n);
KaifK 20:c697902b844f 76
KaifK 12:ca7329a41fc5 77 //variables
KaifK 17:2fbe40177b9c 78 bool _is_goal;
KaifK 4:08a0ff6668df 79 int _score;
KaifK 16:1f196a0e12be 80 int _highscore;
KaifK 4:08a0ff6668df 81 int _lives;
KaifK 16:1f196a0e12be 82 int _new_lives_threshold;
KaifK 12:ca7329a41fc5 83 int _level;
KaifK 9:e6566d09f087 84 float _x_val;
KaifK 9:e6566d09f087 85 float _y_val;
KaifK 7:2a3b566aedd3 86 int _shot_x;
KaifK 7:2a3b566aedd3 87 int _shot_y;
KaifK 9:e6566d09f087 88 float _speed;
KaifK 16:1f196a0e12be 89 float _new_speed_threshold;
KaifK 20:c697902b844f 90
KaifK 4:08a0ff6668df 91 };
KaifK 7:2a3b566aedd3 92
KaifK 4:08a0ff6668df 93 #endif