class for obstacles in Car_race game

Obstacles.cpp

Committer:
fy14aaz
Date:
2017-05-02
Revision:
10:515df7535b2f
Parent:
9:d5f90988545e
Child:
11:c0922d4fda7b

File content as of revision 10:515df7535b2f:

#include "Obstacles.h"

Obstacles::Obstacles()
{

}

Obstacles::~Obstacles()
{

}

void Obstacles::init(int seed)
{
    _Obstacle_x = seed;
    _score = 0;
    _totalscore = 0;
    // try to draw them here in this function as we need the draw function for another purpose
    // are we done though? we might need to split the draw function into two, one for drawing the car
    // and the other for drawing the obstacles as they are drawn in a time basis
}

void Obstacles::draw(N5110 &lcd,int seed)
{
    _Obstacle_x = seed;

    switch(_Obstacle_x) {
        case 0:
            lcd.drawRect(2,11,25,2,FILL_BLACK);  // it was lcd.drawRect(2,2,25,2,FILL_BLACK);
            break;

        case 1:
            lcd.drawRect(28,11,27,2,FILL_BLACK);  // it was lcd.drawRect(28,2,27,2,FILL_BLACK);
            break;

        case 2:
            lcd.drawRect(56,11,25,2,FILL_BLACK);  // it was  lcd.drawRect(56,2,25,2,FILL_BLACK);
            break;
    }
}

void Obstacles::update(N5110 &lcd) // adjust this function to be able to store all pixels values
{
    // then they are used to shift the screen
    addScore(lcd);
    char pixelstate[82][37];              // it was char pixelstate[82][46];
    for (int i=1; i<83; i+=1) {          // it was    for (int i=1; i<83; i+=1) {
        for (int j=10; j<47; j+=1) {   // it was for (int j=1; j<47; j+=1) {
            if (lcd.getPixel(i,j)) {      // if (lcd.getPixel(i,j)) {
                pixelstate[i-1][j-10]=1;   //  pixelstate[i-1][j-1]=1;
            } else  {
                pixelstate[i-1][j-10]=0;        //  pixelstate[i-1][j-1]=0;
            }
        }
    }
    for (int i=1; i<83; i+=1) {           // it was  for (int i=1; i<83; i+=1) {
        for (int j=10; j<47; j+=1) {    // it was  for (int j=1; j<47; j+=1) {
            if ((pixelstate[i-1][j-10]) ) {   // it was  if ((pixelstate[i-1][j-1]) ) {
                lcd.setPixel(i,j+2);         //       lcd.setPixel(i,j+2);
            }      // CAN INCREASE THE SPEED BY ADDING 1 FOR Y VALUES
            if ((pixelstate[i-1][j-11]==0) ) {    // if ((pixelstate[i-1][j-2]==0) ) {
                lcd.setPixel(i,j+1,false);     //  lcd.setPixel(i,j+1,false);
            }
        }
    }
}

void Obstacles::addScore(N5110 &lcd)
{
    for (int i=2; i<83; i+=1) {
        if (lcd.getPixel(i,46)) {
            _score++;
            _totalscore++;
            break;
        }
    }
}

void Obstacles::updateScore()
{
    _score -= 10;
}

int Obstacles::getScore()
{
    return _score;
}
int Obstacles::getTotalScore()
{
    return _totalscore;
}