QuickClick, a reaction timing game which allows single and multiplayer mode.
Dependencies: Controller Display N5110 Operator mbed
main.cpp@13:a8c86ae9ca1b, 2017-05-02 (annotated)
- Committer:
- domkay97
- Date:
- Tue May 02 14:02:44 2017 +0000
- Revision:
- 13:a8c86ae9ca1b
- Parent:
- 12:c0f1f6d007dc
- Child:
- 14:2d4e4c3ba44e
Correcting grammar in comments
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 | 9:7237faca8baa | 3 | #include "Display.h" |
domkay97 | 9:7237faca8baa | 4 | #include "Controller.h" |
domkay97 | 0:e19df24a20fc | 5 | #include "Operator.h" |
domkay97 | 0:e19df24a20fc | 6 | |
domkay97 | 9:7237faca8baa | 7 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
domkay97 | 9:7237faca8baa | 8 | Display display; |
domkay97 | 9:7237faca8baa | 9 | Controller ctrl; |
domkay97 | 9:7237faca8baa | 10 | Operator Opp; |
domkay97 | 9:7237faca8baa | 11 | |
domkay97 | 9:7237faca8baa | 12 | int num_players; |
domkay97 | 0:e19df24a20fc | 13 | int instruction_val; |
domkay97 | 9:7237faca8baa | 14 | int next_player; |
domkay97 | 9:7237faca8baa | 15 | bool multi_player; |
domkay97 | 0:e19df24a20fc | 16 | void starter(); |
domkay97 | 0:e19df24a20fc | 17 | |
domkay97 | 9:7237faca8baa | 18 | /** Polar coordinate struct */ |
domkay97 | 9:7237faca8baa | 19 | |
domkay97 | 9:7237faca8baa | 20 | |
domkay97 | 9:7237faca8baa | 21 | int main() |
domkay97 | 9:7237faca8baa | 22 | { |
domkay97 | 9:7237faca8baa | 23 | |
domkay97 | 13:a8c86ae9ca1b | 24 | lcd.init(); //the lcd and controller are configured and set to their default states |
domkay97 | 9:7237faca8baa | 25 | display.init(); // |
domkay97 | 9:7237faca8baa | 26 | ctrl.init(); // |
domkay97 | 9:7237faca8baa | 27 | |
domkay97 | 13:a8c86ae9ca1b | 28 | starter(); //Method describing starting screen when the controller is first booted up |
domkay97 | 9:7237faca8baa | 29 | |
domkay97 | 9:7237faca8baa | 30 | while(1) { |
domkay97 | 9:7237faca8baa | 31 | next_player = Opp.check_next_player(next_player, lcd, ctrl, display); // find the next player after 10 goes or failure |
domkay97 | 9:7237faca8baa | 32 | if (Opp.test_player(next_player, ctrl, display, lcd)) { //next player returns true or flase depending on success |
domkay97 | 13:a8c86ae9ca1b | 33 | Opp.correct(next_player, ctrl); //process correct response |
domkay97 | 9:7237faca8baa | 34 | } else { |
domkay97 | 12:c0f1f6d007dc | 35 | Opp.inCorrect(next_player, ctrl); // process incorrect response |
domkay97 | 9:7237faca8baa | 36 | |
domkay97 | 9:7237faca8baa | 37 | if (!multi_player || (multi_player && Opp.check_dead()) ) { //set game over staus |
domkay97 | 12:c0f1f6d007dc | 38 | Opp.gameOver(ctrl, lcd); //display score and level |
domkay97 | 9:7237faca8baa | 39 | display.init(); //reset waiting time |
domkay97 | 9:7237faca8baa | 40 | starter(); |
domkay97 | 9:7237faca8baa | 41 | } //go back to starter screen |
domkay97 | 3:e67f9ba37049 | 42 | } |
domkay97 | 0:e19df24a20fc | 43 | } |
domkay97 | 9:7237faca8baa | 44 | |
domkay97 | 9:7237faca8baa | 45 | |
domkay97 | 0:e19df24a20fc | 46 | } |
domkay97 | 5:b6fcee26c5ff | 47 | |
domkay97 | 9:7237faca8baa | 48 | void starter() |
domkay97 | 9:7237faca8baa | 49 | { |
domkay97 | 9:7237faca8baa | 50 | |
domkay97 | 9:7237faca8baa | 51 | num_players = 1; |
domkay97 | 9:7237faca8baa | 52 | |
domkay97 | 9:7237faca8baa | 53 | |
domkay97 | 9:7237faca8baa | 54 | lcd.clear(); |
domkay97 | 9:7237faca8baa | 55 | lcd.printString("Quick Click",10,0); |
domkay97 | 9:7237faca8baa | 56 | |
domkay97 | 8:22abb23cd8af | 57 | lcd.refresh(); |
domkay97 | 9:7237faca8baa | 58 | while (ctrl.check_event(Controller::JOY_PRESSED) == false) { // set single or multiplayer |
domkay97 | 8:22abb23cd8af | 59 | |
domkay97 | 8:22abb23cd8af | 60 | |
domkay97 | 9:7237faca8baa | 61 | float flicked = ctrl.get_joy(); // pressing Joystick completes selection |
domkay97 | 13:a8c86ae9ca1b | 62 | if (flicked > 1) { // flicking Joystick left or right selects no of players |
domkay97 | 9:7237faca8baa | 63 | num_players--; |
domkay97 | 9:7237faca8baa | 64 | } |
domkay97 | 8:22abb23cd8af | 65 | if (flicked < -0.5) { |
domkay97 | 9:7237faca8baa | 66 | num_players++; |
domkay97 | 9:7237faca8baa | 67 | } |
domkay97 | 9:7237faca8baa | 68 | if (num_players < 1) { // lowest value is 1 |
domkay97 | 9:7237faca8baa | 69 | num_players = 1; |
domkay97 | 9:7237faca8baa | 70 | } |
domkay97 | 13:a8c86ae9ca1b | 71 | if (num_players > 2) { // highest value is 2 |
domkay97 | 9:7237faca8baa | 72 | num_players = 2; |
domkay97 | 9:7237faca8baa | 73 | } |
domkay97 | 9:7237faca8baa | 74 | |
domkay97 | 9:7237faca8baa | 75 | if (num_players == 1) { |
domkay97 | 10:7f5a9ec5fb26 | 76 | lcd.printString("<Single>Player",0,2); // display message |
domkay97 | 9:7237faca8baa | 77 | multi_player = false; |
domkay97 | 9:7237faca8baa | 78 | next_player = 0; |
domkay97 | 9:7237faca8baa | 79 | |
domkay97 | 9:7237faca8baa | 80 | } else { |
domkay97 | 10:7f5a9ec5fb26 | 81 | lcd.printString("<Multi >Player",0,2); // display message |
domkay97 | 9:7237faca8baa | 82 | multi_player = true; |
domkay97 | 9:7237faca8baa | 83 | next_player = 1; |
domkay97 | 9:7237faca8baa | 84 | } |
domkay97 | 10:7f5a9ec5fb26 | 85 | |
domkay97 | 9:7237faca8baa | 86 | Opp.setup_players(num_players); |
domkay97 | 10:7f5a9ec5fb26 | 87 | lcd.printString("<JOYSTICK>",10,5); |
domkay97 | 8:22abb23cd8af | 88 | lcd.refresh(); |
domkay97 | 8:22abb23cd8af | 89 | wait(0.2); |
domkay97 | 9:7237faca8baa | 90 | } |
domkay97 | 9:7237faca8baa | 91 | |
domkay97 | 9:7237faca8baa | 92 | lcd.clear(); |
domkay97 | 8:22abb23cd8af | 93 | lcd.printString("Quick Click",10,0); //text to be displayed when on starter screen |
domkay97 | 7:365bd984c68e | 94 | lcd.printString("Start >",24,5); |
domkay97 | 0:e19df24a20fc | 95 | lcd.refresh(); |
domkay97 | 9:7237faca8baa | 96 | |
domkay97 | 9:7237faca8baa | 97 | |
domkay97 | 9:7237faca8baa | 98 | |
domkay97 | 13:a8c86ae9ca1b | 99 | while (ctrl.check_event(Controller::START_PRESSED) == false) { //keep flashing the leds and perform no other action until start is pressed |
domkay97 | 9:7237faca8baa | 100 | ctrl.ledsON(); |
domkay97 | 0:e19df24a20fc | 101 | wait(0.1); |
domkay97 | 7:365bd984c68e | 102 | ctrl.ledsOFF(); |
domkay97 | 0:e19df24a20fc | 103 | wait(0.1); |
domkay97 | 0:e19df24a20fc | 104 | } |
domkay97 | 9:7237faca8baa | 105 | } |