Mochu Yao explorer game
Dependencies: mbed
menu/Menu.cpp@36:cdfba51a0a44, 2020-05-13 (annotated)
- Committer:
- el17my
- Date:
- Wed May 13 08:49:44 2020 +0000
- Revision:
- 36:cdfba51a0a44
- Parent:
- 32:47d98959b4ef
5.13
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el17my | 22:f8ba0ab7465c | 1 | #include "Menu.h" |
el17my | 13:30330d61f09c | 2 | |
el17my | 13:30330d61f09c | 3 | int page1_sprite[25][80] = { |
el17my | 13:30330d61f09c | 4 | { 0,0,0,0,0,0,0,0,0,0,0,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,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 }, |
el17my | 13:30330d61f09c | 5 | { 0,0,0,0,0,1,1,1,0,0,0,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,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 }, |
el17my | 13:30330d61f09c | 6 | { 0,0,0,0,1,1,0,0,1,0,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,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 }, |
el17my | 13:30330d61f09c | 7 | { 0,0,0,1,1,0,0,1,1,0,0,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,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 }, |
el17my | 13:30330d61f09c | 8 | { 0,0,1,1,0,0,1,0,0,1,0,0,0,0,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,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 }, |
el17my | 13:30330d61f09c | 9 | { 0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,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,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 }, |
el17my | 13:30330d61f09c | 10 | { 0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,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,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 }, |
el17my | 13:30330d61f09c | 11 | { 1,0,0,1,0,0,0,0,1,1,0,1,0,1,0,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,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 }, |
el17my | 13:30330d61f09c | 12 | { 0,1,1,0,1,1,1,1,1,0,1,0,1,0,0,0,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,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 }, |
el17my | 13:30330d61f09c | 13 | { 0,0,0,0,1,0,1,0,0,1,0,1,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,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,0,0,0,0 }, |
el17my | 13:30330d61f09c | 14 | { 0,0,0,1,0,1,0,0,0,0,1,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,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,0,0,0 }, |
el17my | 13:30330d61f09c | 15 | { 0,0,1,0,1,0,0,0,0,0,1,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,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,0,0 }, |
el17my | 13:30330d61f09c | 16 | { 0,0,1,0,1,0,0,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,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 }, |
el17my | 13:30330d61f09c | 17 | { 0,0,0,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,0,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0 }, |
el17my | 13:30330d61f09c | 18 | { 0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0 }, |
el17my | 13:30330d61f09c | 19 | { 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0 }, |
el17my | 13:30330d61f09c | 20 | { 0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0 }, |
el17my | 13:30330d61f09c | 21 | { 0,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0 }, |
el17my | 13:30330d61f09c | 22 | { 0,1,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0 }, |
el17my | 13:30330d61f09c | 23 | { 1,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0 }, |
el17my | 13:30330d61f09c | 24 | { 1,1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0 }, |
el17my | 13:30330d61f09c | 25 | { 0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0 }, |
el17my | 13:30330d61f09c | 26 | { 0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0 }, |
el17my | 13:30330d61f09c | 27 | { 0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,0,0,0,0,0 }, |
el17my | 13:30330d61f09c | 28 | { 0,1,0,0,0,0,1,1,1,0,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,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 }, |
el17my | 13:30330d61f09c | 29 | }; |
el17my | 13:30330d61f09c | 30 | //*using the UPDown counter example in class 201. |
el17my | 13:30330d61f09c | 31 | //there are three pages so we have three output and we cna press the start, back and y button to change the page.These are the input |
el17my | 13:30330d61f09c | 32 | // |
el17my | 32:47d98959b4ef | 33 | State _fsm[3] = { |
el17my | 32:47d98959b4ef | 34 | {0,{0,1,0,0}}, |
el17my | 32:47d98959b4ef | 35 | {1,{1,1,0,2}}, |
el17my | 36:cdfba51a0a44 | 36 | {2,{2,1,2,2}} |
el17my | 15:814084bbc111 | 37 | }; |
el17my | 13:30330d61f09c | 38 | |
el17my | 21:349c70c8a7de | 39 | Menu::Menu() {} |
el17my | 13:30330d61f09c | 40 | |
el17my | 21:349c70c8a7de | 41 | Menu::~Menu() {} |
el17my | 13:30330d61f09c | 42 | |
el17my | 21:349c70c8a7de | 43 | void Menu::init() { |
el17my | 13:30330d61f09c | 44 | // Starting setup of menu. |
el17my | 17:1b4ecc01b79f | 45 | _state = 1; // Starting state is the menu. |
el17my | 13:30330d61f09c | 46 | _game_engine.init(); } |
el17my | 13:30330d61f09c | 47 | |
el17my | 21:349c70c8a7de | 48 | void Menu::run_engine(N5110 &lcd, Gamepad &gamepad) { |
el17my | 32:47d98959b4ef | 49 | get_input(gamepad.check_event(Gamepad::START_PRESSED), gamepad.check_event(Gamepad::BACK_PRESSED),gamepad.check_event(Gamepad::A_PRESSED)); |
el17my | 32:47d98959b4ef | 50 | _output = _fsm[_state].output; |
el17my | 19:14c5427b30d1 | 51 | if (_output == 0) { |
el17my | 13:30330d61f09c | 52 | run_game(lcd, gamepad); // Runs the main game loop. |
el17my | 13:30330d61f09c | 53 | } else if (_output == 1) { |
el17my | 13:30330d61f09c | 54 | display_page1(lcd, gamepad); // Displays the main menu. |
el17my | 32:47d98959b4ef | 55 | } else if (_output == 2) { |
el17my | 13:30330d61f09c | 56 | display_page2(lcd, gamepad); // Displayes the control page. |
el17my | 31:8e92b65e0779 | 57 | } |
el17my | 31:8e92b65e0779 | 58 | // implement required delay |
el17my | 31:8e92b65e0779 | 59 | // set the next state depending on direction |
el17my | 32:47d98959b4ef | 60 | _state = _fsm[_state].next_state[_input_value]; |
el17my | 31:8e92b65e0779 | 61 | } |
el17my | 22:f8ba0ab7465c | 62 | |
el17my | 32:47d98959b4ef | 63 | void Menu::get_input(bool start, bool back, bool a) { |
el17my | 32:47d98959b4ef | 64 | if(!start && !back && !a) { |
el17my | 20:20e6ba54e15c | 65 | _input_value = 0;} |
el17my | 36:cdfba51a0a44 | 66 | else if (!start && back && !a) { |
el17my | 31:8e92b65e0779 | 67 | _input_value = 1;} |
el17my | 36:cdfba51a0a44 | 68 | else if (start && !back && !a) { |
el17my | 20:20e6ba54e15c | 69 | _input_value = 2;} |
el17my | 36:cdfba51a0a44 | 70 | else if (a && !start && !back) { |
el17my | 19:14c5427b30d1 | 71 | _input_value = 3;} |
el17my | 13:30330d61f09c | 72 | } |
el17my | 13:30330d61f09c | 73 | |
el17my | 21:349c70c8a7de | 74 | void Menu::display_page1(N5110 &lcd, Gamepad &gamepad) { |
el17my | 31:8e92b65e0779 | 75 | lcd.printString("START - Play!",0,0); |
el17my | 32:47d98959b4ef | 76 | lcd.printString("A - Controls",0,2); |
el17my | 31:8e92b65e0779 | 77 | lcd.drawSprite(1,25,25,80,(int*)page1_sprite);} |
el17my | 13:30330d61f09c | 78 | |
el17my | 21:349c70c8a7de | 79 | void Menu::display_page2(N5110 &lcd, Gamepad &gamepad) { |
el17my | 13:30330d61f09c | 80 | lcd.printString("METHOD:",0,0); |
el17my | 13:30330d61f09c | 81 | lcd.printString("-Go Left/Right",0,1); |
el17my | 13:30330d61f09c | 82 | lcd.printString("Collect item!",0,4); |
el17my | 31:8e92b65e0779 | 83 | lcd.printString("x -Jump:",0,2); } |
el17my | 13:30330d61f09c | 84 | |
el17my | 21:349c70c8a7de | 85 | void Menu::run_game(N5110 &lcd, Gamepad &gamepad){ |
el17my | 13:30330d61f09c | 86 | _game_engine.run_engine(lcd, gamepad);} |
el17my | 13:30330d61f09c | 87 | |
el17my | 13:30330d61f09c | 88 |