Similar to the example code.

Dependencies:   mbed N5110

Cylinder/Cylinder.cpp

Committer:
2016110307
Date:
2019-04-23
Revision:
0:97418ec4c37d
Child:
1:85ab0d979b57

File content as of revision 0:97418ec4c37d:

#include "Cylinder.h"

void Cylinder::init()
{
    _x1 = 72;
    _x2 = 102;
    _x3 = 132;
    _height1 = rand()%11+10;
    _height2 = rand()%11+10;
    _height3 = rand()%11+10;
    _gap1 = rand()%11+15;
    _gap2 = rand()%11+15;
    _gap3 = rand()%11+15;
    _score = 0;

}

void Cylinder::draw(N5110 &lcd)
{
    lcd.drawRect(0,0,84,48,FILL_TRANSPARENT);
    lcd.drawRect(64,0,20,20,FILL_TRANSPARENT);
    if(_x1 > 60 ) {
         _a = 1;
         _b = _height2;
         _c = _height3;
    } else if (_x2 > 60) {
         _a = _height1;
         _b = 1;
        _c = _height3;
    } else if (_x3 > 60) {
        _a = _height1;
        _b = _height2;
        _c = 1;
    } else {
        _a = _height1;
        _b = _height2;
        _c = _height3;
    }


    lcd.drawRect(_x1,0,4,_a,FILL_BLACK);
    lcd.drawRect(_x1,_height1+_gap1,4,49-_height1-_gap1,FILL_BLACK);
    lcd.drawRect(_x2,0,4,_b,FILL_BLACK);
    lcd.drawRect(_x2, _height2+_gap2,4,49-_height2-_gap2,FILL_BLACK);
    lcd.drawRect(_x3,0,4,_c,FILL_BLACK);
    lcd.drawRect(_x3, _height3+_gap3, 4, 49-_height3-_gap3, FILL_BLACK);

}

void Cylinder::update()
{
    _x1 -= 3;
    _x2 -= 3;
    _x3 -= 3;

}

void Cylinder::check()
{
    if(_x1 < 0) {
        _x1 = 86;
        _height1 = rand()%11+10;
        _gap1 = rand()%11+15;
        _score += 1;
    }
    if(_x2 < 0) {
        _x2 = 86;
        _height2 = rand()%11+10;
        _gap2 = rand()%11+15;
        _score += 1;
    }
    if(_x3 < 0) {
        _x3 = 86;
        _height3 = rand()%11+10;
        _gap3 = rand()%11+15;
        _score += 1;
    }
}

void Cylinder::print_score(N5110 &lcd)
{
    _yourscore = _score;
    char buffer[1];
    int score = _yourscore;
    sprintf(buffer, "%2d", score);
    lcd.printString(buffer, 64,1);

}

void Cylinder::print_yourscore(N5110 &lcd)
{
    char buffer2[14];
    int yourscore = _yourscore;
    sprintf(buffer2,"YourScore = %2d ",yourscore);
    lcd.printString(buffer2,0,1);
}

int Cylinder::get_highest_score(int high_score)
{
    if (high_score <= _yourscore) {
        high_score = _yourscore;
    }
    return high_score;
}


Data Cylinder::get_data()
{
    _data.x1 = _x1;
    _data.x2 = _x2;
    _data.x3 = _x3;

    _data.height1 = _height1;
    _data.height2 = _height2;
    _data.height3 = _height3;

    _data.gap1 = _gap1;
    _data.gap2 = _gap2;
    _data.gap3 = _gap3;

    return _data;

}