This class is the engine of the program. It encapsulates all the methods to do with managing scores, commands and player states(dead/alive).

Operator.cpp

Committer:
domkay97
Date:
2017-04-16
Revision:
7:5d9b9d0bc6e7
Parent:
6:9882809b0694
Child:
8:93f18f1c1241

File content as of revision 7:5d9b9d0bc6e7:

#include "Operator.h"

Operator::Operator()
{

}

Operator::~Operator()
{

}

int Operator::random_instruction(Display &display, N5110 &lcd)
{
    int ran = rand() % 7 + 1;
    printf("OPP ran = %d\n", ran);
    display.display_instruction(lcd, ran);
    return ran;
}

void Operator::Correct(Controller &ctrl)
{
    score++; 
    double freq_change = score*20;
    printf("OPP score = %d\n", score);
    ctrl.led(1,1);
    ctrl.led(2,1);
    ctrl.led(3,1);
    ctrl.sound(50.0 + freq_change,0.2);
}

void Operator::Game_Over(Controller &ctrl, N5110 &lcd)
{
    ctrl.sound(200,1);
    while(ctrl.check_event(Controller::BACK_PRESSED) == false) {
        Assessment(lcd, score);
        ctrl.ledsOFF();
        ctrl.led(4,1);
        ctrl.led(5,1);
        ctrl.led(6,1);
    }
    score = 0;
}

void Operator::Assessment(N5110 &lcd, int score)
{
    printf("OPP.ASSESSMENT score = %d\n", score);
    lcd.printString("Game Over",16,0);
    char buffer[14];
    if (score < 10) {
        sprintf(buffer,"0%d",score);
        lcd.printString("Newbie",26,4);
    } else if (score < 20) {
        sprintf(buffer,"%2d",score);
        lcd.printString("Amuteur",24,4);
    } else if (score < 30) {
        sprintf(buffer,"%2d",score);
        lcd.printString("Semi-Pro",23,4);
    } else if (score < 30) {
        sprintf(buffer,"%2d",score);
        lcd.printString("Expert",26,4);
    } else if (score < 40) {
        sprintf(buffer,"%2d",score);
        lcd.printString("Professional",10,4);
    } else if (score < 50) {
        sprintf(buffer,"%2d",score);
        lcd.printString("Legendary",16,4);
    } else {
        sprintf(buffer,"%2d",score);
        lcd.printString("World Class",14,4);
    }
    lcd.printString(buffer,37,2);
    lcd.drawCircle(42,20,10,FILL_TRANSPARENT);
    lcd.refresh();
}