QuickClick, a reaction timing game which allows single and multiplayer mode.
Dependencies: Controller Display N5110 Operator mbed
main.cpp@8:22abb23cd8af, 2017-04-16 (annotated)
- 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?
User | Revision | Line number | New 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 |