Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Missiles/Missiles.h@20:477d2ee5e461, 2019-05-09 (annotated)
- Committer:
- henririgby98
- Date:
- Thu May 09 14:58:01 2019 +0000
- Revision:
- 20:477d2ee5e461
- Parent:
- 16:3cb5c59ae7e8
finish;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
henririgby98 | 3:2aea0872bb5e | 1 | #ifndef MISSILES_H |
henririgby98 | 3:2aea0872bb5e | 2 | #define MISSILES_H |
henririgby98 | 3:2aea0872bb5e | 3 | |
henririgby98 | 3:2aea0872bb5e | 4 | #include "mbed.h" |
henririgby98 | 3:2aea0872bb5e | 5 | #include "N5110.h" |
henririgby98 | 3:2aea0872bb5e | 6 | #include "Gamepad.h" |
henririgby98 | 3:2aea0872bb5e | 7 | |
henririgby98 | 13:5aa4147e2b3e | 8 | /** Missiles class |
henririgby98 | 13:5aa4147e2b3e | 9 | |
henririgby98 | 13:5aa4147e2b3e | 10 | @brief Class for Missiles |
henririgby98 | 13:5aa4147e2b3e | 11 | |
henririgby98 | 13:5aa4147e2b3e | 12 | @version 1.0 |
henririgby98 | 13:5aa4147e2b3e | 13 | |
henririgby98 | 13:5aa4147e2b3e | 14 | @author Henri Rigby |
henririgby98 | 13:5aa4147e2b3e | 15 | |
henririgby98 | 13:5aa4147e2b3e | 16 | @date May 2019 |
henririgby98 | 13:5aa4147e2b3e | 17 | |
henririgby98 | 13:5aa4147e2b3e | 18 | @code |
henririgby98 | 13:5aa4147e2b3e | 19 | |
henririgby98 | 15:286dde533aba | 20 | #include "Missiles.h" |
henririgby98 | 15:286dde533aba | 21 | |
henririgby98 | 15:286dde533aba | 22 | Missiles::Missiles() |
henririgby98 | 15:286dde533aba | 23 | { |
henririgby98 | 15:286dde533aba | 24 | |
henririgby98 | 15:286dde533aba | 25 | } |
henririgby98 | 15:286dde533aba | 26 | |
henririgby98 | 15:286dde533aba | 27 | Missiles::~Missiles() |
henririgby98 | 15:286dde533aba | 28 | { |
henririgby98 | 15:286dde533aba | 29 | |
henririgby98 | 15:286dde533aba | 30 | } |
henririgby98 | 15:286dde533aba | 31 | |
henririgby98 | 15:286dde533aba | 32 | void Missiles::init(int size) |
henririgby98 | 15:286dde533aba | 33 | { |
henririgby98 | 15:286dde533aba | 34 | _speed = 3; // sets initial speed of missile to 3 |
henririgby98 | 15:286dde533aba | 35 | _size = size; |
henririgby98 | 15:286dde533aba | 36 | srand(time(NULL)); |
henririgby98 | 15:286dde533aba | 37 | int N = rand() % 4; //randomises a value of N between 0 and 3 |
henririgby98 | 15:286dde533aba | 38 | if (N == 0) { |
henririgby98 | 15:286dde533aba | 39 | _y = HEIGHT; //sets _y value to bottom of lcd display |
henririgby98 | 15:286dde533aba | 40 | _x = rand() % 80 +4; //randomises _x value |
henririgby98 | 15:286dde533aba | 41 | south(); //calls south function |
henririgby98 | 15:286dde533aba | 42 | } else if (N == 1){ |
henririgby98 | 15:286dde533aba | 43 | _y = 0; //sets _y value to top of lcd display |
henririgby98 | 15:286dde533aba | 44 | _x = rand() % 80 +4; |
henririgby98 | 15:286dde533aba | 45 | north(); //calls north function |
henririgby98 | 15:286dde533aba | 46 | } else if (N == 2){ |
henririgby98 | 15:286dde533aba | 47 | _y = rand() % 44 +4; //randomises _y value |
henririgby98 | 15:286dde533aba | 48 | _x = 0; //sets _x value to left side of lcd display |
henririgby98 | 15:286dde533aba | 49 | west(); //calls west function |
henririgby98 | 15:286dde533aba | 50 | } else { |
henririgby98 | 15:286dde533aba | 51 | _y = rand() % 44 +4; |
henririgby98 | 15:286dde533aba | 52 | _x = WIDTH; //sets _x value to right side of lcd display |
henririgby98 | 15:286dde533aba | 53 | east(); //calls east function |
henririgby98 | 15:286dde533aba | 54 | } |
henririgby98 | 15:286dde533aba | 55 | } |
henririgby98 | 15:286dde533aba | 56 | |
henririgby98 | 15:286dde533aba | 57 | void Missiles::south() |
henririgby98 | 15:286dde533aba | 58 | { |
henririgby98 | 15:286dde533aba | 59 | srand(time(NULL)); |
henririgby98 | 15:286dde533aba | 60 | int direction = rand() % 2; //randomises value for direction between 0-1 |
henririgby98 | 15:286dde533aba | 61 | if (direction == 0) { |
henririgby98 | 15:286dde533aba | 62 | _velocity.x = ((2*_speed)^1/2)/2; //sets x velocity equation means that no strafing will occur |
henririgby98 | 15:286dde533aba | 63 | _velocity.y = -((2*_speed)^1/2)/2; //sets y velocity |
henririgby98 | 15:286dde533aba | 64 | } else { |
henririgby98 | 15:286dde533aba | 65 | _velocity.x = -((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 66 | _velocity.y = -((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 67 | } |
henririgby98 | 15:286dde533aba | 68 | } |
henririgby98 | 15:286dde533aba | 69 | |
henririgby98 | 15:286dde533aba | 70 | void Missiles::north() |
henririgby98 | 15:286dde533aba | 71 | { |
henririgby98 | 15:286dde533aba | 72 | srand(time(NULL)); |
henririgby98 | 15:286dde533aba | 73 | int direction = rand() % 2; |
henririgby98 | 15:286dde533aba | 74 | if (direction == 0) { |
henririgby98 | 15:286dde533aba | 75 | _velocity.x = ((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 76 | _velocity.y = ((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 77 | } else { |
henririgby98 | 15:286dde533aba | 78 | _velocity.x = -((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 79 | _velocity.y = ((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 80 | } |
henririgby98 | 15:286dde533aba | 81 | } |
henririgby98 | 15:286dde533aba | 82 | |
henririgby98 | 15:286dde533aba | 83 | void Missiles::west() |
henririgby98 | 15:286dde533aba | 84 | { |
henririgby98 | 15:286dde533aba | 85 | srand(time(NULL)); |
henririgby98 | 15:286dde533aba | 86 | int direction = rand() % 2; |
henririgby98 | 15:286dde533aba | 87 | if (direction == 0) { |
henririgby98 | 15:286dde533aba | 88 | _velocity.x = ((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 89 | _velocity.y = ((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 90 | } else { |
henririgby98 | 15:286dde533aba | 91 | _velocity.x = ((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 92 | _velocity.y = -((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 93 | } |
henririgby98 | 15:286dde533aba | 94 | } |
henririgby98 | 15:286dde533aba | 95 | |
henririgby98 | 15:286dde533aba | 96 | void Missiles::east() |
henririgby98 | 15:286dde533aba | 97 | { |
henririgby98 | 15:286dde533aba | 98 | int direction = rand() % 2; |
henririgby98 | 15:286dde533aba | 99 | if (direction == 0) { |
henririgby98 | 15:286dde533aba | 100 | _velocity.x = -((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 101 | _velocity.y = ((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 102 | } else { |
henririgby98 | 15:286dde533aba | 103 | _velocity.x = -((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 104 | _velocity.y = -((2*_speed)^1/2)/2; |
henririgby98 | 15:286dde533aba | 105 | } |
henririgby98 | 15:286dde533aba | 106 | } |
henririgby98 | 15:286dde533aba | 107 | |
henririgby98 | 15:286dde533aba | 108 | void Missiles::update() |
henririgby98 | 15:286dde533aba | 109 | { |
henririgby98 | 15:286dde533aba | 110 | _x += _velocity.x; //sets _x by adding velocity in x direction |
henririgby98 | 15:286dde533aba | 111 | _y += _velocity.y; //sets _y by adding velocity in y direction |
henririgby98 | 15:286dde533aba | 112 | } |
henririgby98 | 15:286dde533aba | 113 | |
henririgby98 | 15:286dde533aba | 114 | void Missiles::draw(N5110 &lcd) |
henririgby98 | 15:286dde533aba | 115 | { |
henririgby98 | 15:286dde533aba | 116 | lcd.drawRect(_x,_y,_size,_size,FILL_BLACK); //draws square representing missile |
henririgby98 | 15:286dde533aba | 117 | } |
henririgby98 | 15:286dde533aba | 118 | |
henririgby98 | 15:286dde533aba | 119 | void Missiles::set_velocity(Vector2D v) |
henririgby98 | 15:286dde533aba | 120 | { |
henririgby98 | 15:286dde533aba | 121 | _velocity.x = v.x; //sets the velocity in the x direction |
henririgby98 | 15:286dde533aba | 122 | _velocity.y = v.y; //sets the velocity in the y direction |
henririgby98 | 15:286dde533aba | 123 | } |
henririgby98 | 15:286dde533aba | 124 | |
henririgby98 | 15:286dde533aba | 125 | Vector2D Missiles::get_velocity() |
henririgby98 | 15:286dde533aba | 126 | { |
henririgby98 | 15:286dde533aba | 127 | Vector2D v = {_velocity.x,_velocity.y}; //sets 2D velocity |
henririgby98 | 15:286dde533aba | 128 | return v; |
henririgby98 | 15:286dde533aba | 129 | } |
henririgby98 | 15:286dde533aba | 130 | |
henririgby98 | 15:286dde533aba | 131 | Vector2D Missiles::get_pos() |
henririgby98 | 15:286dde533aba | 132 | { |
henririgby98 | 15:286dde533aba | 133 | Vector2D p = {_x,_y}; //gets the position by taking both _x and _y coordinates |
henririgby98 | 15:286dde533aba | 134 | return p; |
henririgby98 | 15:286dde533aba | 135 | } |
henririgby98 | 15:286dde533aba | 136 | |
henririgby98 | 15:286dde533aba | 137 | void Missiles::set_pos(Vector2D p) |
henririgby98 | 15:286dde533aba | 138 | { |
henririgby98 | 15:286dde533aba | 139 | _x = p.x; //sets _x by taking the x component of position |
henririgby98 | 15:286dde533aba | 140 | _y = p.y; //sets _y by taking the y component of position |
henririgby98 | 15:286dde533aba | 141 | } |
henririgby98 | 15:286dde533aba | 142 | |
henririgby98 | 15:286dde533aba | 143 | int Missiles::set_score() |
henririgby98 | 15:286dde533aba | 144 | { |
henririgby98 | 15:286dde533aba | 145 | _score = 0; //sets the value of _score to equal 0 |
henririgby98 | 15:286dde533aba | 146 | return _score; |
henririgby98 | 15:286dde533aba | 147 | } |
henririgby98 | 15:286dde533aba | 148 | |
henririgby98 | 15:286dde533aba | 149 | void Missiles::add_score() |
henririgby98 | 15:286dde533aba | 150 | { |
henririgby98 | 15:286dde533aba | 151 | _score++; //increases the value of score by 1 |
henririgby98 | 15:286dde533aba | 152 | } |
henririgby98 | 15:286dde533aba | 153 | |
henririgby98 | 15:286dde533aba | 154 | int Missiles::get_score() |
henririgby98 | 15:286dde533aba | 155 | { |
henririgby98 | 15:286dde533aba | 156 | return _score; //returns the value of _score |
henririgby98 | 15:286dde533aba | 157 | } |
henririgby98 | 15:286dde533aba | 158 | |
henririgby98 | 13:5aa4147e2b3e | 159 | */ |
henririgby98 | 13:5aa4147e2b3e | 160 | |
henririgby98 | 3:2aea0872bb5e | 161 | class Missiles |
henririgby98 | 3:2aea0872bb5e | 162 | { |
henririgby98 | 3:2aea0872bb5e | 163 | |
henririgby98 | 3:2aea0872bb5e | 164 | public: |
henririgby98 | 20:477d2ee5e461 | 165 | /**constructor*/ |
henririgby98 | 3:2aea0872bb5e | 166 | Missiles(); |
henririgby98 | 20:477d2ee5e461 | 167 | /**destructor*/ |
henririgby98 | 3:2aea0872bb5e | 168 | ~Missiles(); |
henririgby98 | 13:5aa4147e2b3e | 169 | /** |
henririgby98 | 13:5aa4147e2b3e | 170 | * @brief Randomises missile starting position |
henririgby98 | 16:3cb5c59ae7e8 | 171 | * @param sets position @details Sets starting position of the missile |
henririgby98 | 13:5aa4147e2b3e | 172 | */ |
henririgby98 | 7:e0cab3e73df9 | 173 | void init(int size); |
henririgby98 | 13:5aa4147e2b3e | 174 | /** |
henririgby98 | 13:5aa4147e2b3e | 175 | * @brief Randomises starting direction & velocity if missile starts at bottom |
henririgby98 | 13:5aa4147e2b3e | 176 | * @param sets direction & velocity @details Sets starting direction & velocity of missile from bottom |
henririgby98 | 13:5aa4147e2b3e | 177 | */ |
henririgby98 | 7:e0cab3e73df9 | 178 | void south(); |
henririgby98 | 13:5aa4147e2b3e | 179 | /** |
henririgby98 | 13:5aa4147e2b3e | 180 | * @brief Randomises starting direction & velocity if missile starts at top |
henririgby98 | 13:5aa4147e2b3e | 181 | * @param sets direction & velocity @details Sets starting direction & velocity of missile from top |
henririgby98 | 13:5aa4147e2b3e | 182 | */ |
henririgby98 | 7:e0cab3e73df9 | 183 | void north(); |
henririgby98 | 13:5aa4147e2b3e | 184 | /** |
henririgby98 | 13:5aa4147e2b3e | 185 | * @brief Randomises starting direction & velocity if missile starts on left side |
henririgby98 | 13:5aa4147e2b3e | 186 | * @param sets direction & velocity @details Sets starting direction & velocity of missile from left side |
henririgby98 | 13:5aa4147e2b3e | 187 | */ |
henririgby98 | 7:e0cab3e73df9 | 188 | void west(); |
henririgby98 | 13:5aa4147e2b3e | 189 | /** |
henririgby98 | 13:5aa4147e2b3e | 190 | * @brief Randomises starting direction & velocity if missile starts on right side |
henririgby98 | 13:5aa4147e2b3e | 191 | * @param sets direction & velocity @details Sets starting direction & velocity of missile from right side |
henririgby98 | 13:5aa4147e2b3e | 192 | */ |
henririgby98 | 7:e0cab3e73df9 | 193 | void east(); |
henririgby98 | 13:5aa4147e2b3e | 194 | /** |
henririgby98 | 13:5aa4147e2b3e | 195 | * @brief Draws the missile |
henririgby98 | 15:286dde533aba | 196 | * @return draws missile @details draws 2x2 square representing a missile |
henririgby98 | 13:5aa4147e2b3e | 197 | */ |
henririgby98 | 3:2aea0872bb5e | 198 | void draw(N5110 &lcd); |
henririgby98 | 13:5aa4147e2b3e | 199 | /** |
henririgby98 | 13:5aa4147e2b3e | 200 | * @brief Updates the position of the missile |
henririgby98 | 15:286dde533aba | 201 | * @param sets position @details Will reset the position of missile by adding the missiles velocity |
henririgby98 | 13:5aa4147e2b3e | 202 | */ |
henririgby98 | 3:2aea0872bb5e | 203 | void update(); |
henririgby98 | 13:5aa4147e2b3e | 204 | /** |
henririgby98 | 13:5aa4147e2b3e | 205 | * @brief Sets the score |
henririgby98 | 15:286dde533aba | 206 | * @param sets value of the score(int) @details Sets the score of the game back to 0 |
henririgby98 | 13:5aa4147e2b3e | 207 | */ |
henririgby98 | 7:e0cab3e73df9 | 208 | int set_score(); |
henririgby98 | 13:5aa4147e2b3e | 209 | /** |
henririgby98 | 13:5aa4147e2b3e | 210 | * @brief Increases the score |
henririgby98 | 15:286dde533aba | 211 | * @param sets value of the score @details Increases the value of score by 1 |
henririgby98 | 13:5aa4147e2b3e | 212 | */ |
henririgby98 | 7:e0cab3e73df9 | 213 | void add_score(); |
henririgby98 | 13:5aa4147e2b3e | 214 | /** |
henririgby98 | 13:5aa4147e2b3e | 215 | * @brief Gets the score |
henririgby98 | 15:286dde533aba | 216 | * @return the current score @details Returns the value of what score is currently |
henririgby98 | 13:5aa4147e2b3e | 217 | */ |
henririgby98 | 7:e0cab3e73df9 | 218 | int get_score(); |
henririgby98 | 13:5aa4147e2b3e | 219 | /** |
henririgby98 | 13:5aa4147e2b3e | 220 | * @brief Sets the velocity |
henririgby98 | 13:5aa4147e2b3e | 221 | * @param sets velocity componets @details sets the velocity by equalling it to 2D velocity multiplied by direction |
henririgby98 | 13:5aa4147e2b3e | 222 | */ |
henririgby98 | 3:2aea0872bb5e | 223 | void set_velocity(Vector2D v); |
henririgby98 | 13:5aa4147e2b3e | 224 | /** |
henririgby98 | 13:5aa4147e2b3e | 225 | * @brief Gets the velocity |
henririgby98 | 15:286dde533aba | 226 | * @return 2D velocity @details returns the 2D velocity by taking velocity components of both x and y |
henririgby98 | 13:5aa4147e2b3e | 227 | */ |
henririgby98 | 3:2aea0872bb5e | 228 | Vector2D get_velocity(); |
henririgby98 | 13:5aa4147e2b3e | 229 | /** |
henririgby98 | 13:5aa4147e2b3e | 230 | * @brief Gets the position |
henririgby98 | 15:286dde533aba | 231 | * @return position @details returns the position of both the x and y coordinates |
henririgby98 | 13:5aa4147e2b3e | 232 | */ |
henririgby98 | 3:2aea0872bb5e | 233 | Vector2D get_pos(); |
henririgby98 | 13:5aa4147e2b3e | 234 | /** |
henririgby98 | 13:5aa4147e2b3e | 235 | * @brief sets the position |
henririgby98 | 13:5aa4147e2b3e | 236 | * @param sets position @details sets x and y coordinates by taking their respective values from p |
henririgby98 | 13:5aa4147e2b3e | 237 | */ |
henririgby98 | 3:2aea0872bb5e | 238 | void set_pos(Vector2D p); |
henririgby98 | 3:2aea0872bb5e | 239 | |
henririgby98 | 3:2aea0872bb5e | 240 | private: |
henririgby98 | 3:2aea0872bb5e | 241 | |
henririgby98 | 13:5aa4147e2b3e | 242 | int _x; |
henririgby98 | 13:5aa4147e2b3e | 243 | int _y; |
henririgby98 | 7:e0cab3e73df9 | 244 | int _score; |
henririgby98 | 7:e0cab3e73df9 | 245 | int _speed; |
henririgby98 | 3:2aea0872bb5e | 246 | Vector2D _velocity; |
henririgby98 | 3:2aea0872bb5e | 247 | int _size; |
henririgby98 | 3:2aea0872bb5e | 248 | }; |
henririgby98 | 3:2aea0872bb5e | 249 | #endif |