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.
Diff: body/body.cpp
- Revision:
- 2:430dcf420840
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/body/body.cpp Fri Jun 05 22:51:49 2020 +0000 @@ -0,0 +1,279 @@ +#include "body.h" + +Body::Body() +{ +} +Body::~Body() +{ +} + +void Body::init() +{ + sx0 = 12; + sx1 = 13; + sx2 = 14; + sx3 = 15; + sx4 = 16; + sx5 = 17; + sx6 = 18; + sx8 = 19; + sx9 = 20; + + sy0 = 6; + sy1 = 6; + sy2 = 6; + sy3 = 6; + sy4 = 6; + sy5 = 6; + sy6 = 6; + sy7 = 6; + sy8 = 6; + sy9 = 6; + + score = 0; + endgame = false; + input_check = Button_right; +} + +void Body::game_end(N5110 &lcd){ + if (21 < sx0 < 63){/**If snake hits vertical line*/ + if (sy0 == 24){ + endgame = true; + } + } + if (12 < sy0 < 36){/**if snake hits horizontal line*/ + if (sx0 == 42){ + endgame = true; + } + } + 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)) + { + endgame = true; + } +} + +void Body::visual(N5110 &lcd, Gamepad &pad, Food &food) +{ + lcd.clear(); + + char buffer[12]; + sprintf(buffer,"Score = %2d", score); + lcd.printString(buffer,0,1); + + lcd.setPixel(food.fo_x, food.fo_y, true); + + lcd.drawLine(21,24,63,24,1); + lcd.drawLine(42,12,42,36,1); + + lcd.setPixel(sx0, sy0, true); + lcd.setPixel(sx1, sy1, true); + lcd.setPixel(sx2, sy2, true); + lcd.setPixel(sx3, sy3, true); + lcd.setPixel(sx4, sy4, true); + lcd.setPixel(sx5, sy5, true); + lcd.setPixel(sx6, sy6, true); + lcd.setPixel(sx7, sy7, true); + lcd.setPixel(sx8, sy8, true); + lcd.setPixel(sx9, sy9, true); + + if (endgame == true){ + lcd.clear(); + pad.tone(1500.0,1.0); + + lcd.drawRect(10,5,64,38,FILL_TRANSPARENT); + lcd.printString("YOU DIED", 21, 2); + char buffer2[12]; + sprintf(buffer2,"you got %2d", score); + } + + lcd.refresh(); +} + +void Body::user_input(Gamepad &pad) +{ + Input input = input_check; + + if(input != Button_left){ + if(pad.A_pressed()){ + input_check = Button_right; + } + } + if(input != Button_right){ + if(pad.Y_pressed()){ + input_check = Button_left; + } + } + if(input != Button_top){ + if(pad.B_pressed()){ + input_check = Button_bottom; + } + } + if(input != Button_bottom){ + if(pad.X_pressed()){ + input_check = Button_top; + } + } + else{ + input_check = input_check; + } +} + +bool Body::endgame_check() +{ + return endgame; +} + +void Body::food_eaten(N5110 &lcd, Gamepad &pad, Food &food) +{ + if ((sx0 == food.fo_x) && (sy0 == food.fo_y)) + { + score = score + 1; + food.chng_food = true; + pad.led(1,1); + wait(0.2); + pad.led(2,1); + wait(0.2); + pad.led(3,1); + wait(0.2); + pad.led(4,1); + wait(0.2); + pad.led(5,1); + wait(0.2); + pad.led(6,1); + wait(0.2); + pad.led(1,0); + wait(0.2); + pad.led(2,0); + wait(0.2); + pad.led(3,0); + wait(0.2); + pad.led(4,0); + wait(0.2); + pad.led(5,0); + wait(0.2); + pad.led(6,0); + } +} + +int Body::score_display() +{ + return score; +} + +void Body::movement(){ + if (input_check == Button_top){ + sx9 = sx8; + sx8 = sx7; + sx7 = sx6; + sx6 = sx5; + sx5 = sx4; + sx4 = sx3; + sx3 = sx2; + sx2 = sx1; + sx1 = sx0; + sy9 = sy8; + sy8 = sy7; + sy7 = sy6; + sy6 = sy5; + sy5 = sy4; + sy4 = sy3; + sy2 = sy2; + sy2 = sy1; + sy1 = sy0; + + sx0 = sx0; + sy0 = sy0 - 1; + + } + if (input_check == Button_right){ + sx9 = sx8; + sx8 = sx7; + sx7 = sx6; + sx6 = sx5; + sx5 = sx4; + sx4 = sx3; + sx3 = sx2; + sx2 = sx1; + sx1 = sx0; + sy9 = sy8; + sy8 = sy7; + sy7 = sy6; + sy6 = sy5; + sy5 = sy4; + sy4 = sy3; + sy2 = sy2; + sy2 = sy1; + sy1 = sy0; + + sx0 = sx0 + 1; + sy0 = sy0; + } + if (input_check == Button_bottom){ + sx9 = sx8; + sx8 = sx7; + sx7 = sx6; + sx6 = sx5; + sx5 = sx4; + sx4 = sx3; + sx3 = sx2; + sx2 = sx1; + sx1 = sx0; + sy9 = sy8; + sy8 = sy7; + sy7 = sy6; + sy6 = sy5; + sy5 = sy4; + sy4 = sy3; + sy2 = sy2; + sy2 = sy1; + sy1 = sy0; + + sx0 = sx0 + 1; + sy0 = sy0; + } + if (input_check == Button_left){ + sx9 = sx8; + sx8 = sx7; + sx7 = sx6; + sx6 = sx5; + sx5 = sx4; + sx4 = sx3; + sx3 = sx2; + sx2 = sx1; + sx1 = sx0; + sy9 = sy8; + sy8 = sy7; + sy7 = sy6; + sy6 = sy5; + sy5 = sy4; + sy4 = sy3; + sy2 = sy2; + sy2 = sy1; + sy1 = sy0; + + sx0 = sx0 + 1; + sy0 = sy0; + } + if (sy0 == 0) + { + sy0 = 41; + } + if (sy0 == 42) + { + sy0 = 1; + } + if (sx0 == 0) + { + sy0 = 83; + } + if (sx0 == 84) + { + sy0 = 1; + } +} + + void Body::trail_delete(N5110 &lcd) + { + lcd.setPixel(sx9,sy9,false); +} + \ No newline at end of file