Kaif Kutchwala 201267448 ELEC2645 Project

Dependencies:   mbed

Committer:
KaifK
Date:
Tue May 26 15:50:46 2020 +0000
Revision:
31:e1f80d181779
Parent:
25:467d8fd0fec4
Final Submission. I have read and agreed with Statement of Academic Integrity.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
KaifK 2:21973e665a32 1 #ifndef BALL_H
KaifK 2:21973e665a32 2 #define BALL_H
KaifK 2:21973e665a32 3
KaifK 2:21973e665a32 4 #include <cmath>
KaifK 2:21973e665a32 5 #include "mbed.h"
KaifK 2:21973e665a32 6 #include "Gamepad.h"
KaifK 18:100e7d3509b5 7 #include "Sprites.h"
KaifK 2:21973e665a32 8 #include "N5110.h"
KaifK 2:21973e665a32 9
KaifK 15:5bf3f951d337 10 #define BALL_INIT_X 42
KaifK 15:5bf3f951d337 11 #define BALL_INIT_Y 49
KaifK 25:467d8fd0fec4 12
KaifK 25:467d8fd0fec4 13 /** Ball class
KaifK 25:467d8fd0fec4 14 @brief Class for manipulating the ball in the game, displaying levels and
KaifK 25:467d8fd0fec4 15 checking for goal conditions.
KaifK 25:467d8fd0fec4 16 @version 1.0
KaifK 25:467d8fd0fec4 17 @author Kaif Kutchwala
KaifK 25:467d8fd0fec4 18 @date May 2020
KaifK 25:467d8fd0fec4 19 */
KaifK 25:467d8fd0fec4 20
KaifK 2:21973e665a32 21 class Ball {
KaifK 9:e6566d09f087 22 private:
KaifK 25:467d8fd0fec4 23 //objects
KaifK 25:467d8fd0fec4 24 N5110 *_lcd;
KaifK 25:467d8fd0fec4 25
KaifK 2:21973e665a32 26 public:
KaifK 2:21973e665a32 27 /** Constructor */
KaifK 9:e6566d09f087 28 Ball(N5110 &lcd);
KaifK 25:467d8fd0fec4 29
KaifK 2:21973e665a32 30 /** Destructor */
KaifK 2:21973e665a32 31 ~Ball();
KaifK 25:467d8fd0fec4 32
KaifK 25:467d8fd0fec4 33 /** @brief initialises ball position, radius and level */
KaifK 9:e6566d09f087 34 void init();
KaifK 25:467d8fd0fec4 35
KaifK 25:467d8fd0fec4 36 /** @brief Draws ball at position (x,y)
KaifK 25:467d8fd0fec4 37 * @param x @details x coordinate of specified position
KaifK 25:467d8fd0fec4 38 * @param y @details y coordinate of specified position
KaifK 25:467d8fd0fec4 39 * @param radius @details radius of ball
KaifK 25:467d8fd0fec4 40 */
KaifK 15:5bf3f951d337 41 void drawBall(int x, int y, int radius);
KaifK 25:467d8fd0fec4 42
KaifK 25:467d8fd0fec4 43 /** @brief Plays animation of ball being shot based on user input.
KaifK 25:467d8fd0fec4 44 * @param user_input_x @details x coordinate of final position
KaifK 25:467d8fd0fec4 45 * @param user_input_y @details y coordinate of final position
KaifK 25:467d8fd0fec4 46 */
KaifK 9:e6566d09f087 47 void playShot(int user_input_x, int user_input_y);
KaifK 25:467d8fd0fec4 48
KaifK 8:5ede90f99a27 49 /** @brief displays constant background w/o obstacles */
KaifK 12:ca7329a41fc5 50 void displayBackground();
KaifK 25:467d8fd0fec4 51
KaifK 25:467d8fd0fec4 52 /** @brief displays obstacles for level on lcd
KaifK 25:467d8fd0fec4 53 * @param level @details specifies level number
KaifK 25:467d8fd0fec4 54 */
KaifK 10:dbc149804a06 55 void displayLevel(int level);
KaifK 25:467d8fd0fec4 56
KaifK 12:ca7329a41fc5 57 /** @brief checks if goal has been scored or not and updates
KaifK 25:467d8fd0fec4 58 * @param limit @details sets max limit for random generator
KaifK 25:467d8fd0fec4 59 * @param x @details sets x coordinate of shot to be checked
KaifK 25:467d8fd0fec4 60 * @param y @details sets y coordinate of shot to be checked
KaifK 25:467d8fd0fec4 61 * @returns bool value corresponding to whether goal has been scored
KaifK 25:467d8fd0fec4 62 * or not
KaifK 25:467d8fd0fec4 63 */
KaifK 17:2fbe40177b9c 64 bool isGoal(int level, int x, int y);
KaifK 25:467d8fd0fec4 65
KaifK 11:59119247dd68 66 //void level_loop(); //displays all levels
KaifK 25:467d8fd0fec4 67
KaifK 25:467d8fd0fec4 68 //accesors and mutators
KaifK 25:467d8fd0fec4 69 /** @brief sets level to be played/displayed
KaifK 25:467d8fd0fec4 70 * @param level @details integer value in range 1-10
KaifK 25:467d8fd0fec4 71 */
KaifK 25:467d8fd0fec4 72 void set_level(int level);
KaifK 11:59119247dd68 73
KaifK 25:467d8fd0fec4 74 /** @brief Get level being displayed/played
KaifK 25:467d8fd0fec4 75 * @returns integer value in range 1 to 10 referring to levels 1-10
KaifK 25:467d8fd0fec4 76 */
KaifK 10:dbc149804a06 77 int get_level();
KaifK 25:467d8fd0fec4 78
KaifK 25:467d8fd0fec4 79 /** @brief Get position of the ball on lcd screen
KaifK 25:467d8fd0fec4 80 * @returns value in Vector2D format {x_coordinate, y_coordinate}
KaifK 25:467d8fd0fec4 81 */
KaifK 21:d5b1160f349f 82 Vector2D get_position();
KaifK 25:467d8fd0fec4 83
KaifK 2:21973e665a32 84 private:
KaifK 10:dbc149804a06 85 //functions
KaifK 25:467d8fd0fec4 86 // functions below draw obstacles for corresponding level on lcd
KaifK 12:ca7329a41fc5 87 void level_1();
KaifK 12:ca7329a41fc5 88 void level_2();
KaifK 12:ca7329a41fc5 89 void level_3();
KaifK 12:ca7329a41fc5 90 void level_4();
KaifK 12:ca7329a41fc5 91 void level_5();
KaifK 12:ca7329a41fc5 92 void level_6();
KaifK 12:ca7329a41fc5 93 void level_7();
KaifK 12:ca7329a41fc5 94 void level_8();
KaifK 12:ca7329a41fc5 95 void level_9();
KaifK 12:ca7329a41fc5 96 void level_10();
KaifK 25:467d8fd0fec4 97 // functions below check if goal has been scored for given coordinates
KaifK 25:467d8fd0fec4 98 // for corresponding level
KaifK 12:ca7329a41fc5 99 void check_level_1(int x, int y);
KaifK 12:ca7329a41fc5 100 void check_level_2(int x, int y);
KaifK 12:ca7329a41fc5 101 void check_level_3(int x, int y);
KaifK 12:ca7329a41fc5 102 void check_level_4(int x, int y);
KaifK 12:ca7329a41fc5 103 void check_level_5(int x, int y);
KaifK 12:ca7329a41fc5 104 void check_level_6(int x, int y);
KaifK 12:ca7329a41fc5 105 void check_level_7(int x, int y);
KaifK 12:ca7329a41fc5 106 void check_level_8(int x, int y);
KaifK 12:ca7329a41fc5 107 void check_level_9(int x, int y);
KaifK 12:ca7329a41fc5 108 void check_level_10(int x, int y);
KaifK 10:dbc149804a06 109 //variables
KaifK 2:21973e665a32 110 int _user_input_x;
KaifK 2:21973e665a32 111 int _user_input_y;
KaifK 2:21973e665a32 112 int _ball_x;
KaifK 2:21973e665a32 113 int _ball_y;
KaifK 15:5bf3f951d337 114 int _radius;
KaifK 4:08a0ff6668df 115 int _height;
KaifK 9:e6566d09f087 116 int _level;
KaifK 4:08a0ff6668df 117 bool _status;
KaifK 12:ca7329a41fc5 118 bool _goal;
KaifK 25:467d8fd0fec4 119 };
KaifK 25:467d8fd0fec4 120 #endif