Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
ModeA/ModeA.cpp
- Committer:
- el17mtu
- Date:
- 2019-05-09
- Revision:
- 12:343704be6401
- Parent:
- 11:e29b173ccb27
- Child:
- 13:349a682c0c4e
File content as of revision 12:343704be6401:
#include "ModeA.h"
ModeA::ModeA()
{
}
ModeA::~ModeA()
{
}
void ModeA::screen(N5110 &lcd)
{
    lcd.clear();
    lcd.printString("GAME",0,0);
    lcd.printString("Back:Rules",0,2);
};
void ModeA::initialise(N5110 &lcd)
{
    //variables for the square
    x_position = 12;
    y_position = 18;
    speed = 0;
    gravity = 1;
    //variables for the bar
    screen_width = 65;
    bar_width = 10;
    bar_speed = 2;
    score = 0;
    //generating random sizes of the bar
    srand(time(NULL));
    size_top = rand() % 15;
    srand(time(NULL));
    size_bottom = rand() % 15;
}
void ModeA::Bird(N5110 &lcd)
{
    char buffer[14];
    sprintf(buffer,"%2d",score);
    lcd.printString(buffer,70,0);
    lcd.drawRect(x_position, y_position,6,6,FILL_BLACK);
    lcd.refresh();
    if ( pad.check_event(Gamepad::Y_PRESSED) == true) {
        speed = speed - gravity*5;
    }
    if (y_position > 48) {
        lcd.clear();
        lcd.printString("GAME OVER",6,2);
        lcd.printString("Press BACK",6,4);
        pad.tone(2000.0,0.3);
        lcd.refresh();
        bar_speed = 0;
        speed = 0;
        gravity = 0;
        y_position = 48;
        bar_width = 0;
        size_top = 0;
        size_bottom = 0;
        wait(0.5);
    }
    if (y_position < 0) {
        y_position = 0;
        speed = 0;
    }
    speed = speed + gravity;
    y_position = y_position + speed;
    wait(0.1);
    lcd.drawRect(screen_width,0,bar_width,size_top,FILL_BLACK);
    lcd.drawRect(screen_width,48-size_bottom,bar_width,size_bottom,FILL_BLACK);
    lcd.refresh();
    if ((screen_width ==  x_position)&& (size_top <  y_position)) {
        score = score + 1;
        lcd.clear();
        sprintf(buffer,"%2d",score);
    }
    if ( pad.check_event(Gamepad::X_PRESSED) == true) {
        srand(time(NULL));
        size_top = rand() % 15;
        srand(time(NULL));
        size_bottom = rand() % 15;
    }
    if ((screen_width ==  x_position)&& (size_top >  y_position))  {
        lcd.clear();
        lcd.printString("GAME OVER",6,2);
        lcd.printString("Press BACK",6,4);
        pad.tone(2000.0,0.3);
        lcd.refresh();
        bar_speed = 0;
        speed = 0;
        gravity = 0;
        y_position = 48;
        bar_width = 0;
        size_top = 0;
        size_bottom = 0;
    }
    screen_width = screen_width - bar_speed;
    wait(0.1);
}