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

Dependencies:   Controller Display N5110 Operator mbed

Committer:
domkay97
Date:
Sun Apr 16 21:18:34 2017 +0000
Revision:
8:22abb23cd8af
Parent:
7:365bd984c68e
Child:
9:7237faca8baa
Created Player selection with joy stick

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 8:22abb23cd8af 41
domkay97 8:22abb23cd8af 42 int players = 1;
domkay97 8:22abb23cd8af 43
domkay97 7:365bd984c68e 44 lcd.clear();
domkay97 8:22abb23cd8af 45 lcd.printString("Quick Click",10,0);
domkay97 8:22abb23cd8af 46 ;
domkay97 8:22abb23cd8af 47 lcd.printString("Players = ",10,2);
domkay97 8:22abb23cd8af 48 lcd.refresh();
domkay97 8:22abb23cd8af 49
domkay97 8:22abb23cd8af 50 while (ctrl.check_event(Controller::JOY_PRESSED) == false) {
domkay97 8:22abb23cd8af 51
domkay97 8:22abb23cd8af 52
domkay97 8:22abb23cd8af 53 float flicked = ctrl.get_joy();
domkay97 8:22abb23cd8af 54 if (flicked > 1) {
domkay97 8:22abb23cd8af 55 players--;}
domkay97 8:22abb23cd8af 56 if (flicked < -0.5) {
domkay97 8:22abb23cd8af 57 players++;}
domkay97 8:22abb23cd8af 58 if (players < 1) {
domkay97 8:22abb23cd8af 59 players = 1;}
domkay97 8:22abb23cd8af 60
domkay97 8:22abb23cd8af 61
domkay97 8:22abb23cd8af 62 char buffer[14];
domkay97 8:22abb23cd8af 63 sprintf(buffer,"0%d",players);
domkay97 8:22abb23cd8af 64 lcd.printString(buffer,40,3);
domkay97 8:22abb23cd8af 65 lcd.refresh();
domkay97 8:22abb23cd8af 66 wait(0.2);
domkay97 8:22abb23cd8af 67 }
domkay97 8:22abb23cd8af 68
domkay97 8:22abb23cd8af 69 lcd.clear();
domkay97 8:22abb23cd8af 70 lcd.printString("Quick Click",10,0); //text to be displayed when on starter screen
domkay97 7:365bd984c68e 71 lcd.printString("Start >",24,5);
domkay97 0:e19df24a20fc 72 lcd.refresh();
domkay97 8:22abb23cd8af 73
domkay97 8:22abb23cd8af 74
domkay97 8:22abb23cd8af 75
domkay97 7:365bd984c68e 76 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 77 ctrl.ledsON();
domkay97 0:e19df24a20fc 78 wait(0.1);
domkay97 7:365bd984c68e 79 ctrl.ledsOFF();
domkay97 0:e19df24a20fc 80 wait(0.1);
domkay97 0:e19df24a20fc 81 }
domkay97 7:365bd984c68e 82 }
domkay97 7:365bd984c68e 83