Samuel Lashmar 201170334

Dependencies:   mbed

Committer:
sdlashmar
Date:
Sun May 24 14:19:21 2020 +0000
Revision:
12:cb3a81adf48b
Parent:
10:3958fb08696d
Child:
14:4356797fd16e
start screen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sdlashmar 5:256e5e0b6cd7 1 #include "SnakeHead.h"
sdlashmar 5:256e5e0b6cd7 2
sdlashmar 12:cb3a81adf48b 3
sdlashmar 5:256e5e0b6cd7 4 SnakeHead::SnakeHead()
sdlashmar 5:256e5e0b6cd7 5 {
sdlashmar 12:cb3a81adf48b 6
sdlashmar 5:256e5e0b6cd7 7 }
sdlashmar 5:256e5e0b6cd7 8
sdlashmar 5:256e5e0b6cd7 9 SnakeHead::~SnakeHead()
sdlashmar 5:256e5e0b6cd7 10 {
sdlashmar 5:256e5e0b6cd7 11
sdlashmar 5:256e5e0b6cd7 12 }
sdlashmar 5:256e5e0b6cd7 13
sdlashmar 5:256e5e0b6cd7 14 void SnakeHead::init(int size, int speed) {
sdlashmar 5:256e5e0b6cd7 15 _size = size*2;
sdlashmar 5:256e5e0b6cd7 16 _speed = speed;
sdlashmar 5:256e5e0b6cd7 17
sdlashmar 5:256e5e0b6cd7 18 _x = WIDTH/2 - _size/2;
sdlashmar 5:256e5e0b6cd7 19 _y = HEIGHT/2 - _size/2;
sdlashmar 5:256e5e0b6cd7 20
sdlashmar 5:256e5e0b6cd7 21 srand(time(NULL));
sdlashmar 10:3958fb08696d 22 int direction = rand() %3;
sdlashmar 5:256e5e0b6cd7 23
sdlashmar 5:256e5e0b6cd7 24 if (direction == 0) { //snake moves north
sdlashmar 5:256e5e0b6cd7 25 _velocity.x = -_speed;
sdlashmar 5:256e5e0b6cd7 26 _velocity.y = 0;
sdlashmar 5:256e5e0b6cd7 27 }
sdlashmar 5:256e5e0b6cd7 28 else if (direction == 1) { //snake moves east
sdlashmar 5:256e5e0b6cd7 29 _velocity.x = 0;
sdlashmar 5:256e5e0b6cd7 30 _velocity.y = _speed;
sdlashmar 5:256e5e0b6cd7 31 }
sdlashmar 10:3958fb08696d 32 else if (direction == 2) { //snake moves south
sdlashmar 5:256e5e0b6cd7 33 _velocity.x = _speed;
sdlashmar 5:256e5e0b6cd7 34 _velocity.y = 0;
sdlashmar 5:256e5e0b6cd7 35 }
sdlashmar 10:3958fb08696d 36 else if (direction == 3){ //snake moves west
sdlashmar 5:256e5e0b6cd7 37 _velocity.x = 0;
sdlashmar 5:256e5e0b6cd7 38 _velocity.y = -_speed;
sdlashmar 9:f0213e632379 39 }
sdlashmar 5:256e5e0b6cd7 40 }
sdlashmar 5:256e5e0b6cd7 41
sdlashmar 5:256e5e0b6cd7 42 void SnakeHead::draw(N5110 &lcd) {
sdlashmar 5:256e5e0b6cd7 43 lcd.drawRect(_x,_y,_size,2,FILL_BLACK);
sdlashmar 5:256e5e0b6cd7 44 }
sdlashmar 5:256e5e0b6cd7 45
sdlashmar 5:256e5e0b6cd7 46 void SnakeHead::update() {
sdlashmar 5:256e5e0b6cd7 47
sdlashmar 5:256e5e0b6cd7 48 _x += _velocity.x;
sdlashmar 5:256e5e0b6cd7 49 _y += _velocity.y;
sdlashmar 5:256e5e0b6cd7 50
sdlashmar 5:256e5e0b6cd7 51 if (_x < 0) {
sdlashmar 5:256e5e0b6cd7 52 _x = 1;
sdlashmar 5:256e5e0b6cd7 53 } else if (_x > 84) {
sdlashmar 5:256e5e0b6cd7 54 _x = 84 - _size;
sdlashmar 5:256e5e0b6cd7 55 } else if (_y < 0) {
sdlashmar 5:256e5e0b6cd7 56 _y = 1;
sdlashmar 5:256e5e0b6cd7 57 } else if (_y > 48) {
sdlashmar 5:256e5e0b6cd7 58 _y = 48 - _size;
sdlashmar 5:256e5e0b6cd7 59 }
sdlashmar 10:3958fb08696d 60 //printf("head x = %i\n", _x);
sdlashmar 10:3958fb08696d 61 //printf("head y = %i\n", _y);
sdlashmar 5:256e5e0b6cd7 62 }
sdlashmar 5:256e5e0b6cd7 63
sdlashmar 5:256e5e0b6cd7 64 void SnakeHead::change_direction(Direction d) {
sdlashmar 5:256e5e0b6cd7 65
sdlashmar 5:256e5e0b6cd7 66 if (d == N) {
sdlashmar 5:256e5e0b6cd7 67 _velocity.x = 0;
sdlashmar 5:256e5e0b6cd7 68 _velocity.y = -_speed;
sdlashmar 5:256e5e0b6cd7 69 } else if (d == E) {
sdlashmar 5:256e5e0b6cd7 70 _velocity.x = _speed;
sdlashmar 5:256e5e0b6cd7 71 _velocity.y = 0;
sdlashmar 5:256e5e0b6cd7 72 } else if (d == S) {
sdlashmar 5:256e5e0b6cd7 73 _velocity.x = 0;
sdlashmar 5:256e5e0b6cd7 74 _velocity.y = _speed;
sdlashmar 5:256e5e0b6cd7 75 } else if (d == W) {
sdlashmar 5:256e5e0b6cd7 76 _velocity.x = -_speed;
sdlashmar 5:256e5e0b6cd7 77 _velocity.y = 0;
sdlashmar 5:256e5e0b6cd7 78 }
sdlashmar 5:256e5e0b6cd7 79
sdlashmar 5:256e5e0b6cd7 80 }
sdlashmar 5:256e5e0b6cd7 81
sdlashmar 5:256e5e0b6cd7 82 void SnakeHead::set_velocity(Vector2D v) {
sdlashmar 5:256e5e0b6cd7 83 _velocity.x = v.x;
sdlashmar 5:256e5e0b6cd7 84 _velocity.y = v.y;
sdlashmar 5:256e5e0b6cd7 85 }
sdlashmar 5:256e5e0b6cd7 86
sdlashmar 5:256e5e0b6cd7 87
sdlashmar 5:256e5e0b6cd7 88
sdlashmar 5:256e5e0b6cd7 89 Vector2D SnakeHead::get_velocity() {
sdlashmar 5:256e5e0b6cd7 90
sdlashmar 5:256e5e0b6cd7 91 Vector2D v = {_velocity.x, _velocity.y};
sdlashmar 5:256e5e0b6cd7 92 return v;
sdlashmar 5:256e5e0b6cd7 93 }
sdlashmar 5:256e5e0b6cd7 94
sdlashmar 5:256e5e0b6cd7 95 Vector2D SnakeHead::get_pos() {
sdlashmar 5:256e5e0b6cd7 96
sdlashmar 5:256e5e0b6cd7 97 Vector2D p = {_x, _y};
sdlashmar 5:256e5e0b6cd7 98 return p;
sdlashmar 5:256e5e0b6cd7 99 }
sdlashmar 5:256e5e0b6cd7 100
sdlashmar 5:256e5e0b6cd7 101 void SnakeHead::set_pos(Vector2D p) {
sdlashmar 5:256e5e0b6cd7 102
sdlashmar 5:256e5e0b6cd7 103 _x = p.x;
sdlashmar 5:256e5e0b6cd7 104 _y = p.y;
sdlashmar 5:256e5e0b6cd7 105 }
sdlashmar 5:256e5e0b6cd7 106