class for bullet in Car_race game
Bullet.cpp
- Committer:
- fy14aaz
- Date:
- 2017-05-04
- Revision:
- 13:dd1ccafe3972
- Parent:
- 12:170175334df8
File content as of revision 13:dd1ccafe3972:
#include "Bullet.h" Bullet::Bullet() { } Bullet::~Bullet() { } void Bullet::init(Vector2D CarHead) { _bullet_x = CarHead.x; // same x value as the car head _bullet_y = CarHead.y + 2; // starts from the square right above the car head // printf("x=%d y=%d \n",_bullet_x,_bullet_y); } void Bullet::draw(N5110 &lcd) { // printf("x=%d y=%d \n",_bullet_x,_bullet_y); lcd.drawRect(_bullet_x,_bullet_y,2,2,FILL_BLACK); // printf("Crashes 0 \n"); } void Bullet::update(N5110 &lcd,int bulletDirection) { clear_Bullet(lcd); // must clear the old bullet before updating otherwise bullets get shifted down with obstacles // printf("x=%d y=%d \n",_bullet_x,_bullet_y); if(bulletDirection==1) { _bullet_x = _bullet_x; // Direction straight up _bullet_y = _bullet_y - 3; } // steps of three else if(bulletDirection==2) { // Direction diagonally left _bullet_x = _bullet_x - 3; _bullet_y = _bullet_y - 3; } // steps of three else if(bulletDirection==3) { // Direction diagonally right _bullet_x = _bullet_x + 3; _bullet_y = _bullet_y - 3; } // steps of three if ((_bullet_x == -2)) { // to avoid having _bullet_x = -1, clear_Bullet(lcd); _bullet_x = _bullet_x - 1; _bullet_y = _bullet_y - 1; } destroy_Obstacles(lcd); // obstacles are destroyed if collision happens between them and bullet } void Bullet::clear_Bullet(N5110 &lcd) { // loop through the bullet pixels lcd.setPixel(_bullet_x,_bullet_y,false); // top left lcd.setPixel(_bullet_x,_bullet_y+1,false); // bottom left lcd.setPixel(_bullet_x+1,_bullet_y,false); // top right lcd.setPixel(_bullet_x+1,_bullet_y+1,false); // bottom right // printf("they are x=%d y=%d \n",_bullet_x,_bullet_y); } void Bullet::destroy_Obstacles(N5110 &lcd) { // printf("they are x=%d y=%d \n",_bullet_x,_bullet_y); // loop through the bullet pixels and surrounding pixels if ((lcd.getPixel(_bullet_x,_bullet_y)) || // top left and check if any is on, so obstacle detected! (lcd.getPixel(_bullet_x,_bullet_y+1)) || // bottom left (lcd.getPixel(_bullet_x+1,_bullet_y)) || // top right (lcd.getPixel(_bullet_x+1,_bullet_y+1)) || // bottom right (lcd.getPixel(_bullet_x,_bullet_y-1)) || // up left (lcd.getPixel(_bullet_x+1,_bullet_y-1)) || // up right (lcd.getPixel(_bullet_x,_bullet_y+2)) || // down left (lcd.getPixel(_bullet_x+1,_bullet_y+2))) { // down right for (int i=1; i<83; i+=1) { for (int j=_bullet_y-4; j<_bullet_y+5; j+=1) { lcd.setPixel(i,j,false); // loop through and set off pixels in and surround that obstacle } // we covered wider area than obstacle's width since it } // moves down by more than one increment! _bullet_x = -10; // send it away by setting the coordinates of the bullet out of the screen _bullet_y = -10; // so it won't be drawn again until re-initialise the bullet's coordinates } }