ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el18lg

Dependencies:   mbed

Committer:
el18lg
Date:
Wed May 27 20:57:21 2020 +0000
Revision:
4:748b3e0062f6
Parent:
3:beb0cc405b1e
Child:
5:e0f08e8022de
Started to do the body of the snake

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 4:748b3e0062f6 14 void Head::init(int x, int y, int length, int speed)
el18lg 3:beb0cc405b1e 15 {
el18lg 4:748b3e0062f6 16 _x = x;
el18lg 4:748b3e0062f6 17 _y = y;
el18lg 3:beb0cc405b1e 18 _length = length;
el18lg 3:beb0cc405b1e 19 _speed = speed;
el18lg 3:beb0cc405b1e 20 srand(time(NULL));
el18lg 3:beb0cc405b1e 21 _x = WIDTH/2 - _length/2; // snake spawns in random position
el18lg 3:beb0cc405b1e 22 _y = HEIGHT/2 - _length/2;
el18lg 4:748b3e0062f6 23 // set the direction of snake to north
el18lg 3:beb0cc405b1e 24
el18lg 3:beb0cc405b1e 25 }
el18lg 3:beb0cc405b1e 26 void Head::draw(N5110 &lcd) {
el18lg 3:beb0cc405b1e 27
el18lg 3:beb0cc405b1e 28 lcd.drawCircle(_x,_y,_length,FILL_BLACK);
el18lg 3:beb0cc405b1e 29 }
el18lg 3:beb0cc405b1e 30
el18lg 3:beb0cc405b1e 31
el18lg 4:748b3e0062f6 32 void Head::update(Direction d, float mag)
el18lg 3:beb0cc405b1e 33 {
el18lg 3:beb0cc405b1e 34 // update y value depending on direction of movement
el18lg 3:beb0cc405b1e 35 // North is decrement as origin is at the top-left so decreasing moves up
el18lg 4:748b3e0062f6 36 _speed = int(mag*10.0f);
el18lg 4:748b3e0062f6 37 if (d == N && d != S){
el18lg 4:748b3e0062f6 38 _y -= _speed;
el18lg 4:748b3e0062f6 39
el18lg 3:beb0cc405b1e 40 }
el18lg 4:748b3e0062f6 41 if (d == S && d != N){
el18lg 4:748b3e0062f6 42 _y += _speed;
el18lg 4:748b3e0062f6 43
el18lg 4:748b3e0062f6 44 }
el18lg 4:748b3e0062f6 45 if (d == W && d != E){
el18lg 4:748b3e0062f6 46
el18lg 4:748b3e0062f6 47 _x -= _speed;
el18lg 3:beb0cc405b1e 48 }
el18lg 4:748b3e0062f6 49 if (d == E && d != W){
el18lg 4:748b3e0062f6 50
el18lg 4:748b3e0062f6 51 _x += _speed;
el18lg 3:beb0cc405b1e 52 }
el18lg 4:748b3e0062f6 53
el18lg 4:748b3e0062f6 54 switch(d){
el18lg 4:748b3e0062f6 55 case S:
el18lg 4:748b3e0062f6 56 _y;
el18lg 4:748b3e0062f6 57 break;
el18lg 4:748b3e0062f6 58
el18lg 4:748b3e0062f6 59 case N:
el18lg 4:748b3e0062f6 60 _y = 1;
el18lg 4:748b3e0062f6 61 break;
el18lg 4:748b3e0062f6 62
el18lg 4:748b3e0062f6 63 case W:
el18lg 4:748b3e0062f6 64 _x = 1;
el18lg 4:748b3e0062f6 65 break;
el18lg 4:748b3e0062f6 66
el18lg 4:748b3e0062f6 67 case E:
el18lg 4:748b3e0062f6 68 _x = 1;
el18lg 4:748b3e0062f6 69 break;
el18lg 4:748b3e0062f6 70 }
el18lg 4:748b3e0062f6 71
el18lg 3:beb0cc405b1e 72 }
el18lg 3:beb0cc405b1e 73 // The head changes to the new position
el18lg 3:beb0cc405b1e 74
el18lg 3:beb0cc405b1e 75
el18lg 3:beb0cc405b1e 76
el18lg 3:beb0cc405b1e 77 Vector2D Head::get_pos() {
el18lg 3:beb0cc405b1e 78 Vector2D pos = {_x,_y};
el18lg 3:beb0cc405b1e 79 return pos;
el18lg 3:beb0cc405b1e 80 }