Mortal Kombat Game ELEC2645
Dependencies: mbed N5110 ShiftReg Joystick
Diff: Menu.cpp
- Revision:
- 20:4ca04fd0965a
- Parent:
- 3:1d99b6ad4f9e
- Child:
- 21:fad1c9f010d1
--- a/Menu.cpp Fri Apr 30 03:49:59 2021 +0000 +++ b/Menu.cpp Fri May 07 16:58:36 2021 +0000 @@ -1,10 +1,41 @@ #include "Menu.h" #include "mbed.h" - // This class is responsible for presenting the GUI of the game Menu::Menu() {} +void Menu::menu_render(N5110 &lcd) { + main_menu(lcd); + wait(3.0f); + created_by(lcd); + wait(3.0f); + homescreen(lcd); + wait(3.0f); + lcd.refresh(); +} + +void Menu::homescreen_select(int user_input, N5110 &lcd, DigitalIn &buttonA, DigitalIn &buttonB, DigitalIn &buttonC, DigitalIn &buttonD) { + user_input = get_user_input(buttonA, buttonB, buttonC, buttonD); + switch(user_input) { + case 1: + play(lcd); + user_input = 0; + break; + case 2: + tutorial(lcd); + user_input = 0; + break; + case 3: + options_menu(lcd, buttonA, buttonB, buttonC, buttonD); + user_input = 0; + break; + default: + homescreen(lcd); + user_input = 0; + break; + } +} + void Menu::draw_logo(N5110 &lcd, int x, int y) { // Mortal Kombat Logo const int logo[17][19] = { @@ -82,106 +113,40 @@ lcd.refresh(); } -void Menu::options_menu(N5110 &lcd, DigitalIn &buttonA, DigitalIn &buttonB, DigitalIn &buttonC) { +void Menu::options_menu(N5110 &lcd, DigitalIn &buttonA, DigitalIn &buttonB, DigitalIn &buttonC, DigitalIn &buttonD) { lcd.clear(); lcd.printString("Select Option: ", 0, 0); lcd.printString("A-Sound ON/OFF", 0, 2); lcd.printString("B-Brightness", 0, 3); lcd.printString("C-Go back", 0, 4); - /* - while (1) { - if (buttonA.read() == 1) { - lcd.printString(" Sound turned ON!", 0, 3); // Note: add code for sound ON/OFF after making sound library! - break; - } - if (buttonB.read() == 1) { - lcd.printString("Set Brightness to: ", 0, 0); - lcd.printString(" A - High", 0, 3); - lcd.printString(" B - Medium", 0, 4); - lcd.printString(" C - Low", 0, 5); - if (buttonA.read() == 1) {lcd.setBrightness(0.2);} - if (buttonB.read() == 1) {lcd.setBrightness(0.5);} - if (buttonC.read() == 1) {lcd.setBrightness(0.8);} - break; - } - if (buttonC.read() == 1) { - homescreen(lcd); - break; - } - */ lcd.refresh(); } -void Menu::menu_selection(N5110 &lcd, DigitalIn &buttonA, DigitalIn &buttonB, DigitalIn &buttonC, DigitalIn &buttonD) { - // this function takes the user input and selects the relevant menu item - - while (1) { - /* - int user_input = get_user_input(int input, buttonA, buttonB, buttonC, buttonD); - if (user_input == 1) { - play(lcd); - break; - } - if (user_input == 2) { - tutorial(lcd); - break; - } - if (user_input == 3) { - options_menu(lcd, buttonA, buttonB, buttonC); - break; - } - if (user_input == 4) { - homescreen(lcd); - break; // Note for possible mistakes: address-of operator or int input in this function - } - */ - // working code - if (buttonA.read() == 1) { // we use if statement instead of while loop so that button input do not interfere with the next menu, only this one! - play(lcd); - break; - } - if (buttonB.read() == 1) { - tutorial(lcd); - break; - } - if (buttonC.read() == 1) { - options_menu(lcd, buttonA, buttonB, buttonC); - break; - } - if (buttonD.read() == 1) { // user can click button D to return to main menu - homescreen(lcd); - continue; - } +int Menu::get_user_input(DigitalIn &buttonA, DigitalIn &buttonB, DigitalIn &buttonC, DigitalIn &buttonD) { + if (buttonA.read() == 1) { + user_input = 1; // A = 1 + printf("User input = %i\n", user_input); + } + else if (buttonB.read() == 1) { + user_input = 2; // B = 2 + printf("User input = %i\n", user_input); } + else if (buttonC.read() == 1) { + user_input = 3; // C = 3 + printf("User input = %i\n", user_input); + } + else if (buttonD.read() == 1) { + user_input = 4; // D = 4 + printf("User input = %i\n", user_input); + } + else { + user_input = 0; + printf("User input = %i\n", user_input); + } + return user_input; } -// ****************************************************************************************************************************** -/* -// function - gets user input from buttons A B C D -int Menu::get_user_input(int &input, DigitalIn &buttonA, DigitalIn &buttonB, DigitalIn &buttonC, DigitalIn &buttonD) { - // we use address-of operator for int input to pass the actual reference for the input value not just a copy of it - while (1) { - if (buttonA.read() == 1) { - input = 1; - break; - } - if (buttonB.read() == 1) { - input = 2; - break; - } - if (buttonC.read() == 1) { - input = 3; - break; - } - if (buttonD.read() == 1) { - input = 4; - break; - } - } - printf("input is %i", input); - return input; -} -*/ +