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.
body/body.cpp@2:430dcf420840, 2020-06-05 (annotated)
- Committer:
- jahanzebkhan
- Date:
- Fri Jun 05 22:51:49 2020 +0000
- Revision:
- 2:430dcf420840
Final Submission. I have read and agreed with Statement of Academic integrity.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jahanzebkhan | 2:430dcf420840 | 1 | #include "body.h" |
jahanzebkhan | 2:430dcf420840 | 2 | |
jahanzebkhan | 2:430dcf420840 | 3 | Body::Body() |
jahanzebkhan | 2:430dcf420840 | 4 | { |
jahanzebkhan | 2:430dcf420840 | 5 | } |
jahanzebkhan | 2:430dcf420840 | 6 | Body::~Body() |
jahanzebkhan | 2:430dcf420840 | 7 | { |
jahanzebkhan | 2:430dcf420840 | 8 | } |
jahanzebkhan | 2:430dcf420840 | 9 | |
jahanzebkhan | 2:430dcf420840 | 10 | void Body::init() |
jahanzebkhan | 2:430dcf420840 | 11 | { |
jahanzebkhan | 2:430dcf420840 | 12 | sx0 = 12; |
jahanzebkhan | 2:430dcf420840 | 13 | sx1 = 13; |
jahanzebkhan | 2:430dcf420840 | 14 | sx2 = 14; |
jahanzebkhan | 2:430dcf420840 | 15 | sx3 = 15; |
jahanzebkhan | 2:430dcf420840 | 16 | sx4 = 16; |
jahanzebkhan | 2:430dcf420840 | 17 | sx5 = 17; |
jahanzebkhan | 2:430dcf420840 | 18 | sx6 = 18; |
jahanzebkhan | 2:430dcf420840 | 19 | sx8 = 19; |
jahanzebkhan | 2:430dcf420840 | 20 | sx9 = 20; |
jahanzebkhan | 2:430dcf420840 | 21 | |
jahanzebkhan | 2:430dcf420840 | 22 | sy0 = 6; |
jahanzebkhan | 2:430dcf420840 | 23 | sy1 = 6; |
jahanzebkhan | 2:430dcf420840 | 24 | sy2 = 6; |
jahanzebkhan | 2:430dcf420840 | 25 | sy3 = 6; |
jahanzebkhan | 2:430dcf420840 | 26 | sy4 = 6; |
jahanzebkhan | 2:430dcf420840 | 27 | sy5 = 6; |
jahanzebkhan | 2:430dcf420840 | 28 | sy6 = 6; |
jahanzebkhan | 2:430dcf420840 | 29 | sy7 = 6; |
jahanzebkhan | 2:430dcf420840 | 30 | sy8 = 6; |
jahanzebkhan | 2:430dcf420840 | 31 | sy9 = 6; |
jahanzebkhan | 2:430dcf420840 | 32 | |
jahanzebkhan | 2:430dcf420840 | 33 | score = 0; |
jahanzebkhan | 2:430dcf420840 | 34 | endgame = false; |
jahanzebkhan | 2:430dcf420840 | 35 | input_check = Button_right; |
jahanzebkhan | 2:430dcf420840 | 36 | } |
jahanzebkhan | 2:430dcf420840 | 37 | |
jahanzebkhan | 2:430dcf420840 | 38 | void Body::game_end(N5110 &lcd){ |
jahanzebkhan | 2:430dcf420840 | 39 | if (21 < sx0 < 63){/**If snake hits vertical line*/ |
jahanzebkhan | 2:430dcf420840 | 40 | if (sy0 == 24){ |
jahanzebkhan | 2:430dcf420840 | 41 | endgame = true; |
jahanzebkhan | 2:430dcf420840 | 42 | } |
jahanzebkhan | 2:430dcf420840 | 43 | } |
jahanzebkhan | 2:430dcf420840 | 44 | if (12 < sy0 < 36){/**if snake hits horizontal line*/ |
jahanzebkhan | 2:430dcf420840 | 45 | if (sx0 == 42){ |
jahanzebkhan | 2:430dcf420840 | 46 | endgame = true; |
jahanzebkhan | 2:430dcf420840 | 47 | } |
jahanzebkhan | 2:430dcf420840 | 48 | } |
jahanzebkhan | 2:430dcf420840 | 49 | if ((sx0 == sx1 && sy0 == sy1) || (sx0 == sx2 && sy0 == sy2) || (sx0 == sx3 && sy0 == sy3) || (sx0 == sx4 && sy0 == sy4) || (sx0 == sx5 && sy0 == sy5) || (sx0 == sx6 && sy0 == sy6) || (sx0 == sx7 && sy0 == sy7) || (sx0 == sx8 && sy0 == sy8) || (sx0 == sx9 && sy0 == sy9)) |
jahanzebkhan | 2:430dcf420840 | 50 | { |
jahanzebkhan | 2:430dcf420840 | 51 | endgame = true; |
jahanzebkhan | 2:430dcf420840 | 52 | } |
jahanzebkhan | 2:430dcf420840 | 53 | } |
jahanzebkhan | 2:430dcf420840 | 54 | |
jahanzebkhan | 2:430dcf420840 | 55 | void Body::visual(N5110 &lcd, Gamepad &pad, Food &food) |
jahanzebkhan | 2:430dcf420840 | 56 | { |
jahanzebkhan | 2:430dcf420840 | 57 | lcd.clear(); |
jahanzebkhan | 2:430dcf420840 | 58 | |
jahanzebkhan | 2:430dcf420840 | 59 | char buffer[12]; |
jahanzebkhan | 2:430dcf420840 | 60 | sprintf(buffer,"Score = %2d", score); |
jahanzebkhan | 2:430dcf420840 | 61 | lcd.printString(buffer,0,1); |
jahanzebkhan | 2:430dcf420840 | 62 | |
jahanzebkhan | 2:430dcf420840 | 63 | lcd.setPixel(food.fo_x, food.fo_y, true); |
jahanzebkhan | 2:430dcf420840 | 64 | |
jahanzebkhan | 2:430dcf420840 | 65 | lcd.drawLine(21,24,63,24,1); |
jahanzebkhan | 2:430dcf420840 | 66 | lcd.drawLine(42,12,42,36,1); |
jahanzebkhan | 2:430dcf420840 | 67 | |
jahanzebkhan | 2:430dcf420840 | 68 | lcd.setPixel(sx0, sy0, true); |
jahanzebkhan | 2:430dcf420840 | 69 | lcd.setPixel(sx1, sy1, true); |
jahanzebkhan | 2:430dcf420840 | 70 | lcd.setPixel(sx2, sy2, true); |
jahanzebkhan | 2:430dcf420840 | 71 | lcd.setPixel(sx3, sy3, true); |
jahanzebkhan | 2:430dcf420840 | 72 | lcd.setPixel(sx4, sy4, true); |
jahanzebkhan | 2:430dcf420840 | 73 | lcd.setPixel(sx5, sy5, true); |
jahanzebkhan | 2:430dcf420840 | 74 | lcd.setPixel(sx6, sy6, true); |
jahanzebkhan | 2:430dcf420840 | 75 | lcd.setPixel(sx7, sy7, true); |
jahanzebkhan | 2:430dcf420840 | 76 | lcd.setPixel(sx8, sy8, true); |
jahanzebkhan | 2:430dcf420840 | 77 | lcd.setPixel(sx9, sy9, true); |
jahanzebkhan | 2:430dcf420840 | 78 | |
jahanzebkhan | 2:430dcf420840 | 79 | if (endgame == true){ |
jahanzebkhan | 2:430dcf420840 | 80 | lcd.clear(); |
jahanzebkhan | 2:430dcf420840 | 81 | pad.tone(1500.0,1.0); |
jahanzebkhan | 2:430dcf420840 | 82 | |
jahanzebkhan | 2:430dcf420840 | 83 | lcd.drawRect(10,5,64,38,FILL_TRANSPARENT); |
jahanzebkhan | 2:430dcf420840 | 84 | lcd.printString("YOU DIED", 21, 2); |
jahanzebkhan | 2:430dcf420840 | 85 | char buffer2[12]; |
jahanzebkhan | 2:430dcf420840 | 86 | sprintf(buffer2,"you got %2d", score); |
jahanzebkhan | 2:430dcf420840 | 87 | } |
jahanzebkhan | 2:430dcf420840 | 88 | |
jahanzebkhan | 2:430dcf420840 | 89 | lcd.refresh(); |
jahanzebkhan | 2:430dcf420840 | 90 | } |
jahanzebkhan | 2:430dcf420840 | 91 | |
jahanzebkhan | 2:430dcf420840 | 92 | void Body::user_input(Gamepad &pad) |
jahanzebkhan | 2:430dcf420840 | 93 | { |
jahanzebkhan | 2:430dcf420840 | 94 | Input input = input_check; |
jahanzebkhan | 2:430dcf420840 | 95 | |
jahanzebkhan | 2:430dcf420840 | 96 | if(input != Button_left){ |
jahanzebkhan | 2:430dcf420840 | 97 | if(pad.A_pressed()){ |
jahanzebkhan | 2:430dcf420840 | 98 | input_check = Button_right; |
jahanzebkhan | 2:430dcf420840 | 99 | } |
jahanzebkhan | 2:430dcf420840 | 100 | } |
jahanzebkhan | 2:430dcf420840 | 101 | if(input != Button_right){ |
jahanzebkhan | 2:430dcf420840 | 102 | if(pad.Y_pressed()){ |
jahanzebkhan | 2:430dcf420840 | 103 | input_check = Button_left; |
jahanzebkhan | 2:430dcf420840 | 104 | } |
jahanzebkhan | 2:430dcf420840 | 105 | } |
jahanzebkhan | 2:430dcf420840 | 106 | if(input != Button_top){ |
jahanzebkhan | 2:430dcf420840 | 107 | if(pad.B_pressed()){ |
jahanzebkhan | 2:430dcf420840 | 108 | input_check = Button_bottom; |
jahanzebkhan | 2:430dcf420840 | 109 | } |
jahanzebkhan | 2:430dcf420840 | 110 | } |
jahanzebkhan | 2:430dcf420840 | 111 | if(input != Button_bottom){ |
jahanzebkhan | 2:430dcf420840 | 112 | if(pad.X_pressed()){ |
jahanzebkhan | 2:430dcf420840 | 113 | input_check = Button_top; |
jahanzebkhan | 2:430dcf420840 | 114 | } |
jahanzebkhan | 2:430dcf420840 | 115 | } |
jahanzebkhan | 2:430dcf420840 | 116 | else{ |
jahanzebkhan | 2:430dcf420840 | 117 | input_check = input_check; |
jahanzebkhan | 2:430dcf420840 | 118 | } |
jahanzebkhan | 2:430dcf420840 | 119 | } |
jahanzebkhan | 2:430dcf420840 | 120 | |
jahanzebkhan | 2:430dcf420840 | 121 | bool Body::endgame_check() |
jahanzebkhan | 2:430dcf420840 | 122 | { |
jahanzebkhan | 2:430dcf420840 | 123 | return endgame; |
jahanzebkhan | 2:430dcf420840 | 124 | } |
jahanzebkhan | 2:430dcf420840 | 125 | |
jahanzebkhan | 2:430dcf420840 | 126 | void Body::food_eaten(N5110 &lcd, Gamepad &pad, Food &food) |
jahanzebkhan | 2:430dcf420840 | 127 | { |
jahanzebkhan | 2:430dcf420840 | 128 | if ((sx0 == food.fo_x) && (sy0 == food.fo_y)) |
jahanzebkhan | 2:430dcf420840 | 129 | { |
jahanzebkhan | 2:430dcf420840 | 130 | score = score + 1; |
jahanzebkhan | 2:430dcf420840 | 131 | food.chng_food = true; |
jahanzebkhan | 2:430dcf420840 | 132 | pad.led(1,1); |
jahanzebkhan | 2:430dcf420840 | 133 | wait(0.2); |
jahanzebkhan | 2:430dcf420840 | 134 | pad.led(2,1); |
jahanzebkhan | 2:430dcf420840 | 135 | wait(0.2); |
jahanzebkhan | 2:430dcf420840 | 136 | pad.led(3,1); |
jahanzebkhan | 2:430dcf420840 | 137 | wait(0.2); |
jahanzebkhan | 2:430dcf420840 | 138 | pad.led(4,1); |
jahanzebkhan | 2:430dcf420840 | 139 | wait(0.2); |
jahanzebkhan | 2:430dcf420840 | 140 | pad.led(5,1); |
jahanzebkhan | 2:430dcf420840 | 141 | wait(0.2); |
jahanzebkhan | 2:430dcf420840 | 142 | pad.led(6,1); |
jahanzebkhan | 2:430dcf420840 | 143 | wait(0.2); |
jahanzebkhan | 2:430dcf420840 | 144 | pad.led(1,0); |
jahanzebkhan | 2:430dcf420840 | 145 | wait(0.2); |
jahanzebkhan | 2:430dcf420840 | 146 | pad.led(2,0); |
jahanzebkhan | 2:430dcf420840 | 147 | wait(0.2); |
jahanzebkhan | 2:430dcf420840 | 148 | pad.led(3,0); |
jahanzebkhan | 2:430dcf420840 | 149 | wait(0.2); |
jahanzebkhan | 2:430dcf420840 | 150 | pad.led(4,0); |
jahanzebkhan | 2:430dcf420840 | 151 | wait(0.2); |
jahanzebkhan | 2:430dcf420840 | 152 | pad.led(5,0); |
jahanzebkhan | 2:430dcf420840 | 153 | wait(0.2); |
jahanzebkhan | 2:430dcf420840 | 154 | pad.led(6,0); |
jahanzebkhan | 2:430dcf420840 | 155 | } |
jahanzebkhan | 2:430dcf420840 | 156 | } |
jahanzebkhan | 2:430dcf420840 | 157 | |
jahanzebkhan | 2:430dcf420840 | 158 | int Body::score_display() |
jahanzebkhan | 2:430dcf420840 | 159 | { |
jahanzebkhan | 2:430dcf420840 | 160 | return score; |
jahanzebkhan | 2:430dcf420840 | 161 | } |
jahanzebkhan | 2:430dcf420840 | 162 | |
jahanzebkhan | 2:430dcf420840 | 163 | void Body::movement(){ |
jahanzebkhan | 2:430dcf420840 | 164 | if (input_check == Button_top){ |
jahanzebkhan | 2:430dcf420840 | 165 | sx9 = sx8; |
jahanzebkhan | 2:430dcf420840 | 166 | sx8 = sx7; |
jahanzebkhan | 2:430dcf420840 | 167 | sx7 = sx6; |
jahanzebkhan | 2:430dcf420840 | 168 | sx6 = sx5; |
jahanzebkhan | 2:430dcf420840 | 169 | sx5 = sx4; |
jahanzebkhan | 2:430dcf420840 | 170 | sx4 = sx3; |
jahanzebkhan | 2:430dcf420840 | 171 | sx3 = sx2; |
jahanzebkhan | 2:430dcf420840 | 172 | sx2 = sx1; |
jahanzebkhan | 2:430dcf420840 | 173 | sx1 = sx0; |
jahanzebkhan | 2:430dcf420840 | 174 | sy9 = sy8; |
jahanzebkhan | 2:430dcf420840 | 175 | sy8 = sy7; |
jahanzebkhan | 2:430dcf420840 | 176 | sy7 = sy6; |
jahanzebkhan | 2:430dcf420840 | 177 | sy6 = sy5; |
jahanzebkhan | 2:430dcf420840 | 178 | sy5 = sy4; |
jahanzebkhan | 2:430dcf420840 | 179 | sy4 = sy3; |
jahanzebkhan | 2:430dcf420840 | 180 | sy2 = sy2; |
jahanzebkhan | 2:430dcf420840 | 181 | sy2 = sy1; |
jahanzebkhan | 2:430dcf420840 | 182 | sy1 = sy0; |
jahanzebkhan | 2:430dcf420840 | 183 | |
jahanzebkhan | 2:430dcf420840 | 184 | sx0 = sx0; |
jahanzebkhan | 2:430dcf420840 | 185 | sy0 = sy0 - 1; |
jahanzebkhan | 2:430dcf420840 | 186 | |
jahanzebkhan | 2:430dcf420840 | 187 | } |
jahanzebkhan | 2:430dcf420840 | 188 | if (input_check == Button_right){ |
jahanzebkhan | 2:430dcf420840 | 189 | sx9 = sx8; |
jahanzebkhan | 2:430dcf420840 | 190 | sx8 = sx7; |
jahanzebkhan | 2:430dcf420840 | 191 | sx7 = sx6; |
jahanzebkhan | 2:430dcf420840 | 192 | sx6 = sx5; |
jahanzebkhan | 2:430dcf420840 | 193 | sx5 = sx4; |
jahanzebkhan | 2:430dcf420840 | 194 | sx4 = sx3; |
jahanzebkhan | 2:430dcf420840 | 195 | sx3 = sx2; |
jahanzebkhan | 2:430dcf420840 | 196 | sx2 = sx1; |
jahanzebkhan | 2:430dcf420840 | 197 | sx1 = sx0; |
jahanzebkhan | 2:430dcf420840 | 198 | sy9 = sy8; |
jahanzebkhan | 2:430dcf420840 | 199 | sy8 = sy7; |
jahanzebkhan | 2:430dcf420840 | 200 | sy7 = sy6; |
jahanzebkhan | 2:430dcf420840 | 201 | sy6 = sy5; |
jahanzebkhan | 2:430dcf420840 | 202 | sy5 = sy4; |
jahanzebkhan | 2:430dcf420840 | 203 | sy4 = sy3; |
jahanzebkhan | 2:430dcf420840 | 204 | sy2 = sy2; |
jahanzebkhan | 2:430dcf420840 | 205 | sy2 = sy1; |
jahanzebkhan | 2:430dcf420840 | 206 | sy1 = sy0; |
jahanzebkhan | 2:430dcf420840 | 207 | |
jahanzebkhan | 2:430dcf420840 | 208 | sx0 = sx0 + 1; |
jahanzebkhan | 2:430dcf420840 | 209 | sy0 = sy0; |
jahanzebkhan | 2:430dcf420840 | 210 | } |
jahanzebkhan | 2:430dcf420840 | 211 | if (input_check == Button_bottom){ |
jahanzebkhan | 2:430dcf420840 | 212 | sx9 = sx8; |
jahanzebkhan | 2:430dcf420840 | 213 | sx8 = sx7; |
jahanzebkhan | 2:430dcf420840 | 214 | sx7 = sx6; |
jahanzebkhan | 2:430dcf420840 | 215 | sx6 = sx5; |
jahanzebkhan | 2:430dcf420840 | 216 | sx5 = sx4; |
jahanzebkhan | 2:430dcf420840 | 217 | sx4 = sx3; |
jahanzebkhan | 2:430dcf420840 | 218 | sx3 = sx2; |
jahanzebkhan | 2:430dcf420840 | 219 | sx2 = sx1; |
jahanzebkhan | 2:430dcf420840 | 220 | sx1 = sx0; |
jahanzebkhan | 2:430dcf420840 | 221 | sy9 = sy8; |
jahanzebkhan | 2:430dcf420840 | 222 | sy8 = sy7; |
jahanzebkhan | 2:430dcf420840 | 223 | sy7 = sy6; |
jahanzebkhan | 2:430dcf420840 | 224 | sy6 = sy5; |
jahanzebkhan | 2:430dcf420840 | 225 | sy5 = sy4; |
jahanzebkhan | 2:430dcf420840 | 226 | sy4 = sy3; |
jahanzebkhan | 2:430dcf420840 | 227 | sy2 = sy2; |
jahanzebkhan | 2:430dcf420840 | 228 | sy2 = sy1; |
jahanzebkhan | 2:430dcf420840 | 229 | sy1 = sy0; |
jahanzebkhan | 2:430dcf420840 | 230 | |
jahanzebkhan | 2:430dcf420840 | 231 | sx0 = sx0 + 1; |
jahanzebkhan | 2:430dcf420840 | 232 | sy0 = sy0; |
jahanzebkhan | 2:430dcf420840 | 233 | } |
jahanzebkhan | 2:430dcf420840 | 234 | if (input_check == Button_left){ |
jahanzebkhan | 2:430dcf420840 | 235 | sx9 = sx8; |
jahanzebkhan | 2:430dcf420840 | 236 | sx8 = sx7; |
jahanzebkhan | 2:430dcf420840 | 237 | sx7 = sx6; |
jahanzebkhan | 2:430dcf420840 | 238 | sx6 = sx5; |
jahanzebkhan | 2:430dcf420840 | 239 | sx5 = sx4; |
jahanzebkhan | 2:430dcf420840 | 240 | sx4 = sx3; |
jahanzebkhan | 2:430dcf420840 | 241 | sx3 = sx2; |
jahanzebkhan | 2:430dcf420840 | 242 | sx2 = sx1; |
jahanzebkhan | 2:430dcf420840 | 243 | sx1 = sx0; |
jahanzebkhan | 2:430dcf420840 | 244 | sy9 = sy8; |
jahanzebkhan | 2:430dcf420840 | 245 | sy8 = sy7; |
jahanzebkhan | 2:430dcf420840 | 246 | sy7 = sy6; |
jahanzebkhan | 2:430dcf420840 | 247 | sy6 = sy5; |
jahanzebkhan | 2:430dcf420840 | 248 | sy5 = sy4; |
jahanzebkhan | 2:430dcf420840 | 249 | sy4 = sy3; |
jahanzebkhan | 2:430dcf420840 | 250 | sy2 = sy2; |
jahanzebkhan | 2:430dcf420840 | 251 | sy2 = sy1; |
jahanzebkhan | 2:430dcf420840 | 252 | sy1 = sy0; |
jahanzebkhan | 2:430dcf420840 | 253 | |
jahanzebkhan | 2:430dcf420840 | 254 | sx0 = sx0 + 1; |
jahanzebkhan | 2:430dcf420840 | 255 | sy0 = sy0; |
jahanzebkhan | 2:430dcf420840 | 256 | } |
jahanzebkhan | 2:430dcf420840 | 257 | if (sy0 == 0) |
jahanzebkhan | 2:430dcf420840 | 258 | { |
jahanzebkhan | 2:430dcf420840 | 259 | sy0 = 41; |
jahanzebkhan | 2:430dcf420840 | 260 | } |
jahanzebkhan | 2:430dcf420840 | 261 | if (sy0 == 42) |
jahanzebkhan | 2:430dcf420840 | 262 | { |
jahanzebkhan | 2:430dcf420840 | 263 | sy0 = 1; |
jahanzebkhan | 2:430dcf420840 | 264 | } |
jahanzebkhan | 2:430dcf420840 | 265 | if (sx0 == 0) |
jahanzebkhan | 2:430dcf420840 | 266 | { |
jahanzebkhan | 2:430dcf420840 | 267 | sy0 = 83; |
jahanzebkhan | 2:430dcf420840 | 268 | } |
jahanzebkhan | 2:430dcf420840 | 269 | if (sx0 == 84) |
jahanzebkhan | 2:430dcf420840 | 270 | { |
jahanzebkhan | 2:430dcf420840 | 271 | sy0 = 1; |
jahanzebkhan | 2:430dcf420840 | 272 | } |
jahanzebkhan | 2:430dcf420840 | 273 | } |
jahanzebkhan | 2:430dcf420840 | 274 | |
jahanzebkhan | 2:430dcf420840 | 275 | void Body::trail_delete(N5110 &lcd) |
jahanzebkhan | 2:430dcf420840 | 276 | { |
jahanzebkhan | 2:430dcf420840 | 277 | lcd.setPixel(sx9,sy9,false); |
jahanzebkhan | 2:430dcf420840 | 278 | } |
jahanzebkhan | 2:430dcf420840 | 279 |