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@6:13297af05b9b, 2019-05-05 (annotated)
- Committer:
- 2016110307
- Date:
- Sun May 05 16:06:17 2019 +0000
- Revision:
- 6:13297af05b9b
- Parent:
- 5:17821d72fe85
- Child:
- 7:f3b57f157655
solve the display problem
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 | 5:17821d72fe85 | 25 | /** Cylinder 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 | 6:13297af05b9b | 51 | |
2016110307 | 6:13297af05b9b | 52 | //ELEC2645 Embedded Systems Project |
2016110307 | 6:13297af05b9b | 53 | //School of Electronic & Electrical Engineering |
2016110307 | 6:13297af05b9b | 54 | //University of Leeds |
2016110307 | 6:13297af05b9b | 55 | //Name: Mmeng Yang |
2016110307 | 6:13297af05b9b | 56 | //Username: el16ym@leeds.ac.uk |
2016110307 | 6:13297af05b9b | 57 | //Student ID Number: 201089063 |
2016110307 | 6:13297af05b9b | 58 | //Date: 5th/May/2019 |
2016110307 | 6:13297af05b9b | 59 | |
2016110307 | 5:17821d72fe85 | 60 | |
2016110307 | 4:ed68b20e2075 | 61 | int main() |
2016110307 | 4:ed68b20e2075 | 62 | { |
2016110307 | 4:ed68b20e2075 | 63 | |
2016110307 | 4:ed68b20e2075 | 64 | init(); |
2016110307 | 4:ed68b20e2075 | 65 | welcome(); |
2016110307 | 4:ed68b20e2075 | 66 | cylinder.select(lcd,pad); |
2016110307 | 4:ed68b20e2075 | 67 | |
2016110307 | 4:ed68b20e2075 | 68 | while(1) { |
2016110307 | 4:ed68b20e2075 | 69 | |
2016110307 | 4:ed68b20e2075 | 70 | play(); |
2016110307 | 4:ed68b20e2075 | 71 | |
2016110307 | 4:ed68b20e2075 | 72 | if(y >= 44) { |
2016110307 | 4:ed68b20e2075 | 73 | reset(); |
2016110307 | 4:ed68b20e2075 | 74 | } if (y <= 2) { |
2016110307 | 4:ed68b20e2075 | 75 | reset(); |
2016110307 | 4:ed68b20e2075 | 76 | } |
2016110307 | 4:ed68b20e2075 | 77 | |
2016110307 | 4:ed68b20e2075 | 78 | wait(0.1); |
2016110307 | 4:ed68b20e2075 | 79 | } |
2016110307 | 4:ed68b20e2075 | 80 | } |
2016110307 | 4:ed68b20e2075 | 81 | |
2016110307 | 4:ed68b20e2075 | 82 | |
2016110307 | 4:ed68b20e2075 | 83 | void init() |
2016110307 | 4:ed68b20e2075 | 84 | { |
2016110307 | 4:ed68b20e2075 | 85 | |
2016110307 | 4:ed68b20e2075 | 86 | lcd.init(); |
2016110307 | 4:ed68b20e2075 | 87 | lcd.setContrast(0.5); |
2016110307 | 4:ed68b20e2075 | 88 | lcd.normalMode(); |
2016110307 | 4:ed68b20e2075 | 89 | lcd.setBrightness(0.5); |
2016110307 | 4:ed68b20e2075 | 90 | |
2016110307 | 4:ed68b20e2075 | 91 | pad.init(); |
2016110307 | 4:ed68b20e2075 | 92 | bird.init(); |
2016110307 | 4:ed68b20e2075 | 93 | cylinder.init(); |
2016110307 | 4:ed68b20e2075 | 94 | |
2016110307 | 4:ed68b20e2075 | 95 | } |
2016110307 | 4:ed68b20e2075 | 96 | |
2016110307 | 4:ed68b20e2075 | 97 | void play() |
2016110307 | 4:ed68b20e2075 | 98 | { |
2016110307 | 4:ed68b20e2075 | 99 | lcd.clear(); |
2016110307 | 4:ed68b20e2075 | 100 | |
2016110307 | 4:ed68b20e2075 | 101 | |
2016110307 | 4:ed68b20e2075 | 102 | cylinder.check(); |
2016110307 | 4:ed68b20e2075 | 103 | cylinder.print_score(lcd); |
2016110307 | 4:ed68b20e2075 | 104 | |
2016110307 | 4:ed68b20e2075 | 105 | bird.update(pad); |
2016110307 | 4:ed68b20e2075 | 106 | y = bird.get_y(); |
2016110307 | 4:ed68b20e2075 | 107 | |
2016110307 | 4:ed68b20e2075 | 108 | cylinder.draw(lcd); |
2016110307 | 4:ed68b20e2075 | 109 | bird.draw(lcd); |
2016110307 | 4:ed68b20e2075 | 110 | Data data = cylinder.get_data(); |
2016110307 | 4:ed68b20e2075 | 111 | |
2016110307 | 4:ed68b20e2075 | 112 | lcd.refresh(); |
2016110307 | 4:ed68b20e2075 | 113 | if(y <= data.height1+1 | y >= data.height1 + data.gap1-4) { |
2016110307 | 4:ed68b20e2075 | 114 | if(data.x1 <= 4) { |
2016110307 | 4:ed68b20e2075 | 115 | reset(); |
2016110307 | 4:ed68b20e2075 | 116 | } |
2016110307 | 4:ed68b20e2075 | 117 | } |
2016110307 | 4:ed68b20e2075 | 118 | if(y <= data.height2+1 | y >= data.height2 + data.gap2-4) { |
2016110307 | 4:ed68b20e2075 | 119 | if(data.x2 <= 4) { |
2016110307 | 4:ed68b20e2075 | 120 | reset(); |
2016110307 | 4:ed68b20e2075 | 121 | } |
2016110307 | 4:ed68b20e2075 | 122 | } |
2016110307 | 4:ed68b20e2075 | 123 | if(y <= data.height3+1 | y >= data.height3 + data.gap3-4) { |
2016110307 | 4:ed68b20e2075 | 124 | if(data.x3 <= 4) { |
2016110307 | 4:ed68b20e2075 | 125 | reset(); |
2016110307 | 4:ed68b20e2075 | 126 | } |
2016110307 | 4:ed68b20e2075 | 127 | } |
2016110307 | 4:ed68b20e2075 | 128 | |
2016110307 | 4:ed68b20e2075 | 129 | |
2016110307 | 4:ed68b20e2075 | 130 | cylinder.update(); |
2016110307 | 4:ed68b20e2075 | 131 | |
2016110307 | 4:ed68b20e2075 | 132 | wait(0.1); |
2016110307 | 4:ed68b20e2075 | 133 | } |
2016110307 | 4:ed68b20e2075 | 134 | |
2016110307 | 4:ed68b20e2075 | 135 | void reset() |
2016110307 | 4:ed68b20e2075 | 136 | { |
2016110307 | 4:ed68b20e2075 | 137 | pad.init(); |
2016110307 | 4:ed68b20e2075 | 138 | cylinder.init(); |
2016110307 | 4:ed68b20e2075 | 139 | bird.init(); |
2016110307 | 4:ed68b20e2075 | 140 | restart(); |
2016110307 | 4:ed68b20e2075 | 141 | |
2016110307 | 4:ed68b20e2075 | 142 | } |
2016110307 | 4:ed68b20e2075 | 143 | |
2016110307 | 4:ed68b20e2075 | 144 | void welcome() |
2016110307 | 4:ed68b20e2075 | 145 | { |
2016110307 | 4:ed68b20e2075 | 146 | lcd.printString(" Flappy Bird ",0,1); |
2016110307 | 4:ed68b20e2075 | 147 | lcd.printString(" Press Start ",0,4); |
2016110307 | 4:ed68b20e2075 | 148 | lcd.refresh(); |
2016110307 | 4:ed68b20e2075 | 149 | while ( pad.check_event(Gamepad::START_PRESSED) == false) { |
2016110307 | 4:ed68b20e2075 | 150 | pad.leds_on(); |
2016110307 | 4:ed68b20e2075 | 151 | wait(0.1); |
2016110307 | 4:ed68b20e2075 | 152 | pad.leds_off(); |
2016110307 | 4:ed68b20e2075 | 153 | wait(0.1); |
2016110307 | 4:ed68b20e2075 | 154 | } |
2016110307 | 4:ed68b20e2075 | 155 | wait(0.2); |
2016110307 | 4:ed68b20e2075 | 156 | } |
2016110307 | 4:ed68b20e2075 | 157 | |
2016110307 | 4:ed68b20e2075 | 158 | void restart() |
2016110307 | 4:ed68b20e2075 | 159 | { |
2016110307 | 4:ed68b20e2075 | 160 | bird.background(lcd); |
2016110307 | 4:ed68b20e2075 | 161 | lcd.clear(); |
2016110307 | 4:ed68b20e2075 | 162 | high_score = cylinder.get_highest_score(a); |
2016110307 | 4:ed68b20e2075 | 163 | a = high_score; |
2016110307 | 4:ed68b20e2075 | 164 | cylinder.print_yourscore(lcd); |
2016110307 | 4:ed68b20e2075 | 165 | char buffer1[14]; |
2016110307 | 4:ed68b20e2075 | 166 | sprintf(buffer1,"HighScore = %2d ",high_score); |
2016110307 | 4:ed68b20e2075 | 167 | lcd.printString(buffer1,0,0); |
2016110307 | 4:ed68b20e2075 | 168 | lcd.printString(" Press Start ",0,3); |
2016110307 | 4:ed68b20e2075 | 169 | lcd.printString(" to continue ",0,4); |
2016110307 | 4:ed68b20e2075 | 170 | |
2016110307 | 4:ed68b20e2075 | 171 | lcd.refresh(); |
2016110307 | 4:ed68b20e2075 | 172 | while ( pad.check_event(Gamepad::START_PRESSED) == false) { |
2016110307 | 4:ed68b20e2075 | 173 | pad.leds_on(); |
2016110307 | 4:ed68b20e2075 | 174 | wait(0.1); |
2016110307 | 4:ed68b20e2075 | 175 | pad.leds_off(); |
2016110307 | 4:ed68b20e2075 | 176 | wait(0.1); |
2016110307 | 4:ed68b20e2075 | 177 | } |
2016110307 | 4:ed68b20e2075 | 178 | wait(0.2); |
2016110307 | 4:ed68b20e2075 | 179 | cylinder.select(lcd,pad); |
2016110307 | 4:ed68b20e2075 | 180 | } |
2016110307 | 4:ed68b20e2075 | 181 | @endcode |
2016110307 | 4:ed68b20e2075 | 182 | */ |
2016110307 | 4:ed68b20e2075 | 183 | |
2016110307 | 0:97418ec4c37d | 184 | class Cylinder { |
2016110307 | 0:97418ec4c37d | 185 | public: |
2016110307 | 4:ed68b20e2075 | 186 | |
2016110307 | 4:ed68b20e2075 | 187 | /** |
2016110307 | 4:ed68b20e2075 | 188 | *@brief Initialise all the parameters of the barrier |
2016110307 | 4:ed68b20e2075 | 189 | */ |
2016110307 | 0:97418ec4c37d | 190 | void init(); |
2016110307 | 4:ed68b20e2075 | 191 | |
2016110307 | 4:ed68b20e2075 | 192 | /** |
2016110307 | 4:ed68b20e2075 | 193 | *@brief Draw two selections |
2016110307 | 4:ed68b20e2075 | 194 | *@param lcd, pad |
2016110307 | 4:ed68b20e2075 | 195 | *@details Use this method to use the functions within N5110.h and Gamepad.h file |
2016110307 | 4:ed68b20e2075 | 196 | */ |
2016110307 | 1:85ab0d979b57 | 197 | void select(N5110 &lcd, Gamepad &pad); |
2016110307 | 4:ed68b20e2075 | 198 | |
2016110307 | 4:ed68b20e2075 | 199 | /** |
2016110307 | 4:ed68b20e2075 | 200 | *@brief Draw the barriers |
2016110307 | 4:ed68b20e2075 | 201 | *@param lcd |
2016110307 | 4:ed68b20e2075 | 202 | *@details Use this method to use the functions within N5110.h file |
2016110307 | 4:ed68b20e2075 | 203 | */ |
2016110307 | 0:97418ec4c37d | 204 | void draw(N5110 &lcd); |
2016110307 | 4:ed68b20e2075 | 205 | |
2016110307 | 4:ed68b20e2075 | 206 | /** |
2016110307 | 5:17821d72fe85 | 207 | *@brief update the position date of the barrier |
2016110307 | 4:ed68b20e2075 | 208 | */ |
2016110307 | 0:97418ec4c37d | 209 | void update(); |
2016110307 | 4:ed68b20e2075 | 210 | |
2016110307 | 4:ed68b20e2075 | 211 | /** |
2016110307 | 4:ed68b20e2075 | 212 | *@brief check the specific situation |
2016110307 | 4:ed68b20e2075 | 213 | */ |
2016110307 | 0:97418ec4c37d | 214 | void check(); |
2016110307 | 4:ed68b20e2075 | 215 | |
2016110307 | 4:ed68b20e2075 | 216 | /** |
2016110307 | 4:ed68b20e2075 | 217 | *@brief print score during playing |
2016110307 | 4:ed68b20e2075 | 218 | *@param lcd |
2016110307 | 4:ed68b20e2075 | 219 | *@details Use this method to use the functions within N5110.h file |
2016110307 | 4:ed68b20e2075 | 220 | */ |
2016110307 | 0:97418ec4c37d | 221 | void print_score(N5110 &lcd); |
2016110307 | 4:ed68b20e2075 | 222 | |
2016110307 | 4:ed68b20e2075 | 223 | /** |
2016110307 | 4:ed68b20e2075 | 224 | *@brief print score when game over |
2016110307 | 4:ed68b20e2075 | 225 | *@param lcd |
2016110307 | 4:ed68b20e2075 | 226 | *@details Use this method to use the functions within N5110.h file |
2016110307 | 4:ed68b20e2075 | 227 | */ |
2016110307 | 0:97418ec4c37d | 228 | void print_yourscore(N5110 &lcd); |
2016110307 | 4:ed68b20e2075 | 229 | |
2016110307 | 4:ed68b20e2075 | 230 | /** |
2016110307 | 4:ed68b20e2075 | 231 | *@brief get highest score |
2016110307 | 4:ed68b20e2075 | 232 | *@param high_score |
2016110307 | 4:ed68b20e2075 | 233 | *@returns The highest score |
2016110307 | 4:ed68b20e2075 | 234 | */ |
2016110307 | 0:97418ec4c37d | 235 | int get_highest_score(int high_score); |
2016110307 | 4:ed68b20e2075 | 236 | |
2016110307 | 4:ed68b20e2075 | 237 | /** |
2016110307 | 4:ed68b20e2075 | 238 | *@brief get certain data of barriers |
2016110307 | 4:ed68b20e2075 | 239 | *@returns a struct contains position data of barriers |
2016110307 | 4:ed68b20e2075 | 240 | */ |
2016110307 | 0:97418ec4c37d | 241 | Data get_data(); |
2016110307 | 0:97418ec4c37d | 242 | |
2016110307 | 0:97418ec4c37d | 243 | |
2016110307 | 0:97418ec4c37d | 244 | |
2016110307 | 0:97418ec4c37d | 245 | |
2016110307 | 0:97418ec4c37d | 246 | private: |
2016110307 | 0:97418ec4c37d | 247 | int _a; |
2016110307 | 0:97418ec4c37d | 248 | int _b; |
2016110307 | 0:97418ec4c37d | 249 | int _c; |
2016110307 | 0:97418ec4c37d | 250 | int _x1; |
2016110307 | 0:97418ec4c37d | 251 | int _x2; |
2016110307 | 0:97418ec4c37d | 252 | int _x3; |
2016110307 | 0:97418ec4c37d | 253 | int _height1; |
2016110307 | 0:97418ec4c37d | 254 | int _height2; |
2016110307 | 0:97418ec4c37d | 255 | int _height3; |
2016110307 | 0:97418ec4c37d | 256 | int _gap1; |
2016110307 | 0:97418ec4c37d | 257 | int _gap2; |
2016110307 | 0:97418ec4c37d | 258 | int _gap3; |
2016110307 | 0:97418ec4c37d | 259 | int _score; |
2016110307 | 0:97418ec4c37d | 260 | int _yourscore; |
2016110307 | 1:85ab0d979b57 | 261 | int _state; |
2016110307 | 1:85ab0d979b57 | 262 | int _speed; |
2016110307 | 1:85ab0d979b57 | 263 | Bird _bird; |
2016110307 | 0:97418ec4c37d | 264 | Data _data; |
2016110307 | 0:97418ec4c37d | 265 | |
2016110307 | 1:85ab0d979b57 | 266 | |
2016110307 | 0:97418ec4c37d | 267 | }; |
2016110307 | 0:97418ec4c37d | 268 | |
2016110307 | 0:97418ec4c37d | 269 | #endif |
2016110307 | 0:97418ec4c37d | 270 | |
2016110307 | 0:97418ec4c37d | 271 |