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
Diff: Menus/Menus.cpp
- Revision:
- 17:cb39d9fa08dc
- Parent:
- 16:a2c945279b79
- Child:
- 20:3c58ae38d6bc
diff -r a2c945279b79 -r cb39d9fa08dc Menus/Menus.cpp --- a/Menus/Menus.cpp Wed Apr 24 13:44:12 2019 +0000 +++ b/Menus/Menus.cpp Sat Apr 27 17:43:46 2019 +0000 @@ -7,10 +7,9 @@ Menus::Menus() { - _health = 6; - _mute = false; - _contrast = 0.4; - _brightness = 1.0; + _health = 6; + _mute = false; + _contrast = 0.4; } Menus::~Menus() @@ -20,145 +19,161 @@ void Menus::start_up_screen(Graphics &graphics, N5110 &lcd, Gamepad &pad) { - while(pad.check_event(Gamepad::START_PRESSED) == false) { - _read_inputs(pad); - lcd.clear(); - lcd.printString(" TANKS! ",0,1); - lcd.printString(" Press Start ",0,3); - _start_up_visuals(graphics, lcd, pad); - lcd.drawRect(0, 0, 84 , 48, FILL_TRANSPARENT); - lcd.drawRect(1, 1, 82 , 46, FILL_TRANSPARENT); - lcd.refresh(); - } + while(pad.check_event(Gamepad::START_PRESSED) == false) { + _read_inputs(pad); + lcd.clear(); + lcd.printString(" TANKS! ",0,1); + lcd.printString(" Press Start ",0,3); + _start_up_visuals(graphics, lcd, pad); + lcd.drawRect(0, 0, 84 , 48, FILL_TRANSPARENT); + lcd.drawRect(1, 1, 82 , 46, FILL_TRANSPARENT); + lcd.refresh(); + } } -void Menus::main_menu(Graphics &graphics, N5110 &lcd, Gamepad &pad, Scores &scores) +void Menus::main_menu(Graphics &graphics, N5110 &lcd, Gamepad &pad, + Scores &scores) { - while(pad.check_event(Gamepad::Y_PRESSED) == false) { - - pad.leds_off(); - pad.check_event(Gamepad::BACK_PRESSED); - lcd.clear(); - if (pad.check_event(Gamepad::X_PRESSED) == true) { _controls(lcd, pad); } - else if (pad.check_event(Gamepad::A_PRESSED) == true) { _settings(lcd, pad); } - else if (pad.check_event(Gamepad::B_PRESSED) == true) { _scores(lcd, pad, scores); } - lcd.printString(" (Y) Play",0,1); - lcd.printString(" (X) Controls",0,2); - lcd.printString(" (A) Settings",0,3); - lcd.printString(" (B) Scores",0,4); - lcd.drawRect(0, 0, 84 , 48, FILL_TRANSPARENT); - lcd.drawRect(1, 1, 82 , 46, FILL_TRANSPARENT); - lcd.refresh(); - wait_ms(1000/60); + while(pad.check_event(Gamepad::Y_PRESSED) == false) { + pad.leds_off(); + lcd.clear(); + _main_menu_controls(lcd, pad, scores); + lcd.printString(" (Y) Play",0,1); + lcd.printString(" (X) Controls",0,2); + lcd.printString(" (A) Settings",0,3); + lcd.printString(" (B) Scores",0,4); + lcd.drawRect(0, 0, 84 , 48, FILL_TRANSPARENT); + lcd.drawRect(1, 1, 82 , 46, FILL_TRANSPARENT); + lcd.refresh(); + wait_ms(1000/60); + } +} + +void Menus::_main_menu_controls(N5110 &lcd, Gamepad &pad, Scores &scores) +{ + while(pad.check_event(Gamepad::Y_PRESSED) == false) { + pad.check_event(Gamepad::BACK_PRESSED); + if (pad.check_event(Gamepad::X_PRESSED) == true) { + _controls_screen(lcd, pad); } + else if (pad.check_event(Gamepad::A_PRESSED) == true) { + _settings_screen(lcd, pad); + } + else if (pad.check_event(Gamepad::B_PRESSED) == true) { + _scores_screen(lcd, pad, scores); + } + } } void Menus::_start_up_visuals(Graphics &graphics, N5110 &lcd, Gamepad &pad) { - if (_counter >= 0) { - graphics.start_up(1, pad); - graphics.draw_tank_l(10, 5, lcd); - graphics.draw_turret_l(10, 5, 10, lcd); - graphics.draw_tank_r(64, 5, lcd); - graphics.draw_turret_r(64, 5, 180, lcd); - } else { - graphics.start_up(0, pad); - graphics.draw_tank_l(10, 5, lcd); - graphics.draw_turret_l(10, 5, 180, lcd); - graphics.draw_tank_r(64, 5, lcd); - graphics.draw_turret_r(64, 5, 340, lcd); - } - if (_counter >= 199) { _counter = -200; } - _counter++; + if (_counter >= 0) { + graphics.start_up(1, pad); + graphics.draw_tank_l(10, 5, lcd); + graphics.draw_turret_l(10, 5, 10, lcd); + graphics.draw_tank_r(64, 5, lcd); + graphics.draw_turret_r(64, 5, 180, lcd); + } else { + graphics.start_up(0, pad); + graphics.draw_tank_l(10, 5, lcd); + graphics.draw_turret_l(10, 5, 180, lcd); + graphics.draw_tank_r(64, 5, lcd); + graphics.draw_turret_r(64, 5, 340, lcd); + } + if (_counter >= 199) { + _counter = -200; + } + _counter++; } void Menus::_read_inputs(Gamepad &pad) { - pad.check_event(Gamepad::Y_PRESSED); - pad.check_event(Gamepad::X_PRESSED); - pad.check_event(Gamepad::A_PRESSED); - pad.check_event(Gamepad::B_PRESSED); + pad.check_event(Gamepad::Y_PRESSED); + pad.check_event(Gamepad::X_PRESSED); + pad.check_event(Gamepad::A_PRESSED); + pad.check_event(Gamepad::B_PRESSED); } -void Menus::_controls(N5110 &lcd, Gamepad &pad) +void Menus::_controls_screen(N5110 &lcd, Gamepad &pad) { - while(pad.check_event(Gamepad::BACK_PRESSED) == false) { - - _read_inputs(pad); - lcd.clear(); - lcd.printString(" Stick: Aim",0,1); - lcd.printString(" A : Fire",0,2); - lcd.printString(" L/R : Move",0,3); - lcd.printString(" Pot : Power",0,4); - lcd.drawRect(0, 0, 84 , 48, FILL_TRANSPARENT); - lcd.drawRect(1, 1, 82 , 46, FILL_TRANSPARENT); - lcd.refresh(); - wait_ms(1000/60); - } + while(pad.check_event(Gamepad::BACK_PRESSED) == false) { + _read_inputs(pad); + lcd.clear(); + lcd.printString(" Stick: Aim",0,1); + lcd.printString(" A : Fire",0,2); + lcd.printString(" L/R : Move",0,3); + lcd.printString(" Pot : Power",0,4); + lcd.drawRect(0, 0, 84 , 48, FILL_TRANSPARENT); + lcd.drawRect(1, 1, 82 , 46, FILL_TRANSPARENT); + lcd.refresh(); + wait_ms(1000/60); + } } -void Menus::_settings(N5110 &lcd, Gamepad &pad) +void Menus::_settings_screen(N5110 &lcd, Gamepad &pad) { - while(pad.check_event(Gamepad::BACK_PRESSED) == false) { - - lcd.clear(); - _mute_brightness_lives(lcd, pad); - _read_inputs(pad); - lcd.printString("(O) Health:",4,1); - lcd.printString("(A) Mute:",4,2); - lcd.printString("(B) Brightness",4,3); - lcd.printString("tune with pot",4,4); - lcd.drawRect(0, 0, 84 , 48, FILL_TRANSPARENT); - lcd.drawRect(1, 1, 82 , 46, FILL_TRANSPARENT); - lcd.refresh(); - wait_ms(1000/60); - } + while(pad.check_event(Gamepad::BACK_PRESSED) == false) { + lcd.clear(); + _mute_brightness_lives(lcd, pad); + _read_inputs(pad); + lcd.printString("(O) Health:",4,1); + lcd.printString("(A) Mute:",4,2); + lcd.printString("(B) Brightness",4,3); + lcd.printString("tune with pot",4,4); + lcd.drawRect(0, 0, 84 , 48, FILL_TRANSPARENT); + lcd.drawRect(1, 1, 82 , 46, FILL_TRANSPARENT); + if (_mute == true ) { + lcd.drawRect(70, 17, 7 , 7, FILL_BLACK); + } else { + lcd.drawRect(70, 17, 7 , 7, FILL_TRANSPARENT); + } + lcd.refresh(); + wait_ms(1000/60); + } } void Menus::_mute_brightness_lives(N5110 &lcd, Gamepad &pad) { - _counter--; - if (_counter < 0) { // counter stops multiple consecutive button clicks - _counter = 10; - if (pad.get_direction() == W && _health > 1) { _health-- ; } - else if (pad.get_direction() == E && _health < 6) { _health++ ; } - else if (pad.check_event(Gamepad::A_PRESSED) == true) { _mute = !_mute; } - else if (pad.check_event(Gamepad::B_PRESSED) == true) { - _brightness = pad.read_pot(); - lcd.setBrightness(_brightness); - } - else { _counter = -1; } - } - char buffer[14]; - sprintf(buffer,"%d",_health); - lcd.printString(buffer, 74, 1); - if (_mute == true ) { lcd.drawRect(70, 17, 7 , 7, FILL_BLACK); } - else { lcd.drawRect(70, 17, 7 , 7, FILL_TRANSPARENT); } + _counter--; + if (_counter < 0) { // counter stops multiple consecutive button clicks + _counter = 10; + if (pad.get_direction() == W && _health > 1) { + _health-- ; + } else if (pad.get_direction() == E && _health < 6) { + _health++ ; + } else if (pad.check_event(Gamepad::A_PRESSED) == true) { + _mute = !_mute; + } else if (pad.check_event(Gamepad::B_PRESSED) == true) { + lcd.setBrightness(pad.read_pot()); + } else { + _counter = -1; + } + } + char buffer[14]; + sprintf(buffer,"%d",_health); + lcd.printString(buffer, 74, 1); } -void Menus::_scores(N5110 &lcd, Gamepad &pad, Scores &scores) +void Menus::_scores_screen(N5110 &lcd, Gamepad &pad, Scores &scores) { - while(pad.check_event(Gamepad::BACK_PRESSED) == false) { - - lcd.clear(); - // if (pad.check_event(Gamepad::A_PRESSED) == true) { scores.read_sd_scores() } - // else if (pad.check_event(Gamepad::B_PRESSED) == true) { scores.write_sd_scores() } - scores.display_top_scores(lcd); - lcd.printString("High Scores", 10, 1); - lcd.drawRect(0, 0, 84 , 48, FILL_TRANSPARENT); - lcd.drawRect(1, 1, 82 , 46, FILL_TRANSPARENT); - _read_inputs(pad); - lcd.refresh(); - wait_ms(1000/60); - } + while(pad.check_event(Gamepad::BACK_PRESSED) == false) { + lcd.clear(); + scores.display_top_scores(lcd); + lcd.printString("High Scores", 10, 1); + lcd.drawRect(0, 0, 84 , 48, FILL_TRANSPARENT); + lcd.drawRect(1, 1, 82 , 46, FILL_TRANSPARENT); + _read_inputs(pad); + lcd.refresh(); + wait_ms(1000/60); + } } bool Menus::get_mute() { - return _mute; + return _mute; } int Menus::get_health() { - return _health; + return _health; } \ No newline at end of file