ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el17sdl_v2

Dependencies:   mbed

Committer:
sdlashmar
Date:
Wed May 06 11:35:18 2020 +0000
Revision:
3:36f9e3a75905
Child:
4:c5addc5475d3
snake class rev 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sdlashmar 3:36f9e3a75905 1 #include "Snake.h"
sdlashmar 3:36f9e3a75905 2
sdlashmar 3:36f9e3a75905 3 Snake::Snake()
sdlashmar 3:36f9e3a75905 4 {
sdlashmar 3:36f9e3a75905 5
sdlashmar 3:36f9e3a75905 6 }
sdlashmar 3:36f9e3a75905 7
sdlashmar 3:36f9e3a75905 8 Snake::~Snake()
sdlashmar 3:36f9e3a75905 9 {
sdlashmar 3:36f9e3a75905 10
sdlashmar 3:36f9e3a75905 11 }
sdlashmar 3:36f9e3a75905 12
sdlashmar 3:36f9e3a75905 13 void Snake::init(int size, int speed) {
sdlashmar 3:36f9e3a75905 14 _size = size*2;
sdlashmar 3:36f9e3a75905 15 _speed = speed;
sdlashmar 3:36f9e3a75905 16
sdlashmar 3:36f9e3a75905 17 _x = WIDTH/2 - _size/2;
sdlashmar 3:36f9e3a75905 18 _y = HEIGHT/2 - _size/2;
sdlashmar 3:36f9e3a75905 19
sdlashmar 3:36f9e3a75905 20 srand(time(NULL));
sdlashmar 3:36f9e3a75905 21 int direction = rand() %4;
sdlashmar 3:36f9e3a75905 22
sdlashmar 3:36f9e3a75905 23 if (direction == 0) { //snake moves north
sdlashmar 3:36f9e3a75905 24 _velocity.x = -speed;
sdlashmar 3:36f9e3a75905 25 _velocity.y = 0;
sdlashmar 3:36f9e3a75905 26 }
sdlashmar 3:36f9e3a75905 27 else if (direction == 1) { //snake moves east
sdlashmar 3:36f9e3a75905 28 _velocity.x = 0;
sdlashmar 3:36f9e3a75905 29 _velocity.y = speed;
sdlashmar 3:36f9e3a75905 30 }
sdlashmar 3:36f9e3a75905 31 else if (direction == 2) { //sake moves south
sdlashmar 3:36f9e3a75905 32 _velocity.x = speed;
sdlashmar 3:36f9e3a75905 33 _velocity.y = 0;
sdlashmar 3:36f9e3a75905 34 }
sdlashmar 3:36f9e3a75905 35 else if (direction == 3) { //snake moves west
sdlashmar 3:36f9e3a75905 36 _velocity.x = 0;
sdlashmar 3:36f9e3a75905 37 _velocity.y = -speed;
sdlashmar 3:36f9e3a75905 38 }
sdlashmar 3:36f9e3a75905 39 }
sdlashmar 3:36f9e3a75905 40
sdlashmar 3:36f9e3a75905 41 void Snake::draw(N5110 &lcd) {
sdlashmar 3:36f9e3a75905 42 lcd.drawRect(_x,_y,_size,_size,FILL_BLACK);
sdlashmar 3:36f9e3a75905 43 }
sdlashmar 3:36f9e3a75905 44
sdlashmar 3:36f9e3a75905 45 void Snake::update(Direction d) {
sdlashmar 3:36f9e3a75905 46
sdlashmar 3:36f9e3a75905 47 if (d == N) {
sdlashmar 3:36f9e3a75905 48 _x -= _speed;
sdlashmar 3:36f9e3a75905 49 }
sdlashmar 3:36f9e3a75905 50 else if (d == E) {
sdlashmar 3:36f9e3a75905 51 _y += _speed;
sdlashmar 3:36f9e3a75905 52 }
sdlashmar 3:36f9e3a75905 53 else if (d == S) {
sdlashmar 3:36f9e3a75905 54 _x += _speed;
sdlashmar 3:36f9e3a75905 55 }
sdlashmar 3:36f9e3a75905 56 else if (d == W) {
sdlashmar 3:36f9e3a75905 57 _y -= _speed;
sdlashmar 3:36f9e3a75905 58 }
sdlashmar 3:36f9e3a75905 59 }
sdlashmar 3:36f9e3a75905 60
sdlashmar 3:36f9e3a75905 61 void Snake::set_velocity(Vector2D v) {
sdlashmar 3:36f9e3a75905 62 _velocity.x = v.x;
sdlashmar 3:36f9e3a75905 63 _velocity.y = v.y;
sdlashmar 3:36f9e3a75905 64 }
sdlashmar 3:36f9e3a75905 65
sdlashmar 3:36f9e3a75905 66 Vector2D Snake::get_velocity() {
sdlashmar 3:36f9e3a75905 67
sdlashmar 3:36f9e3a75905 68 Vector2D v = {_velocity.x, _velocity.y};
sdlashmar 3:36f9e3a75905 69 return v;
sdlashmar 3:36f9e3a75905 70 }
sdlashmar 3:36f9e3a75905 71
sdlashmar 3:36f9e3a75905 72 Vector2D Snake::get_pos() {
sdlashmar 3:36f9e3a75905 73
sdlashmar 3:36f9e3a75905 74 Vector2D p = {_x, _y};
sdlashmar 3:36f9e3a75905 75 return p;
sdlashmar 3:36f9e3a75905 76 }
sdlashmar 3:36f9e3a75905 77
sdlashmar 3:36f9e3a75905 78 void Snake::set_pos(Vector2D p) {
sdlashmar 3:36f9e3a75905 79
sdlashmar 3:36f9e3a75905 80 _x = p.x;
sdlashmar 3:36f9e3a75905 81 _y = p.y;
sdlashmar 3:36f9e3a75905 82 }
sdlashmar 3:36f9e3a75905 83