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 FATFileSystem
Diff: Menu/Menu.cpp
- Revision:
- 3:a8960004d261
- Parent:
- 2:81cfa8310f55
- Child:
- 4:035448357749
--- a/Menu/Menu.cpp Wed Mar 20 18:23:22 2019 +0000
+++ b/Menu/Menu.cpp Fri Mar 29 18:45:40 2019 +0000
@@ -16,6 +16,12 @@
//public methods
+void Menu::init()
+{
+ _cursor_pos = START; //cursor begins on start
+
+}
+//prints welcome screen
void Menu::print_welcome(N5110 &lcd)
{
lcd.clear();
@@ -24,28 +30,46 @@
lcd.printString("by",0,2);
lcd.printString("Ellis Blackford Stroud",0,3);
lcd.refresh();
+ wait(1);
+ lcd.clear();
+ lcd.printString("Use joystick",0,1);
+ lcd.printString("and START/BACK",0,2);
+ lcd.printString("to navigate menu !",0,3);
+ lcd.refresh();
+ wait(1);
}
-
+//prints main menu screen
void Menu::print_menu(N5110 &lcd)
{
lcd.clear();
- lcd.printString("Use joystick",0,2);
- lcd.printString("to select !",0,3);
- wait(2);
- lcd.clear();
lcd.printString("Start Game",10,0);
lcd.printString("Highscores",10,2);
lcd.printString("Settings",10,4);
lcd.refresh();
}
-
+//prints start screen and waits to start game
+bool Menu::check_start(N5110 &lcd, Gamepad &pad)
+{
+ lcd.clear();
+ lcd.printString("Press A ?",8,2);
+ lcd.printString("to start?",8,3);
+ lcd.refresh();
+ while(pad.check_event(Gamepad::A_PRESSED) == false) {
+ wait(0.2);
+ }
+ lcd.clear();
+ lcd.refresh();
+ printf("GAME STARTED");
+ return true;
+}
+//prints highscores screen
void Menu::print_highscores(N5110 &lcd)
{
lcd.clear();
lcd.printString("Highscores",0,2);
lcd.refresh();
}
-
+//prints settings screen
void Menu::print_settings(N5110 &lcd)
{
lcd.clear();
@@ -53,77 +77,122 @@
lcd.refresh();
}
-void Menu::print_start(N5110 &lcd)
+//changes menu screen using cursor position and returns true if begin start
+bool Menu::menu_change(N5110 &lcd, Gamepad &pad)
{
- lcd.clear();
- lcd.printString("Start?",0,2);
- lcd.refresh();
+ int m = _cursor_pos;
+
+ switch(m) { //uses cursor position to select next screen
+ case 0:
+ //returns true if start game
+ {
+ bool start = check_start(lcd, pad);
+ return start;
+ }
+ case 1:
+ print_highscores(lcd);
+ return false;
+ case 2:
+ print_settings(lcd);
+ return false;
+ default: // default case
+ return false;
+ }
+}
+
+void Menu::menu_return(N5110 &lcd, Gamepad &pad)
+{
+ while(pad.check_event(Gamepad::BACK_PRESSED) == false) {
+
+ }
+ print_menu(lcd);
}
//Uses joystick direction to select menu option
-MenuChoices Menu::menu_choice(MenuChoices menu, Gamepad &pad, N5110 &lcd)
+void Menu::menu_select(Gamepad &pad, N5110 &lcd)
{
- int d = pad.get_direction();
- MenuChoices m = menu;
+ while(pad.check_event(Gamepad::START_PRESSED) == false) { //loops until start pressed
+
+ int d = pad.get_direction();
+ MenuChoices cursor_pos = _cursor_pos;
+
+ switch(cursor_pos) {
+ //cursor on start
+ case 0:
+ draw_cursor(lcd);
+ switch(d) {
+ case 0: //joystick centered
+ _cursor_pos = START;
+ break;
+ case 1: //joystick up
+ _cursor_pos = SETTINGS;
+ break;
+ case 5: //joystick down
+ _cursor_pos = HIGHSCORES;
+ break;
+ }
+ break;
+ //cursor on highscores
+ case 1:
+ draw_cursor(lcd);
+ switch(d) {
+ case 0: //joystick centered
+ _cursor_pos = HIGHSCORES;
+ break;
+ case 1: //joystick up
+ _cursor_pos = START;
+ break;
+ case 5: //joystick down
+ _cursor_pos = SETTINGS;
+ break;
+ }
+ break;
+ //cursor on settings
+ case 2:
+ draw_cursor(lcd);
+ switch(d) {
+ case 0: //joystick centered
+ _cursor_pos = SETTINGS;
+ break;
+ case 1: //joystick up
+ _cursor_pos = HIGHSCORES;
+ break;
+ case 5: //joystick down
+ _cursor_pos = START;
+ break;
+ }
+ break;
+ }
+
+ wait(0.2);
+ }
- switch(m) {
- //cursor on start
- case 0:
+}
+
+
+//private methods
+
+//draws cursor in necessary position
+void Menu::draw_cursor(N5110 &lcd)
+{
+ int cursor_pos = _cursor_pos;
+ switch(cursor_pos) {
+ case 0: //cursor on start
lcd.drawRect(0,16,6,8,FILL_WHITE);
lcd.drawRect(0,32,6,8,FILL_WHITE);
- lcd.drawRect(0,0,6,8,FILL_TRANSPARENT);
-
- switch(d) {
- case 0: //joystick centered
- m = START;
- break;
- case 1: //joystick up
- m = SETTINGS;
- break;
- case 5: //joystick down
- m = HIGHSCORES;
- break;
- }
+ lcd.drawRect(0,0,6,8,FILL_TRANSPARENT);
break;
- //cursor on highscores
- case 1:
+ case 1: //cursor on highscores
lcd.drawRect(0,0,6,8,FILL_WHITE);
lcd.drawRect(0,32,6,8,FILL_WHITE);
lcd.drawRect(0,16,6,8,FILL_TRANSPARENT);
-
- switch(d) {
- case 0: //joystick centered
- m = HIGHSCORES;
- break;
- case 1: //joystick up
- m = START;
- break;
- case 5: //joystick down
- m = SETTINGS;
- break;
- }
break;
- //cursor on settings
- case 2:
+ case 2: //cursor on settings
lcd.drawRect(0,0,6,8,FILL_WHITE);
lcd.drawRect(0,16,6,8,FILL_WHITE);
lcd.drawRect(0,32,6,8,FILL_TRANSPARENT);
-
- switch(d) {
- case 0: //joystick centered
- m = SETTINGS;
- break;
- case 1: //joystick up
- m = HIGHSCORES;
- break;
- case 5: //joystick down
- m = START;
- break;
- }
break;
- }
- return m;
-}
-
-//private methods
+ }
+ lcd.refresh();
+}
\ No newline at end of file