Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Menu/Menu.cpp@29:bdc4138b5171, 2019-05-07 (annotated)
- Committer:
- lewisgw
- Date:
- Tue May 07 17:21:00 2019 +0000
- Revision:
- 29:bdc4138b5171
- Parent:
- 27:c920c5ec31af
Final Submission. I have read and agreed with the Statement of Academic Integrity.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lewisgw | 9:fff2009f826e | 1 | #include "Menu.h" |
lewisgw | 9:fff2009f826e | 2 | |
lewisgw | 18:304700b5d8f8 | 3 | // Define sprite arrays. |
lewisgw | 18:304700b5d8f8 | 4 | int menu_sprite[23][80] = { |
lewisgw | 21:20478f086bc2 | 5 | { 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, |
lewisgw | 21:20478f086bc2 | 6 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 7 | 0,0,1 }, |
lewisgw | 21:20478f086bc2 | 8 | { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 9 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, |
lewisgw | 21:20478f086bc2 | 10 | 1,1,1 }, |
lewisgw | 21:20478f086bc2 | 11 | { 0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, |
lewisgw | 21:20478f086bc2 | 12 | 0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1, |
lewisgw | 21:20478f086bc2 | 13 | 1,1,0 }, |
lewisgw | 21:20478f086bc2 | 14 | { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 15 | 0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0, |
lewisgw | 21:20478f086bc2 | 16 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 17 | { 0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, |
lewisgw | 21:20478f086bc2 | 18 | 0,0,0,0,0,1,0,1,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 19 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 20 | { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 21 | 0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 22 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 23 | { 0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1, |
lewisgw | 21:20478f086bc2 | 24 | 0,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 25 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 26 | { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, |
lewisgw | 21:20478f086bc2 | 27 | 1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 28 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 29 | { 0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, |
lewisgw | 21:20478f086bc2 | 30 | 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 31 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 32 | { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1, |
lewisgw | 21:20478f086bc2 | 33 | 1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 34 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 35 | { 0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0, |
lewisgw | 21:20478f086bc2 | 36 | 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 37 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 38 | { 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 39 | 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 40 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 41 | { 0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 42 | 0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 43 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 44 | { 0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 45 | 0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 46 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 47 | { 0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1, |
lewisgw | 21:20478f086bc2 | 48 | 1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 49 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 50 | { 0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1, |
lewisgw | 21:20478f086bc2 | 51 | 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 52 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 53 | { 0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1, |
lewisgw | 21:20478f086bc2 | 54 | 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 55 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 56 | { 0,0,1,0,0,0,1,0,0,0,1,0,0,1,1,1,0,0,1,0,0,0,1,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1, |
lewisgw | 21:20478f086bc2 | 57 | 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 58 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 59 | { 0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0, |
lewisgw | 21:20478f086bc2 | 60 | 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 61 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 62 | { 0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1, |
lewisgw | 21:20478f086bc2 | 63 | 1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 64 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 65 | { 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1, |
lewisgw | 21:20478f086bc2 | 66 | 1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 67 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 68 | { 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0, |
lewisgw | 21:20478f086bc2 | 69 | 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 70 | 0,0,0 }, |
lewisgw | 21:20478f086bc2 | 71 | { 0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1, |
lewisgw | 21:20478f086bc2 | 72 | 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
lewisgw | 21:20478f086bc2 | 73 | 0,0,0 } |
lewisgw | 18:304700b5d8f8 | 74 | }; |
lewisgw | 18:304700b5d8f8 | 75 | |
lewisgw | 21:20478f086bc2 | 76 | // Define the finite state machine for three different states: running game, |
lewisgw | 21:20478f086bc2 | 77 | // display |
lewisgw | 27:c920c5ec31af | 78 | // menu and display controls, {output,{a,b,c,d}} where a,b,c,d are inputs. |
lewisgw | 27:c920c5ec31af | 79 | // The outputs have been assigned to 0,1,2. |
lewisgw | 27:c920c5ec31af | 80 | // There are four different relevant input combinations that have been assigned |
lewisgw | 21:20478f086bc2 | 81 | // to: 0,1,2,3. |
lewisgw | 12:ebaefda53dd0 | 82 | State _fsm[3] = { |
lewisgw | 13:bcf6bb69c597 | 83 | {0,{0,1,0,0}}, |
lewisgw | 12:ebaefda53dd0 | 84 | {1,{1,1,0,2}}, |
lewisgw | 13:bcf6bb69c597 | 85 | {2,{2,1,2,0}} |
lewisgw | 12:ebaefda53dd0 | 86 | }; |
lewisgw | 11:b66170249a26 | 87 | |
lewisgw | 27:c920c5ec31af | 88 | // Constructor and destructor. |
lewisgw | 9:fff2009f826e | 89 | Menu::Menu() {} |
lewisgw | 9:fff2009f826e | 90 | |
lewisgw | 9:fff2009f826e | 91 | Menu::~Menu() {} |
lewisgw | 9:fff2009f826e | 92 | |
lewisgw | 21:20478f086bc2 | 93 | void Menu::init() { |
lewisgw | 29:bdc4138b5171 | 94 | // Starting setup of menu. |
lewisgw | 21:20478f086bc2 | 95 | _state = 1; // Starting state is the menu. |
lewisgw | 12:ebaefda53dd0 | 96 | _controller.init(); |
lewisgw | 26:4253656c0755 | 97 | // Initialise counters for musical tune. |
lewisgw | 20:a8cad4e044ea | 98 | _tone_flag = false; |
lewisgw | 20:a8cad4e044ea | 99 | _tone_counter = 0; |
lewisgw | 21:20478f086bc2 | 100 | _chord_counter = 0; |
lewisgw | 12:ebaefda53dd0 | 101 | } |
lewisgw | 12:ebaefda53dd0 | 102 | |
lewisgw | 12:ebaefda53dd0 | 103 | void Menu::run(N5110 &lcd, Gamepad &gamepad) { |
lewisgw | 12:ebaefda53dd0 | 104 | set_input(gamepad.check_event(Gamepad::START_PRESSED), |
lewisgw | 13:bcf6bb69c597 | 105 | gamepad.check_event(Gamepad::BACK_PRESSED), |
lewisgw | 13:bcf6bb69c597 | 106 | gamepad.check_event(Gamepad::X_PRESSED)); |
lewisgw | 21:20478f086bc2 | 107 | // Select the current output, execute that output via the output function and |
lewisgw | 21:20478f086bc2 | 108 | // update to the next state depending on the input. |
lewisgw | 12:ebaefda53dd0 | 109 | _output = _fsm[_state].output; |
lewisgw | 12:ebaefda53dd0 | 110 | output(lcd, gamepad); |
lewisgw | 12:ebaefda53dd0 | 111 | _state = _fsm[_state].next_state[_menu_input]; |
lewisgw | 12:ebaefda53dd0 | 112 | } |
lewisgw | 12:ebaefda53dd0 | 113 | |
lewisgw | 12:ebaefda53dd0 | 114 | void Menu::output(N5110 &lcd, Gamepad &gamepad) { |
lewisgw | 27:c920c5ec31af | 115 | // 0, 1 and 2 have been assigned to the output of each state respectively. |
lewisgw | 12:ebaefda53dd0 | 116 | if (_output == 0) { |
lewisgw | 29:bdc4138b5171 | 117 | run_game(lcd, gamepad); // Runs the main game loop. |
lewisgw | 12:ebaefda53dd0 | 118 | } else if (_output == 1) { |
lewisgw | 29:bdc4138b5171 | 119 | display_menu(lcd, gamepad); // Displays the main menu. |
lewisgw | 12:ebaefda53dd0 | 120 | } else { |
lewisgw | 29:bdc4138b5171 | 121 | display_controls(lcd, gamepad); // Displayes the control page. |
lewisgw | 12:ebaefda53dd0 | 122 | } |
lewisgw | 9:fff2009f826e | 123 | } |
lewisgw | 9:fff2009f826e | 124 | |
lewisgw | 13:bcf6bb69c597 | 125 | void Menu::set_input(bool start, bool back, bool x) { |
lewisgw | 27:c920c5ec31af | 126 | // 0, 1, 2, 3 have been assigned to each relevant input combination. |
lewisgw | 26:4253656c0755 | 127 | if (!start && !back && !x) { // Nothing is pressed. |
lewisgw | 26:4253656c0755 | 128 | _menu_input = 0; |
lewisgw | 26:4253656c0755 | 129 | } else if (!start && back) { // Only back is pressed. |
lewisgw | 26:4253656c0755 | 130 | _menu_input = 1; |
lewisgw | 26:4253656c0755 | 131 | } else if (start && !back) { // Only start is pressed. |
lewisgw | 26:4253656c0755 | 132 | _menu_input = 2; |
lewisgw | 26:4253656c0755 | 133 | } else if (x) { // Only X is pressed. |
lewisgw | 26:4253656c0755 | 134 | _menu_input = 3; |
lewisgw | 12:ebaefda53dd0 | 135 | } |
lewisgw | 12:ebaefda53dd0 | 136 | } |
lewisgw | 12:ebaefda53dd0 | 137 | |
lewisgw | 12:ebaefda53dd0 | 138 | void Menu::run_game(N5110 &lcd, Gamepad &gamepad) { |
lewisgw | 12:ebaefda53dd0 | 139 | _controller.run_game_engine(lcd, gamepad); |
lewisgw | 11:b66170249a26 | 140 | } |
lewisgw | 11:b66170249a26 | 141 | |
lewisgw | 13:bcf6bb69c597 | 142 | void Menu::display_controls(N5110 &lcd, Gamepad &gamepad) { |
lewisgw | 29:bdc4138b5171 | 143 | // Print lines for aesthetics, and print controls text. |
lewisgw | 19:f35887b14c23 | 144 | lcd.drawLine(0,0,84,0,FILL_BLACK); |
lewisgw | 19:f35887b14c23 | 145 | lcd.drawLine(0,6,84,6,FILL_BLACK); |
lewisgw | 26:4253656c0755 | 146 | lcd.drawLine(0,24,84,24,FILL_BLACK); |
lewisgw | 26:4253656c0755 | 147 | lcd.drawLine(0,30,84,30,FILL_BLACK); |
lewisgw | 13:bcf6bb69c597 | 148 | lcd.printString("JOYSTICK:",0,0); |
lewisgw | 26:4253656c0755 | 149 | lcd.printString("-Go Left/Right",0,1); |
lewisgw | 26:4253656c0755 | 150 | lcd.printString("-Down to Duck",0,2); |
lewisgw | 26:4253656c0755 | 151 | lcd.printString("Collect Coins!",0,5); |
lewisgw | 26:4253656c0755 | 152 | lcd.printString("A:",0,3); |
lewisgw | 26:4253656c0755 | 153 | lcd.printString("-Jump",0,4); |
lewisgw | 29:bdc4138b5171 | 154 | play_tone(gamepad); // Play the tune. |
lewisgw | 13:bcf6bb69c597 | 155 | } |
lewisgw | 12:ebaefda53dd0 | 156 | |
lewisgw | 12:ebaefda53dd0 | 157 | void Menu::display_menu(N5110 &lcd, Gamepad &gamepad) { |
lewisgw | 29:bdc4138b5171 | 158 | // Print lines and sprite for aesthetics, and print menu text. |
lewisgw | 19:f35887b14c23 | 159 | lcd.drawLine(0,0,84,0,FILL_BLACK); |
lewisgw | 19:f35887b14c23 | 160 | lcd.drawLine(0,6,84,6,FILL_BLACK); |
lewisgw | 19:f35887b14c23 | 161 | lcd.drawLine(0,24,84,24,FILL_BLACK); |
lewisgw | 18:304700b5d8f8 | 162 | lcd.printString("SKATER",24,0); |
lewisgw | 13:bcf6bb69c597 | 163 | lcd.printString("START- Play!",0,1); |
lewisgw | 18:304700b5d8f8 | 164 | lcd.printString("X- Controls",0,2); |
lewisgw | 18:304700b5d8f8 | 165 | lcd.drawSprite(1,25,23,80,(int*)menu_sprite); |
lewisgw | 29:bdc4138b5171 | 166 | play_tone(gamepad); // Play the tune. |
lewisgw | 20:a8cad4e044ea | 167 | } |
lewisgw | 20:a8cad4e044ea | 168 | |
lewisgw | 20:a8cad4e044ea | 169 | void Menu::play_tone(Gamepad &gamepad) { |
lewisgw | 21:20478f086bc2 | 170 | // Plays a musical tune in 3/4 based on two chords, A and F in Aminor. |
lewisgw | 21:20478f086bc2 | 171 | // It switches between each chord every 12 game loops via chord counter. |
lewisgw | 20:a8cad4e044ea | 172 | _tone_flag = !_tone_flag; |
lewisgw | 20:a8cad4e044ea | 173 | _tone_counter++; |
lewisgw | 21:20478f086bc2 | 174 | _chord_counter++; |
lewisgw | 21:20478f086bc2 | 175 | if (_chord_counter < 12) { |
lewisgw | 21:20478f086bc2 | 176 | play_chord_a(gamepad); |
lewisgw | 20:a8cad4e044ea | 177 | } else { |
lewisgw | 21:20478f086bc2 | 178 | if (_chord_counter == 24) _chord_counter = 0; |
lewisgw | 21:20478f086bc2 | 179 | play_chord_b(gamepad); |
lewisgw | 20:a8cad4e044ea | 180 | } |
lewisgw | 21:20478f086bc2 | 181 | wait(0.14); // Determines how fast the musical tune is played. |
lewisgw | 20:a8cad4e044ea | 182 | } |
lewisgw | 20:a8cad4e044ea | 183 | |
lewisgw | 21:20478f086bc2 | 184 | void Menu::play_chord_a(Gamepad &gamepad) { |
lewisgw | 21:20478f086bc2 | 185 | // For each chord, the first set of two notes is played for 5 game loops and |
lewisgw | 21:20478f086bc2 | 186 | // the second set for 2 game loops via tone counter. |
lewisgw | 21:20478f086bc2 | 187 | // Each note is alternated every game loop via tone flag. |
lewisgw | 21:20478f086bc2 | 188 | if (_tone_counter < 5) { |
lewisgw | 21:20478f086bc2 | 189 | if (_tone_flag) { |
lewisgw | 20:a8cad4e044ea | 190 | gamepad.tone(220, 0.5); |
lewisgw | 20:a8cad4e044ea | 191 | } else { |
lewisgw | 20:a8cad4e044ea | 192 | gamepad.tone(440, 0.1); |
lewisgw | 20:a8cad4e044ea | 193 | } |
lewisgw | 20:a8cad4e044ea | 194 | } else { |
lewisgw | 21:20478f086bc2 | 195 | if (_tone_counter == 6) _tone_counter = 0; |
lewisgw | 21:20478f086bc2 | 196 | if (_tone_flag) { |
lewisgw | 20:a8cad4e044ea | 197 | gamepad.tone(174.61, 0.1); |
lewisgw | 20:a8cad4e044ea | 198 | } else { |
lewisgw | 20:a8cad4e044ea | 199 | gamepad.tone(246.94, 0.1); |
lewisgw | 20:a8cad4e044ea | 200 | } |
lewisgw | 20:a8cad4e044ea | 201 | } |
lewisgw | 20:a8cad4e044ea | 202 | } |
lewisgw | 20:a8cad4e044ea | 203 | |
lewisgw | 21:20478f086bc2 | 204 | void Menu::play_chord_b(Gamepad &gamepad) { |
lewisgw | 29:bdc4138b5171 | 205 | // Same as play_chord_a, just different notes. |
lewisgw | 21:20478f086bc2 | 206 | if (_tone_counter < 5) { |
lewisgw | 21:20478f086bc2 | 207 | if (_tone_flag) { |
lewisgw | 29:bdc4138b5171 | 208 | gamepad.tone(174.61, 0.5); |
lewisgw | 20:a8cad4e044ea | 209 | } else { |
lewisgw | 20:a8cad4e044ea | 210 | gamepad.tone(349.23, 0.1); |
lewisgw | 20:a8cad4e044ea | 211 | } |
lewisgw | 20:a8cad4e044ea | 212 | } else { |
lewisgw | 21:20478f086bc2 | 213 | if (_tone_counter == 6) _tone_counter = 0; |
lewisgw | 21:20478f086bc2 | 214 | if (_tone_flag) { |
lewisgw | 20:a8cad4e044ea | 215 | gamepad.tone(659.25, 0.1); |
lewisgw | 20:a8cad4e044ea | 216 | } else { |
lewisgw | 20:a8cad4e044ea | 217 | gamepad.tone(220, 0.1); |
lewisgw | 20:a8cad4e044ea | 218 | } |
lewisgw | 20:a8cad4e044ea | 219 | } |
lewisgw | 20:a8cad4e044ea | 220 | } |