class for bullet in Car_race game

Bullet.cpp

Committer:
fy14aaz
Date:
2017-05-01
Revision:
11:61bbec4ede2c
Parent:
10:3726b7994e2f
Child:
12:170175334df8

File content as of revision 11:61bbec4ede2c:

#include "Bullet.h"

Bullet::Bullet()
{

}

Bullet::~Bullet()
{

}

void Bullet::init(Vector2D CarHead)
{
    _bullet_x =  CarHead.x;
    _bullet_y =  CarHead.y + 2; 
    // 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)
{   
    clearBullet(lcd);
    // printf("x=%d y=%d \n",_bullet_x,_bullet_y);
    if(bulletDirection==1) {
    _bullet_x = _bullet_x;
    _bullet_y = _bullet_y - 3; 
    }
     
    else if(bulletDirection==2) {
    _bullet_x = _bullet_x - 3;
    _bullet_y = _bullet_y - 3; 
    }
    
    else if(bulletDirection==3) {
    _bullet_x = _bullet_x + 3;
    _bullet_y = _bullet_y - 3; 
    }
      // the following piece of code to get around the problem of the game getting stuck when the value of _bullet_x = 1 
   if ((_bullet_x == -2)) {
      clearBullet(lcd);
       _bullet_x = _bullet_x - 1;
       _bullet_y = _bullet_y - 1; 
    }
}

void Bullet::clearBullet(N5110 &lcd)
{ 
    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
}

void Bullet::destroyObstacles(N5110 &lcd)
{     
  // printf("they are x=%d y=%d \n",_bullet_x,_bullet_y);
  if ((lcd.getPixel(_bullet_x,_bullet_y))     ||  // top left
     (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 turn off pixels around that obstacle
                }
                }
                _bullet_x = -10;   // set the coordinates of the bullet out of the screen
                _bullet_y = -10;   // so it won't be drawn again until re-initialise the coordinates
        }
}