Yang Meng / Mbed 2 deprecated 207_program

Dependencies:   mbed N5110

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?

UserRevisionLine numberNew 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