ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el18zc2

Dependencies:   mbed

Committer:
ChenZirui
Date:
Wed May 27 21:13:59 2020 +0000
Revision:
5:7207c9b70108
Child:
6:b393cfe4e0a7
problems

Who changed what in which revision?

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