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.
Dependencies: mbed
move/Move.cpp
- Committer:
- jiaxinZHOU
- Date:
- 2019-05-08
- Revision:
- 0:07c4fef6c0af
- Child:
- 4:0f2006e9c8f8
File content as of revision 0:07c4fef6c0af:
#include "Move.h" SnakeBody body; Food food; Move::Move() { } Move::~Move() { } void Move::initial() { _x = 42; _y = 24; _length = 5; body._dir = 1;// 1 for E, 2 for S, 3 for W, 4 for N for (int i =0; i < _length ; i++){ body._xx[i]= _x - 8 + 2 * i; body._yy[i]= _y ; } food.a= 0; food.b= 0; } void Move::getfood(){ srand(time(NULL)); food.a = rand() % 40 +1; food.b = rand() % 22 +1; } void Move::updatebody() { //if (_d != CENTRE){ for (int i =0; i < _length - 1; i++){ body._xx[i] = body._xx[i + 1]; body._yy[i] = body._yy[i + 1]; } body._xx[_length - 1] = _x; body._yy[_length - 1] = _y; //} } void Move::onlcd(N5110 &lcd) { for (int i =0; i < _length; i++){ lcd.drawRect(body._xx[i],body._yy[i],2,2,FILL_BLACK); } lcd.drawRect(0,0,84,48,FILL_TRANSPARENT); lcd.drawRect(1,1,82,46,FILL_TRANSPARENT); lcd.drawRect(2*food.a, 2*food.b,2,2,FILL_BLACK); } void Move::update(Gamepad &pad) { _d = pad.get_direction(); if (_d == N && body._dir != 2) { body._dir = 4; //_y-= 2; } else if (_d == S && body._dir != 4) { body._dir = 2; //_y+= 2; } else if (_d == E && body._dir != 3) { body._dir = 1; //_x+= 2; } else if (_d == W && body._dir != 1) { body._dir = 3; //_x-= 2; } if (body._dir == 4){ _y-= 2; }else if (body._dir == 2) { _y+= 2; } else if (body._dir == 1) { _x+= 2; } else if (body._dir == 3) { _x-= 2; } } void Move::die(N5110 &lcd , Gamepad &pad) { if(body._xx[_length - 1] == 0 || body._xx[_length - 1] == 82 || body._yy[_length - 1] == 0 || body._yy[_length - 1] == 46) { lcd.init(); lcd.printString("Game Over",0,1); char buffer1[14]; sprintf(buffer1,"Your score:%2d",_length - 5); lcd.printString(buffer1,0,2); lcd.printString("Press Start", 0 , 3); lcd.printString("to restart", 0 , 4); lcd.refresh(); while ( pad.check_event(Gamepad::START_PRESSED) == false){ pad.leds_on(); wait(0.5); pad.leds_off(); wait(0.5); } initial(); getfood(); } for (int i =0; i < _length - 2; i++) { if (body._xx[_length - 1] == body._xx[i] && body._yy[_length - 1] == body._yy[i]) { lcd.init(); lcd.printString("Game Over",0,1); char buffer1[14]; sprintf(buffer1,"Your score:%2d",_length - 5); lcd.printString(buffer1,0,2); lcd.printString("Press Start", 0 , 3); lcd.printString("to restart", 0 , 4); lcd.refresh(); while ( pad.check_event(Gamepad::START_PRESSED) == false){ pad.leds_on(); wait(0.5); pad.leds_off(); wait(0.5); } initial(); getfood(); } } } void Move::eatfood() { if (body._xx[_length - 1] == 2 * food.a && body._yy[_length - 1] == 2 * food.b){ _length = _length + 1; body._xx[_length - 1] = 2 * food.a; body._yy[_length - 1] = 2 * food.b; getfood(); } }