ELEC2645 (2017/18) / Mbed OS el16ajm
Committer:
Andrew_M
Date:
Sun Apr 29 14:59:14 2018 +0000
Revision:
4:6353f829c56c
Parent:
3:6253a2d374fa
Child:
5:a3a9e0417e04
Snake now has a tail that follows it, max length 100

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Andrew_M 1:a14415de3ad5 1 #include "Snek.h"
Andrew_M 1:a14415de3ad5 2
Andrew_M 1:a14415de3ad5 3 // nothing doing in the constructor and destructor
Andrew_M 1:a14415de3ad5 4 Snek::Snek()
Andrew_M 1:a14415de3ad5 5 {
Andrew_M 1:a14415de3ad5 6
Andrew_M 1:a14415de3ad5 7 }
Andrew_M 1:a14415de3ad5 8
Andrew_M 1:a14415de3ad5 9 Snek::~Snek()
Andrew_M 1:a14415de3ad5 10 {
Andrew_M 1:a14415de3ad5 11
Andrew_M 1:a14415de3ad5 12 }
Andrew_M 1:a14415de3ad5 13
Andrew_M 2:9ca5e1c221c3 14 void Snek::init(int x, int y)
Andrew_M 1:a14415de3ad5 15 {
Andrew_M 1:a14415de3ad5 16 //Inital values for variables
Andrew_M 3:6253a2d374fa 17 printf ("floats: %i %i \n", _x, _y);
Andrew_M 4:6353f829c56c 18 _length = 3;
Andrew_M 4:6353f829c56c 19
Andrew_M 4:6353f829c56c 20 for (int i = 0; i < _length; i++) {
Andrew_M 4:6353f829c56c 21 _x[i] = x;
Andrew_M 4:6353f829c56c 22 _y[i] = y;
Andrew_M 4:6353f829c56c 23 }
Andrew_M 1:a14415de3ad5 24 }
Andrew_M 1:a14415de3ad5 25
Andrew_M 2:9ca5e1c221c3 26 void Snek::update(Direction d)
Andrew_M 2:9ca5e1c221c3 27 {
Andrew_M 3:6253a2d374fa 28 if (d == N) {
Andrew_M 4:6353f829c56c 29 _y[0] -= 1;
Andrew_M 3:6253a2d374fa 30 _oldDirection = 'N';
Andrew_M 3:6253a2d374fa 31 } else if (d == S) {
Andrew_M 4:6353f829c56c 32 _y[0] += 1;
Andrew_M 3:6253a2d374fa 33 _oldDirection = 'S';
Andrew_M 3:6253a2d374fa 34 } else if (d == E) {
Andrew_M 4:6353f829c56c 35 _x[0] += 1;
Andrew_M 3:6253a2d374fa 36 _oldDirection = 'E';
Andrew_M 3:6253a2d374fa 37 } else if (d == W) {
Andrew_M 4:6353f829c56c 38 _x[0] -= 1;
Andrew_M 3:6253a2d374fa 39 _oldDirection = 'W';
Andrew_M 3:6253a2d374fa 40 } else {
Andrew_M 3:6253a2d374fa 41 if (_oldDirection == 'N') {
Andrew_M 4:6353f829c56c 42 _y[0] -= 1;
Andrew_M 3:6253a2d374fa 43 } else if (_oldDirection == 'S') {
Andrew_M 4:6353f829c56c 44 _y[0] += 1;
Andrew_M 3:6253a2d374fa 45 } else if (_oldDirection == 'E') {
Andrew_M 4:6353f829c56c 46 _x[0] += 1;
Andrew_M 3:6253a2d374fa 47 } else if (_oldDirection == 'W') {
Andrew_M 4:6353f829c56c 48 _x[0] -= 1;
Andrew_M 3:6253a2d374fa 49 }
Andrew_M 3:6253a2d374fa 50 }
Andrew_M 4:6353f829c56c 51
Andrew_M 4:6353f829c56c 52 for (int i = _length; i >= 1; i--) {
Andrew_M 4:6353f829c56c 53 _x[i] = _x[i-1];
Andrew_M 4:6353f829c56c 54 _y[i] = _y[i-1];
Andrew_M 4:6353f829c56c 55 }
Andrew_M 2:9ca5e1c221c3 56 }
Andrew_M 2:9ca5e1c221c3 57
Andrew_M 4:6353f829c56c 58 int Snek::getX(int ref)
Andrew_M 1:a14415de3ad5 59 {
Andrew_M 4:6353f829c56c 60 return _x[ref];
Andrew_M 2:9ca5e1c221c3 61 }
Andrew_M 1:a14415de3ad5 62
Andrew_M 4:6353f829c56c 63 int Snek::getY(int ref)
Andrew_M 2:9ca5e1c221c3 64 {
Andrew_M 4:6353f829c56c 65 return _y[ref];
Andrew_M 2:9ca5e1c221c3 66 }
Andrew_M 4:6353f829c56c 67
Andrew_M 4:6353f829c56c 68 int Snek::getLength()
Andrew_M 4:6353f829c56c 69 {
Andrew_M 4:6353f829c56c 70 return _length;
Andrew_M 4:6353f829c56c 71 }