ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el18lg

Dependencies:   mbed

Committer:
el18lg
Date:
Wed May 27 16:14:56 2020 +0000
Revision:
3:beb0cc405b1e
Child:
4:748b3e0062f6
Snake movement;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el18lg 3:beb0cc405b1e 1 #include "Head.h"
el18lg 3:beb0cc405b1e 2
el18lg 3:beb0cc405b1e 3 // nothing doing in the constructor and destructor
el18lg 3:beb0cc405b1e 4 Head::Head()
el18lg 3:beb0cc405b1e 5 {
el18lg 3:beb0cc405b1e 6
el18lg 3:beb0cc405b1e 7 }
el18lg 3:beb0cc405b1e 8
el18lg 3:beb0cc405b1e 9 Head::~Head()
el18lg 3:beb0cc405b1e 10 {
el18lg 3:beb0cc405b1e 11
el18lg 3:beb0cc405b1e 12 }
el18lg 3:beb0cc405b1e 13
el18lg 3:beb0cc405b1e 14 void Head::init(int length, int speed)
el18lg 3:beb0cc405b1e 15 {
el18lg 3:beb0cc405b1e 16
el18lg 3:beb0cc405b1e 17 _length = length;
el18lg 3:beb0cc405b1e 18 _speed = speed;
el18lg 3:beb0cc405b1e 19 srand(time(NULL));
el18lg 3:beb0cc405b1e 20 _x = WIDTH/2 - _length/2; // snake spawns in random position
el18lg 3:beb0cc405b1e 21 _y = HEIGHT/2 - _length/2;
el18lg 3:beb0cc405b1e 22 int direction = N; // set the direction of snake to north
el18lg 3:beb0cc405b1e 23
el18lg 3:beb0cc405b1e 24 }
el18lg 3:beb0cc405b1e 25 void Head::draw(N5110 &lcd) {
el18lg 3:beb0cc405b1e 26
el18lg 3:beb0cc405b1e 27 lcd.drawCircle(_x,_y,_length,FILL_BLACK);
el18lg 3:beb0cc405b1e 28 }
el18lg 3:beb0cc405b1e 29
el18lg 3:beb0cc405b1e 30
el18lg 3:beb0cc405b1e 31 void Head::update(Direction d)
el18lg 3:beb0cc405b1e 32 {
el18lg 3:beb0cc405b1e 33 // update y value depending on direction of movement
el18lg 3:beb0cc405b1e 34 // North is decrement as origin is at the top-left so decreasing moves up
el18lg 3:beb0cc405b1e 35
el18lg 3:beb0cc405b1e 36 if (pad.X_pressed()){
el18lg 3:beb0cc405b1e 37 d == N;
el18lg 3:beb0cc405b1e 38 }
el18lg 3:beb0cc405b1e 39 if (pad.B_pressed()){
el18lg 3:beb0cc405b1e 40 d == S;
el18lg 3:beb0cc405b1e 41 }
el18lg 3:beb0cc405b1e 42 if (pad.Y_pressed()){
el18lg 3:beb0cc405b1e 43 d == W;
el18lg 3:beb0cc405b1e 44 }
el18lg 3:beb0cc405b1e 45 if (pad.A_pressed()){
el18lg 3:beb0cc405b1e 46 d == E;
el18lg 3:beb0cc405b1e 47 }
el18lg 3:beb0cc405b1e 48 }
el18lg 3:beb0cc405b1e 49
el18lg 3:beb0cc405b1e 50
el18lg 3:beb0cc405b1e 51 // The head changes to the new position
el18lg 3:beb0cc405b1e 52
el18lg 3:beb0cc405b1e 53
el18lg 3:beb0cc405b1e 54
el18lg 3:beb0cc405b1e 55 Vector2D Head::get_pos() {
el18lg 3:beb0cc405b1e 56 Vector2D pos = {_x,_y};
el18lg 3:beb0cc405b1e 57 return pos;
el18lg 3:beb0cc405b1e 58 }