QuickClick, a reaction timing game which allows single and multiplayer mode.

Dependencies:   Controller Display N5110 Operator mbed

Committer:
domkay97
Date:
Sun Apr 16 19:40:26 2017 +0000
Revision:
7:365bd984c68e
Parent:
6:e7510e120617
Child:
8:22abb23cd8af
Improvements to waiting times between iterations.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
domkay97 0:e19df24a20fc 1 #include "mbed.h"
domkay97 0:e19df24a20fc 2 #include "N5110.h"
domkay97 0:e19df24a20fc 3 #include "Display.h"
domkay97 1:fd22ccce4fe9 4 #include "Controller.h"
domkay97 0:e19df24a20fc 5 #include "Operator.h"
domkay97 0:e19df24a20fc 6
domkay97 0:e19df24a20fc 7 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
domkay97 0:e19df24a20fc 8 Display display;
domkay97 7:365bd984c68e 9 Controller ctrl;
domkay97 0:e19df24a20fc 10 Operator Opp;
domkay97 0:e19df24a20fc 11 int button_val;
domkay97 0:e19df24a20fc 12 int instruction_val;
domkay97 0:e19df24a20fc 13 void starter();
domkay97 0:e19df24a20fc 14
domkay97 0:e19df24a20fc 15 int main() {
domkay97 7:365bd984c68e 16 button_val=0; //(All classes are initialised here variables are set to
domkay97 7:365bd984c68e 17 lcd.init(); //their default states the lcd and controller are configured
domkay97 7:365bd984c68e 18 display.init(); //
domkay97 7:365bd984c68e 19 ctrl.init(); //)
domkay97 7:365bd984c68e 20 starter(); //Methord describing starting screen when the controller is first booted up
domkay97 3:e67f9ba37049 21 while(1) {
domkay97 7:365bd984c68e 22 ctrl.ledsOFF();
domkay97 7:365bd984c68e 23 instruction_val = Opp.random_instruction(display, lcd); //sets instruction_val as the random instruction from display
domkay97 6:e7510e120617 24 printf("MAIN instruction_val = %d\n", instruction_val);
domkay97 7:365bd984c68e 25 display.drawCircle(ctrl, lcd); //Draws circle, displays instruction and allows the circle to be drawn faster with time
domkay97 7:365bd984c68e 26 button_val = ctrl.check_for_buttons(); //sets button_val as the instruction performed by the user
domkay97 7:365bd984c68e 27 printf("MAIN button_val = %d\n", button_val);
domkay97 7:365bd984c68e 28 if (button_val == instruction_val) { //if the user performs the instruction correctly perform:
domkay97 7:365bd984c68e 29 Opp.Correct(ctrl);
domkay97 7:365bd984c68e 30 } else { //otherwise the user has performed the instruction incorrectly so perform:
domkay97 7:365bd984c68e 31 ctrl.init(); //reset flags
domkay97 7:365bd984c68e 32 Opp.Game_Over(ctrl, lcd); //display score and level
domkay97 7:365bd984c68e 33 display.init(); //reset waiting time
domkay97 7:365bd984c68e 34 starter(); //go back to starter screen
domkay97 3:e67f9ba37049 35 }
domkay97 0:e19df24a20fc 36 }
domkay97 3:e67f9ba37049 37
domkay97 0:e19df24a20fc 38 }
domkay97 5:b6fcee26c5ff 39
domkay97 0:e19df24a20fc 40 void starter() {
domkay97 0:e19df24a20fc 41
domkay97 7:365bd984c68e 42 lcd.clear();
domkay97 7:365bd984c68e 43 lcd.printString("Quick Click",10,0); //text to be displayed when on starter screen
domkay97 7:365bd984c68e 44 lcd.printString("Start >",24,5);
domkay97 0:e19df24a20fc 45 lcd.refresh();
domkay97 5:b6fcee26c5ff 46
domkay97 7:365bd984c68e 47 while (ctrl.check_event(Controller::START_PRESSED) == false) { //whilst the start button hasn't been pressed just flash the leds and nothing else
domkay97 7:365bd984c68e 48 ctrl.ledsON();
domkay97 0:e19df24a20fc 49 wait(0.1);
domkay97 7:365bd984c68e 50 ctrl.ledsOFF();
domkay97 0:e19df24a20fc 51 wait(0.1);
domkay97 0:e19df24a20fc 52 }
domkay97 7:365bd984c68e 53 }
domkay97 7:365bd984c68e 54