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.
Cylinder/Cylinder.h@4:ed68b20e2075, 2019-05-05 (annotated)
- Committer:
- 2016110307
- Date:
- Sun May 05 15:48:51 2019 +0000
- Revision:
- 4:ed68b20e2075
- Parent:
- 1:85ab0d979b57
- Child:
- 5:17821d72fe85
Finish the doxygen of Cylinder.h file
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
2016110307 | 0:97418ec4c37d | 1 | #ifndef CYLINDER_H |
2016110307 | 0:97418ec4c37d | 2 | #define CYLINDER_H |
2016110307 | 0:97418ec4c37d | 3 | |
2016110307 | 1:85ab0d979b57 | 4 | #include "Bird.h" |
2016110307 | 0:97418ec4c37d | 5 | |
2016110307 | 4:ed68b20e2075 | 6 | |
2016110307 | 4:ed68b20e2075 | 7 | |
2016110307 | 4:ed68b20e2075 | 8 | |
2016110307 | 4:ed68b20e2075 | 9 | /** |
2016110307 | 4:ed68b20e2075 | 10 | *@brief Data struct contains position data of barrier |
2016110307 | 4:ed68b20e2075 | 11 | */ |
2016110307 | 0:97418ec4c37d | 12 | struct Data { |
2016110307 | 4:ed68b20e2075 | 13 | int x1; /**< int for x1 value */ |
2016110307 | 4:ed68b20e2075 | 14 | int x2; /**< int for x2 value */ |
2016110307 | 4:ed68b20e2075 | 15 | int x3; /**< int for x3 value */ |
2016110307 | 4:ed68b20e2075 | 16 | int height1; /**< int for height1 value */ |
2016110307 | 4:ed68b20e2075 | 17 | int height2; /**< int for height2 value */ |
2016110307 | 4:ed68b20e2075 | 18 | int height3; /**< int for height3 value */ |
2016110307 | 4:ed68b20e2075 | 19 | int gap1; /**< int for gap1 value */ |
2016110307 | 4:ed68b20e2075 | 20 | int gap2; /**< int for gap1 value */ |
2016110307 | 4:ed68b20e2075 | 21 | int gap3; /**< int for gap3 value */ |
2016110307 | 0:97418ec4c37d | 22 | }; |
2016110307 | 0:97418ec4c37d | 23 | |
2016110307 | 4:ed68b20e2075 | 24 | |
2016110307 | 4:ed68b20e2075 | 25 | /** Bird Class |
2016110307 | 4:ed68b20e2075 | 26 | |
2016110307 | 4:ed68b20e2075 | 27 | *@brief Library to create the barrier |
2016110307 | 4:ed68b20e2075 | 28 | *@author Meng Yang |
2016110307 | 4:ed68b20e2075 | 29 | *@date May 2017 |
2016110307 | 4:ed68b20e2075 | 30 | |
2016110307 | 4:ed68b20e2075 | 31 | @code |
2016110307 | 4:ed68b20e2075 | 32 | |
2016110307 | 4:ed68b20e2075 | 33 | #include "Cylinder.h" |
2016110307 | 4:ed68b20e2075 | 34 | #include "Bird.h" |
2016110307 | 4:ed68b20e2075 | 35 | |
2016110307 | 4:ed68b20e2075 | 36 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
2016110307 | 4:ed68b20e2075 | 37 | Gamepad pad; |
2016110307 | 4:ed68b20e2075 | 38 | Bird bird; |
2016110307 | 4:ed68b20e2075 | 39 | Cylinder cylinder; |
2016110307 | 4:ed68b20e2075 | 40 | |
2016110307 | 4:ed68b20e2075 | 41 | void init(); |
2016110307 | 4:ed68b20e2075 | 42 | void welcome(); |
2016110307 | 4:ed68b20e2075 | 43 | void play(); |
2016110307 | 4:ed68b20e2075 | 44 | void reset(); |
2016110307 | 4:ed68b20e2075 | 45 | void restart(); |
2016110307 | 4:ed68b20e2075 | 46 | |
2016110307 | 4:ed68b20e2075 | 47 | int y; |
2016110307 | 4:ed68b20e2075 | 48 | int a = 0; |
2016110307 | 4:ed68b20e2075 | 49 | int high_score; |
2016110307 | 4:ed68b20e2075 | 50 | |
2016110307 | 4:ed68b20e2075 | 51 | int main() |
2016110307 | 4:ed68b20e2075 | 52 | { |
2016110307 | 4:ed68b20e2075 | 53 | |
2016110307 | 4:ed68b20e2075 | 54 | init(); |
2016110307 | 4:ed68b20e2075 | 55 | welcome(); |
2016110307 | 4:ed68b20e2075 | 56 | cylinder.select(lcd,pad); |
2016110307 | 4:ed68b20e2075 | 57 | |
2016110307 | 4:ed68b20e2075 | 58 | while(1) { |
2016110307 | 4:ed68b20e2075 | 59 | |
2016110307 | 4:ed68b20e2075 | 60 | play(); |
2016110307 | 4:ed68b20e2075 | 61 | |
2016110307 | 4:ed68b20e2075 | 62 | if(y >= 44) { |
2016110307 | 4:ed68b20e2075 | 63 | reset(); |
2016110307 | 4:ed68b20e2075 | 64 | } if (y <= 2) { |
2016110307 | 4:ed68b20e2075 | 65 | reset(); |
2016110307 | 4:ed68b20e2075 | 66 | } |
2016110307 | 4:ed68b20e2075 | 67 | |
2016110307 | 4:ed68b20e2075 | 68 | wait(0.1); |
2016110307 | 4:ed68b20e2075 | 69 | } |
2016110307 | 4:ed68b20e2075 | 70 | } |
2016110307 | 4:ed68b20e2075 | 71 | |
2016110307 | 4:ed68b20e2075 | 72 | |
2016110307 | 4:ed68b20e2075 | 73 | void init() |
2016110307 | 4:ed68b20e2075 | 74 | { |
2016110307 | 4:ed68b20e2075 | 75 | |
2016110307 | 4:ed68b20e2075 | 76 | lcd.init(); |
2016110307 | 4:ed68b20e2075 | 77 | lcd.setContrast(0.5); |
2016110307 | 4:ed68b20e2075 | 78 | lcd.normalMode(); |
2016110307 | 4:ed68b20e2075 | 79 | lcd.setBrightness(0.5); |
2016110307 | 4:ed68b20e2075 | 80 | |
2016110307 | 4:ed68b20e2075 | 81 | pad.init(); |
2016110307 | 4:ed68b20e2075 | 82 | bird.init(); |
2016110307 | 4:ed68b20e2075 | 83 | cylinder.init(); |
2016110307 | 4:ed68b20e2075 | 84 | |
2016110307 | 4:ed68b20e2075 | 85 | } |
2016110307 | 4:ed68b20e2075 | 86 | |
2016110307 | 4:ed68b20e2075 | 87 | void play() |
2016110307 | 4:ed68b20e2075 | 88 | { |
2016110307 | 4:ed68b20e2075 | 89 | lcd.clear(); |
2016110307 | 4:ed68b20e2075 | 90 | |
2016110307 | 4:ed68b20e2075 | 91 | |
2016110307 | 4:ed68b20e2075 | 92 | cylinder.check(); |
2016110307 | 4:ed68b20e2075 | 93 | cylinder.print_score(lcd); |
2016110307 | 4:ed68b20e2075 | 94 | |
2016110307 | 4:ed68b20e2075 | 95 | bird.update(pad); |
2016110307 | 4:ed68b20e2075 | 96 | y = bird.get_y(); |
2016110307 | 4:ed68b20e2075 | 97 | |
2016110307 | 4:ed68b20e2075 | 98 | cylinder.draw(lcd); |
2016110307 | 4:ed68b20e2075 | 99 | bird.draw(lcd); |
2016110307 | 4:ed68b20e2075 | 100 | Data data = cylinder.get_data(); |
2016110307 | 4:ed68b20e2075 | 101 | |
2016110307 | 4:ed68b20e2075 | 102 | lcd.refresh(); |
2016110307 | 4:ed68b20e2075 | 103 | if(y <= data.height1+1 | y >= data.height1 + data.gap1-4) { |
2016110307 | 4:ed68b20e2075 | 104 | if(data.x1 <= 4) { |
2016110307 | 4:ed68b20e2075 | 105 | reset(); |
2016110307 | 4:ed68b20e2075 | 106 | } |
2016110307 | 4:ed68b20e2075 | 107 | } |
2016110307 | 4:ed68b20e2075 | 108 | if(y <= data.height2+1 | y >= data.height2 + data.gap2-4) { |
2016110307 | 4:ed68b20e2075 | 109 | if(data.x2 <= 4) { |
2016110307 | 4:ed68b20e2075 | 110 | reset(); |
2016110307 | 4:ed68b20e2075 | 111 | } |
2016110307 | 4:ed68b20e2075 | 112 | } |
2016110307 | 4:ed68b20e2075 | 113 | if(y <= data.height3+1 | y >= data.height3 + data.gap3-4) { |
2016110307 | 4:ed68b20e2075 | 114 | if(data.x3 <= 4) { |
2016110307 | 4:ed68b20e2075 | 115 | reset(); |
2016110307 | 4:ed68b20e2075 | 116 | } |
2016110307 | 4:ed68b20e2075 | 117 | } |
2016110307 | 4:ed68b20e2075 | 118 | |
2016110307 | 4:ed68b20e2075 | 119 | |
2016110307 | 4:ed68b20e2075 | 120 | cylinder.update(); |
2016110307 | 4:ed68b20e2075 | 121 | |
2016110307 | 4:ed68b20e2075 | 122 | wait(0.1); |
2016110307 | 4:ed68b20e2075 | 123 | } |
2016110307 | 4:ed68b20e2075 | 124 | |
2016110307 | 4:ed68b20e2075 | 125 | void reset() |
2016110307 | 4:ed68b20e2075 | 126 | { |
2016110307 | 4:ed68b20e2075 | 127 | pad.init(); |
2016110307 | 4:ed68b20e2075 | 128 | cylinder.init(); |
2016110307 | 4:ed68b20e2075 | 129 | bird.init(); |
2016110307 | 4:ed68b20e2075 | 130 | restart(); |
2016110307 | 4:ed68b20e2075 | 131 | |
2016110307 | 4:ed68b20e2075 | 132 | } |
2016110307 | 4:ed68b20e2075 | 133 | |
2016110307 | 4:ed68b20e2075 | 134 | void welcome() |
2016110307 | 4:ed68b20e2075 | 135 | { |
2016110307 | 4:ed68b20e2075 | 136 | lcd.printString(" Flappy Bird ",0,1); |
2016110307 | 4:ed68b20e2075 | 137 | lcd.printString(" Press Start ",0,4); |
2016110307 | 4:ed68b20e2075 | 138 | lcd.refresh(); |
2016110307 | 4:ed68b20e2075 | 139 | while ( pad.check_event(Gamepad::START_PRESSED) == false) { |
2016110307 | 4:ed68b20e2075 | 140 | pad.leds_on(); |
2016110307 | 4:ed68b20e2075 | 141 | wait(0.1); |
2016110307 | 4:ed68b20e2075 | 142 | pad.leds_off(); |
2016110307 | 4:ed68b20e2075 | 143 | wait(0.1); |
2016110307 | 4:ed68b20e2075 | 144 | } |
2016110307 | 4:ed68b20e2075 | 145 | wait(0.2); |
2016110307 | 4:ed68b20e2075 | 146 | } |
2016110307 | 4:ed68b20e2075 | 147 | |
2016110307 | 4:ed68b20e2075 | 148 | void restart() |
2016110307 | 4:ed68b20e2075 | 149 | { |
2016110307 | 4:ed68b20e2075 | 150 | bird.background(lcd); |
2016110307 | 4:ed68b20e2075 | 151 | lcd.clear(); |
2016110307 | 4:ed68b20e2075 | 152 | high_score = cylinder.get_highest_score(a); |
2016110307 | 4:ed68b20e2075 | 153 | a = high_score; |
2016110307 | 4:ed68b20e2075 | 154 | cylinder.print_yourscore(lcd); |
2016110307 | 4:ed68b20e2075 | 155 | char buffer1[14]; |
2016110307 | 4:ed68b20e2075 | 156 | sprintf(buffer1,"HighScore = %2d ",high_score); |
2016110307 | 4:ed68b20e2075 | 157 | lcd.printString(buffer1,0,0); |
2016110307 | 4:ed68b20e2075 | 158 | lcd.printString(" Press Start ",0,3); |
2016110307 | 4:ed68b20e2075 | 159 | lcd.printString(" to continue ",0,4); |
2016110307 | 4:ed68b20e2075 | 160 | |
2016110307 | 4:ed68b20e2075 | 161 | lcd.refresh(); |
2016110307 | 4:ed68b20e2075 | 162 | while ( pad.check_event(Gamepad::START_PRESSED) == false) { |
2016110307 | 4:ed68b20e2075 | 163 | pad.leds_on(); |
2016110307 | 4:ed68b20e2075 | 164 | wait(0.1); |
2016110307 | 4:ed68b20e2075 | 165 | pad.leds_off(); |
2016110307 | 4:ed68b20e2075 | 166 | wait(0.1); |
2016110307 | 4:ed68b20e2075 | 167 | } |
2016110307 | 4:ed68b20e2075 | 168 | wait(0.2); |
2016110307 | 4:ed68b20e2075 | 169 | cylinder.select(lcd,pad); |
2016110307 | 4:ed68b20e2075 | 170 | } |
2016110307 | 4:ed68b20e2075 | 171 | @endcode |
2016110307 | 4:ed68b20e2075 | 172 | */ |
2016110307 | 4:ed68b20e2075 | 173 | |
2016110307 | 0:97418ec4c37d | 174 | class Cylinder { |
2016110307 | 0:97418ec4c37d | 175 | public: |
2016110307 | 4:ed68b20e2075 | 176 | |
2016110307 | 4:ed68b20e2075 | 177 | /** |
2016110307 | 4:ed68b20e2075 | 178 | *@brief Initialise all the parameters of the barrier |
2016110307 | 4:ed68b20e2075 | 179 | */ |
2016110307 | 0:97418ec4c37d | 180 | void init(); |
2016110307 | 4:ed68b20e2075 | 181 | |
2016110307 | 4:ed68b20e2075 | 182 | /** |
2016110307 | 4:ed68b20e2075 | 183 | *@brief Draw two selections |
2016110307 | 4:ed68b20e2075 | 184 | *@param lcd, pad |
2016110307 | 4:ed68b20e2075 | 185 | *@details Use this method to use the functions within N5110.h and Gamepad.h file |
2016110307 | 4:ed68b20e2075 | 186 | */ |
2016110307 | 1:85ab0d979b57 | 187 | void select(N5110 &lcd, Gamepad &pad); |
2016110307 | 4:ed68b20e2075 | 188 | |
2016110307 | 4:ed68b20e2075 | 189 | /** |
2016110307 | 4:ed68b20e2075 | 190 | *@brief Draw the barriers |
2016110307 | 4:ed68b20e2075 | 191 | *@param lcd |
2016110307 | 4:ed68b20e2075 | 192 | *@details Use this method to use the functions within N5110.h file |
2016110307 | 4:ed68b20e2075 | 193 | */ |
2016110307 | 0:97418ec4c37d | 194 | void draw(N5110 &lcd); |
2016110307 | 4:ed68b20e2075 | 195 | |
2016110307 | 4:ed68b20e2075 | 196 | /** |
2016110307 | 4:ed68b20e2075 | 197 | *@brief update the date of the barrier |
2016110307 | 4:ed68b20e2075 | 198 | */ |
2016110307 | 0:97418ec4c37d | 199 | void update(); |
2016110307 | 4:ed68b20e2075 | 200 | |
2016110307 | 4:ed68b20e2075 | 201 | /** |
2016110307 | 4:ed68b20e2075 | 202 | *@brief check the specific situation |
2016110307 | 4:ed68b20e2075 | 203 | */ |
2016110307 | 0:97418ec4c37d | 204 | void check(); |
2016110307 | 4:ed68b20e2075 | 205 | |
2016110307 | 4:ed68b20e2075 | 206 | /** |
2016110307 | 4:ed68b20e2075 | 207 | *@brief print score during playing |
2016110307 | 4:ed68b20e2075 | 208 | *@param lcd |
2016110307 | 4:ed68b20e2075 | 209 | *@details Use this method to use the functions within N5110.h file |
2016110307 | 4:ed68b20e2075 | 210 | */ |
2016110307 | 0:97418ec4c37d | 211 | void print_score(N5110 &lcd); |
2016110307 | 4:ed68b20e2075 | 212 | |
2016110307 | 4:ed68b20e2075 | 213 | /** |
2016110307 | 4:ed68b20e2075 | 214 | *@brief print score when game over |
2016110307 | 4:ed68b20e2075 | 215 | *@param lcd |
2016110307 | 4:ed68b20e2075 | 216 | *@details Use this method to use the functions within N5110.h file |
2016110307 | 4:ed68b20e2075 | 217 | */ |
2016110307 | 0:97418ec4c37d | 218 | void print_yourscore(N5110 &lcd); |
2016110307 | 4:ed68b20e2075 | 219 | |
2016110307 | 4:ed68b20e2075 | 220 | /** |
2016110307 | 4:ed68b20e2075 | 221 | *@brief get highest score |
2016110307 | 4:ed68b20e2075 | 222 | *@param high_score |
2016110307 | 4:ed68b20e2075 | 223 | *@returns The highest score |
2016110307 | 4:ed68b20e2075 | 224 | */ |
2016110307 | 0:97418ec4c37d | 225 | int get_highest_score(int high_score); |
2016110307 | 4:ed68b20e2075 | 226 | |
2016110307 | 4:ed68b20e2075 | 227 | /** |
2016110307 | 4:ed68b20e2075 | 228 | *@brief get certain data of barriers |
2016110307 | 4:ed68b20e2075 | 229 | *@returns a struct contains position data of barriers |
2016110307 | 4:ed68b20e2075 | 230 | */ |
2016110307 | 0:97418ec4c37d | 231 | Data get_data(); |
2016110307 | 0:97418ec4c37d | 232 | |
2016110307 | 0:97418ec4c37d | 233 | |
2016110307 | 0:97418ec4c37d | 234 | |
2016110307 | 0:97418ec4c37d | 235 | |
2016110307 | 0:97418ec4c37d | 236 | private: |
2016110307 | 0:97418ec4c37d | 237 | int _a; |
2016110307 | 0:97418ec4c37d | 238 | int _b; |
2016110307 | 0:97418ec4c37d | 239 | int _c; |
2016110307 | 0:97418ec4c37d | 240 | int _x1; |
2016110307 | 0:97418ec4c37d | 241 | int _x2; |
2016110307 | 0:97418ec4c37d | 242 | int _x3; |
2016110307 | 0:97418ec4c37d | 243 | int _height1; |
2016110307 | 0:97418ec4c37d | 244 | int _height2; |
2016110307 | 0:97418ec4c37d | 245 | int _height3; |
2016110307 | 0:97418ec4c37d | 246 | int _gap1; |
2016110307 | 0:97418ec4c37d | 247 | int _gap2; |
2016110307 | 0:97418ec4c37d | 248 | int _gap3; |
2016110307 | 0:97418ec4c37d | 249 | int _score; |
2016110307 | 0:97418ec4c37d | 250 | int _yourscore; |
2016110307 | 1:85ab0d979b57 | 251 | int _state; |
2016110307 | 1:85ab0d979b57 | 252 | int _speed; |
2016110307 | 1:85ab0d979b57 | 253 | Bird _bird; |
2016110307 | 0:97418ec4c37d | 254 | Data _data; |
2016110307 | 0:97418ec4c37d | 255 | |
2016110307 | 1:85ab0d979b57 | 256 | |
2016110307 | 0:97418ec4c37d | 257 | }; |
2016110307 | 0:97418ec4c37d | 258 | |
2016110307 | 0:97418ec4c37d | 259 | #endif |
2016110307 | 0:97418ec4c37d | 260 | |
2016110307 | 0:97418ec4c37d | 261 |