4

Committer:
eencae
Date:
Sun Mar 05 23:10:45 2017 +0000
Revision:
4:d3f87c8e4027
Parent:
3:8ec14becdf83
Improved collision detection

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:a695d2b64167 1 #include "Ball.h"
eencae 0:a695d2b64167 2
eencae 0:a695d2b64167 3 Ball::Ball()
eencae 0:a695d2b64167 4 {
eencae 0:a695d2b64167 5
eencae 0:a695d2b64167 6 }
eencae 0:a695d2b64167 7
eencae 0:a695d2b64167 8 Ball::~Ball()
eencae 0:a695d2b64167 9 {
eencae 0:a695d2b64167 10
eencae 0:a695d2b64167 11 }
eencae 0:a695d2b64167 12
eencae 3:8ec14becdf83 13 void Ball::init(int size,int speed)
eencae 0:a695d2b64167 14 {
eencae 3:8ec14becdf83 15 _size = size;
eencae 0:a695d2b64167 16
eencae 3:8ec14becdf83 17 _x = WIDTH/2 - _size/2;
eencae 3:8ec14becdf83 18 _y = HEIGHT/2 - _size/2;
eencae 0:a695d2b64167 19
eencae 2:3c92f5ae0502 20 srand(time(NULL));
eencae 1:201ef6494656 21 int direction = rand() % 4; // randomise initial direction.
eencae 0:a695d2b64167 22
eencae 0:a695d2b64167 23 // 4 possibilities. Get random modulo and set velocities accordingly
eencae 0:a695d2b64167 24 if (direction == 0) {
eencae 0:a695d2b64167 25 _velocity.x = speed;
eencae 0:a695d2b64167 26 _velocity.y = speed;
eencae 0:a695d2b64167 27 } else if (direction == 1) {
eencae 0:a695d2b64167 28 _velocity.x = speed;
eencae 0:a695d2b64167 29 _velocity.y = -speed;
eencae 0:a695d2b64167 30 } else if (direction == 2) {
eencae 4:d3f87c8e4027 31 _velocity.x = speed;
eencae 0:a695d2b64167 32 _velocity.y = speed;
eencae 0:a695d2b64167 33 } else {
eencae 0:a695d2b64167 34 _velocity.x = -speed;
eencae 0:a695d2b64167 35 _velocity.y = -speed;
eencae 0:a695d2b64167 36 }
eencae 0:a695d2b64167 37 }
eencae 0:a695d2b64167 38
eencae 0:a695d2b64167 39 void Ball::draw(N5110 &lcd)
eencae 0:a695d2b64167 40 {
eencae 3:8ec14becdf83 41 lcd.drawRect(_x,_y,_size,_size,FILL_BLACK);
eencae 0:a695d2b64167 42 }
eencae 0:a695d2b64167 43
eencae 0:a695d2b64167 44 void Ball::update()
eencae 0:a695d2b64167 45 {
eencae 0:a695d2b64167 46 _x += _velocity.x;
eencae 0:a695d2b64167 47 _y += _velocity.y;
eencae 0:a695d2b64167 48 }
eencae 0:a695d2b64167 49
eencae 0:a695d2b64167 50 void Ball::set_velocity(Vector2D v)
eencae 0:a695d2b64167 51 {
eencae 0:a695d2b64167 52 _velocity.x = v.x;
eencae 0:a695d2b64167 53 _velocity.y = v.y;
eencae 0:a695d2b64167 54 }
eencae 0:a695d2b64167 55
eencae 0:a695d2b64167 56 Vector2D Ball::get_velocity()
eencae 0:a695d2b64167 57 {
eencae 0:a695d2b64167 58 Vector2D v = {_velocity.x,_velocity.y};
eencae 0:a695d2b64167 59 return v;
eencae 0:a695d2b64167 60 }
eencae 0:a695d2b64167 61
eencae 0:a695d2b64167 62 Vector2D Ball::get_pos()
eencae 0:a695d2b64167 63 {
eencae 0:a695d2b64167 64 Vector2D p = {_x,_y};
eencae 0:a695d2b64167 65 return p;
eencae 0:a695d2b64167 66 }
eencae 0:a695d2b64167 67
eencae 0:a695d2b64167 68 void Ball::set_pos(Vector2D p)
eencae 0:a695d2b64167 69 {
eencae 0:a695d2b64167 70 _x = p.x;
eencae 0:a695d2b64167 71 _y = p.y;
eencae 3:8ec14becdf83 72 }