Menu class used as basis for program; running the game and allowing the user to change the style and difficulty of the game via an interface.
Diff: Menu.cpp
- Revision:
- 3:a79daa7c2b55
- Parent:
- 2:917211a4551b
- Child:
- 4:4f20bcef2c0c
--- a/Menu.cpp Fri Apr 07 10:28:49 2017 +0000 +++ b/Menu.cpp Sun Apr 16 12:31:48 2017 +0000 @@ -21,28 +21,16 @@ } -void Menu::init(int mazeIndex) +void Menu::init() { - _mazeIndex = mazeIndex; - - _engine.init(_mazeIndex, 4, 4, 4); - - /* - if ((_mazeIndex == 0) || - (_mazeIndex == 1)) { - - _engine.init(_mazeIndex, 4, 4, 4); - } - - else { - _engine.init(_mazeIndex, 2, 2, 2); - } - */ + // set all default game parameters + _mazeIndex = 0; + _control = true; + _colour = true; } /// MAIN MENU METHOD /// - -void Menu::main(N5110 &lcd, Gamepad &pad, FXOS8700CQ &device) +void Menu::main(N5110 &lcd, Gamepad &pad, FXOS8700CQ &device, Sound &tune, Animations &animate) { int selected = 0; @@ -54,6 +42,7 @@ (d == N) || (d == NE)){ + tune.playTone(pad, 196.00, 0.20); selected -= 1; } @@ -61,6 +50,7 @@ (d == S) || (d == SE)){ + tune.playTone(pad, 196.00, 0.20); selected += 1; } @@ -82,7 +72,8 @@ pad.check_event(Gamepad::JOY_PRESSED)) || (d == E)) { - playGame(_mazeIndex, lcd, pad, device); // call the game function + tune.playTone(pad, 261.63, 0.20); + playGame(lcd, pad, device, tune, _mazeIndex); // call the game function } wait_ms(250); // 250ms propogation delay @@ -104,7 +95,8 @@ pad.check_event(Gamepad::JOY_PRESSED)) || (d == E)) { - options(lcd, pad); + tune.playTone(pad, 261.63, 0.20); + options(lcd, pad, animate); } wait_ms(250); // 250ms propogation delay @@ -126,6 +118,7 @@ pad.check_event(Gamepad::JOY_PRESSED)) || (d == E)) { + tune.playTone(pad, 261.63, 0.20); lcdSettings(lcd, pad); } @@ -148,6 +141,7 @@ pad.check_event(Gamepad::JOY_PRESSED)) || (d == E)) { + tune.playTone(pad, 261.63, 0.20); soundSettings(lcd, pad); } @@ -169,167 +163,80 @@ } /// INTRO LOOP /// - -void intro(N5110 &lcd, Gamepad &pad) +void Menu::intro(N5110 &lcd, Gamepad &pad, Sound &tune, Animations &animate) { - // printf("intro started \n"); while (pad.check_event(Gamepad::START_PRESSED) == false){ - // animation sequence - // lcd.drawCircle(x, y, radius, type); - - // DRAW FIRST SEQUENCE OF CIRLCES MOVING ACROSS LCD // - for (int i = 0; i < 61; i++){ - - lcd.clear(); - lcd.printString(" Welcome to ", 0, 1); - lcd.printString(" Roller Maze ", 0, 2); - // printf("loop \n"); - lcd.drawLine(56, 40, 68, 40, FILL_BLACK); - lcd.drawLine(56, 41, 68, 41, FILL_BLACK); - lcd.refresh(); - - if (i < 57){ - lcd.drawCircle(i, 36, 4, FILL_BLACK); - lcd.refresh(); - wait_ms(50); - - } - - else if (i == 57){ - - lcd.clear(); - lcd.printString(" Welcome to ", 0, 1); - lcd.printString(" Roller Maze ", 0, 2); - // printf("loop \n"); - lcd.drawLine(56, 40, 68, 40, FILL_BLACK); - lcd.drawLine(56, 41, 68, 41, FILL_BLACK); - lcd.drawCircle(i, 37, 4, FILL_BLACK); - - wait_ms(25); - - for (int c = 55; c < 68; c++){ - for (int d = 42; d < 47; d++){ - - lcd.clearPixel(c, 42); - lcd.clearPixel(c, 43); - lcd.clearPixel(c, 44); - lcd.clearPixel(c, 45); - lcd.clearPixel(c, 46); - lcd.clearPixel(c, 47); - lcd.refresh(); - - } - } - - lcd.refresh(); - } - else if (i == 58){ - - lcd.clear(); - lcd.printString(" Welcome to ", 0, 1); - lcd.printString(" Roller Maze ", 0, 2); - // printf("loop \n"); - lcd.drawLine(56, 40, 68, 40, FILL_BLACK); - lcd.drawLine(56, 41, 68, 41, FILL_BLACK); - lcd.drawCircle(i, 38, 4, FILL_BLACK); - - wait_ms(25); - - for (int c = 55; c < 68; c++){ - for (int d = 42; d < 47; d++){ - - lcd.clearPixel(c, 42); - lcd.clearPixel(c, 43); - lcd.clearPixel(c, 44); - lcd.clearPixel(c, 45); - lcd.clearPixel(c, 46); - lcd.clearPixel(c, 47); - lcd.refresh(); - - } - } - - lcd.refresh(); - - } - else if (i == 59){ - - lcd.clear(); - lcd.printString(" Welcome to ", 0, 1); - lcd.printString(" Roller Maze ", 0, 2); - // printf("loop \n"); - lcd.drawLine(56, 40, 68, 40, FILL_BLACK); - lcd.drawLine(56, 41, 68, 41, FILL_BLACK); - lcd.drawCircle(i, 39, 4, FILL_BLACK); - - wait_ms(25); - - for (int c = 55; c < 68; c++){ - for (int d = 42; d < 47; d++){ - - lcd.clearPixel(c, 42); - lcd.clearPixel(c, 43); - lcd.clearPixel(c, 44); - lcd.clearPixel(c, 45); - lcd.clearPixel(c, 46); - lcd.clearPixel(c, 47); - lcd.refresh(); - - } - } - - lcd.refresh(); - - } - else { - - for (int j = 40; j < 48; j++){ - - lcd.clear(); - lcd.printString(" Welcome to ", 0, 1); - lcd.printString(" Roller Maze ", 0, 2); - // printf("loop \n"); - lcd.drawLine(56, 40, 68, 40, FILL_BLACK); - lcd.drawLine(56, 41, 68, 41, FILL_BLACK); - lcd.drawCircle(i, j, 4, FILL_BLACK); - - wait_ms(125); - - for (int c = 55; c < 68; c++){ - for (int d = 42; d < 47; d++){ - - lcd.clearPixel(c, 42); - lcd.clearPixel(c, 43); - lcd.clearPixel(c, 44); - lcd.clearPixel(c, 45); - lcd.clearPixel(c, 46); - lcd.clearPixel(c, 47); - } - } - - } - - lcd.refresh(); - } - - // printf("%i \n", i); - } + animate.intro(lcd, pad, tune); } - - } /// GAME LOOP /// -void playGame(N5110 &lcd, Gamepad &pad, FXOS8700CQ &device) +void Menu::playGame(N5110 &lcd, + Gamepad &pad, + FXOS8700CQ &device, + Sound &tune, + int mazeIndex) { int exit = 0; + int x; + int y; + int radius; + + _mazeIndex = mazeIndex; + + if (_mazeIndex == 0) { + + x = 40; // place ball in start of screen approx. + y = 20; + radius = 4; + } + + else if (_mazeIndex == 1){ + + x = 3; + y = 3; + radius = 2; + } + + else if (_mazeIndex == 2){ + + x = 4; + y = 3; + radius = 1; + } + + _engine.init(_mazeIndex, // selects maze difficulty + x, // defines starting x position for ball + y, // defines starting y position for ball + radius, // radius of ball + _control, // control method + _colour); // type of ball + + // printf out all game parameters + printf("Game parameters: \nDifficulty = %i \n", _mazeIndex); + printf("Ball position = (%i, %i)\n", x, y); + printf("Ball radius = %i \n", radius); + if (_colour){ + printf("Ball colour = black \n"); + } + if (!_colour){ + printf("Ball colour = transparent \n"); + } + if (_control){ + printf("Control method: Joystick \n"); + } + if (!_control){ + printf("Control method: Accelerometer \n"); + } + while (exit == 0){ _engine.readInput(pad, device); - _engine.update(pad); + _engine.update(pad, lcd); + // rendering screen lcd.clear(); _engine.draw(lcd); @@ -339,17 +246,15 @@ // get direction of the joystick char d = pad.get_direction(); - if ((pad.check_event(Gamepad::BACK_PRESSED)) || - (d == W)){ + if (pad.check_event(Gamepad::BACK_PRESSED)){ - exit = 1; + exit++; } } } /// MENU FUNCTIONS /// - -void Menu::options(N5110 &lcd, Gamepad &pad) +void Menu::options(N5110 &lcd, Gamepad &pad, Animations &animate) { int exit = 0; int selected = 0; @@ -384,6 +289,7 @@ lcd.printString("Game Options:", 0, 0); lcd.printString(">Difficulty", 0, 2); lcd.printString(" Ball Colour", 0, 3); + lcd.printString(" Control", 0, 4); lcd.refresh(); if ((pad.check_event(Gamepad::A_PRESSED) || @@ -404,6 +310,7 @@ lcd.printString("Game Options:", 0, 0); lcd.printString(" Difficulty", 0, 2); lcd.printString(">Ball Colour", 0, 3); + lcd.printString(" Control", 0, 4); lcd.refresh(); // if second option selected @@ -418,6 +325,28 @@ break; + case 3: + + lcd.clear(); + // displays options page with indicator on first + lcd.printString("Game Options:", 0, 0); + lcd.printString(" Difficulty", 0, 2); + lcd.printString(" Ball Colour", 0, 3); + lcd.printString(">Control", 0, 4); + lcd.refresh(); + + if ((pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)) || + (d == E)) { + + controlOptions(lcd, pad, animate); + } + + wait_ms(250); + + break; + + default: selected = 1; @@ -428,7 +357,7 @@ if ((pad.check_event(Gamepad::BACK_PRESSED)) || (d == W)){ - exit = 1; + exit++; } } } @@ -473,7 +402,6 @@ pad.check_event(Gamepad::JOY_PRESSED)) || (d == E)) { - lcdBackgroundColour(lcd, pad); } @@ -490,13 +418,11 @@ lcd.printString(">Invert Colour", 0, 3); lcd.refresh(); - // if second option selected if ((pad.check_event(Gamepad::A_PRESSED) || pad.check_event(Gamepad::JOY_PRESSED)) || (d == E)) { - lcdInverseColour(lcd, pad); } @@ -514,7 +440,7 @@ if ((pad.check_event(Gamepad::BACK_PRESSED)) || (d == W)){ - exit = 1; + exit++; } } @@ -524,92 +450,120 @@ void Menu::soundSettings(N5110 &lcd, Gamepad &pad) { - + int selected = 0; int exit = 0; // pad.tone(750.0,0.1); while (exit == 0){ - lcd.clear(); - lcd.printString("Sound settings", 0, 2); - lcd.refresh(); + char d = pad.get_direction(); + + if ((d == NW) || + (d == N) || + (d == NE)){ + + selected -= 1; + } + + if ((d == SW) || + (d == S) || + (d == SE)){ + + selected += 1; + } + - char d = pad.get_direction(); + switch (selected) { + + case 1: + + lcd.clear(); + // displays options page with indicator on first + lcd.printString("Sound Settings", 0, 0); + lcd.printString(">Sound effects", 0, 2); + lcd.printString(" Music", 0, 3); + lcd.refresh(); + + if ((pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)) || + (d == E)) { + + // soundEffects(lcd, pad); + } + + wait_ms(250); + + break; + + case 2: + + lcd.clear(); + // displays options page with indicator on second + lcd.printString("Sound Settings", 0, 0); + lcd.printString(" Sound effects", 0, 2); + lcd.printString(">Music", 0, 3); + lcd.refresh(); + + // if second option selected + if ((pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)) || + (d == E)) { + + // soundEffects(lcd, pad); + } + + wait_ms(250); + + break; + + default: + + selected = 1; + + break; + } if ((pad.check_event(Gamepad::BACK_PRESSED)) || (d == W)){ - exit = 1; + exit++; } } } -void Menu::controlOptions(N5110 &lcd, Gamepad &pad) +void Menu::controlOptions(N5110 &lcd, Gamepad &pad, Animations &animate) { int selected = 0; int exit = 0; while (exit == 0){ + char d = pad.get_direction(); if (d == W){ - selected -= 1; + selected--; } if (d == E){ - selected += 1; + selected++; + } switch(selected){ case 1: - while (selected == 0){ - - lcd.clear(); - lcd.printString("Control: ", 0, 0); - lcd.printString(" Joystick", 0, 2); - - lcd.refresh(); - wait_ms(250); // 250ms propogation delay - - if (pad.check_event(Gamepad::A_PRESSED)|| - pad.check_event(Gamepad::JOY_PRESSED)){ - - CONTROL = true; - } - - break; - - } + animateJoystick(lcd, pad, animate); + + break; case 2: - lcd.clear(); - lcd.printString("Difficulty: ", 0, 0); - lcd.printString(" Easy", 0, 2); - lcd.printString(">Hard", 0, 3); - lcd.refresh(); - - wait_ms(250); // 250ms propogation delay - - if ((pad.check_event(Gamepad::A_PRESSED) || - pad.check_event(Gamepad::JOY_PRESSED)) || - (d == E)) { - - - // maze.mazeIndex = 1; - lcd.clear(); - lcd.printString("Hard mode", 0, 1); - lcd.refresh(); - wait(2); - - exit = 1; - } + animateGamepad(lcd, pad, animate); break; @@ -623,7 +577,7 @@ if (pad.check_event(Gamepad::BACK_PRESSED)){ - exit = 1; + exit++; } } @@ -660,7 +614,9 @@ lcd.clear(); lcd.printString("Difficulty: ", 0, 0); lcd.printString(">Easy", 0, 2); - lcd.printString(" Hard", 0, 3); + lcd.printString(" Medium", 0, 3); + lcd.printString(" Hard", 0, 4); + lcd.printString(" Extreme", 0, 5); lcd.refresh(); wait_ms(250); // 250ms propogation delay @@ -676,7 +632,7 @@ lcd.refresh(); wait(2); - exit = 1; + exit++; } break; @@ -686,9 +642,12 @@ lcd.clear(); lcd.printString("Difficulty: ", 0, 0); lcd.printString(" Easy", 0, 2); - lcd.printString(">Hard", 0, 3); + lcd.printString(">Medium", 0, 3); + lcd.printString(" Hard", 0, 4); + lcd.printString(" Extreme", 0, 5); lcd.refresh(); + wait_ms(250); // 250ms propogation delay if ((pad.check_event(Gamepad::A_PRESSED) || @@ -699,15 +658,75 @@ // maze.mazeIndex = 1; lcd.clear(); + lcd.printString("Medium mode", 0, 1); + lcd.refresh(); + wait(2); + + exit++; + } + + break; + + case 3: + + lcd.clear(); + lcd.printString("Difficulty: ", 0, 0); + lcd.printString(" Easy", 0, 2); + lcd.printString(" Medium", 0, 3); + lcd.printString(">Hard", 0, 4); + lcd.printString(" Extreme", 0, 5); + lcd.refresh(); + + + wait_ms(250); // 250ms propogation delay + + if ((pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)) || + (d == E)) { + + _mazeIndex = 3; + + lcd.clear(); lcd.printString("Hard mode", 0, 1); lcd.refresh(); wait(2); - exit = 1; + exit++; } break; + case 4: + + lcd.clear(); + lcd.printString("Difficulty: ", 0, 0); + lcd.printString(" Easy", 0, 2); + lcd.printString(" Medium", 0, 3); + lcd.printString(" Hard", 0, 4); + lcd.printString(">Extreme", 0, 5); + lcd.refresh(); + + + wait_ms(250); // 250ms propogation delay + + if ((pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)) || + (d == E)) { + + _mazeIndex = 4; + + lcd.clear(); + lcd.printString("Extreme mode", 0, 1); + lcd.refresh(); + wait(2); + + exit++; + } + + break; + + + default: selected = 1; @@ -719,7 +738,7 @@ if ((pad.check_event(Gamepad::BACK_PRESSED)) || (d == W)){ - exit = 1; + exit++; } } @@ -768,13 +787,22 @@ pad.check_event(Gamepad::JOY_PRESSED)) || (d == E)) { - // ball.ballColour = 0; - lcd.clear(); - lcd.printString("Outline", 0, 1); - lcd.refresh(); - wait(2); + _colour = true; - exit = 1; + // shows ball rolling across the screen + for (int i = 0; i < 100; i++){ + + lcd.clear(); + lcd.printString(" Outline ", 0, 1); + lcd.drawCircle(i, 32, 8, FILL_TRANSPARENT); + lcd.refresh(); + wait_ms(40); + + } + + // wait(2); + + exit++; } break; @@ -796,15 +824,23 @@ pad.check_event(Gamepad::JOY_PRESSED)) || (d == E)) { - // ball.ballColour = 1; - lcd.clear(); - lcd.printString("Solid", 0, 1); - lcd.refresh(); - wait(2); + _colour = false; - exit = 1; + // shows ball rolling across the screen + for (int i = 0; i < 100; i++){ + + lcd.clear(); + lcd.printString(" Solid ", 0, 1); + lcd.drawCircle(i, 32, 8, FILL_BLACK); + lcd.refresh(); + wait_ms(40); + + + } } + exit++; + break; default: @@ -817,7 +853,7 @@ if ((pad.check_event(Gamepad::BACK_PRESSED)) || (d == W)){ - exit = 1; + exit++; } } @@ -856,7 +892,7 @@ if ((pad.check_event(Gamepad::BACK_PRESSED)) || (d == W)){ - exit = 1; + exit++; } } @@ -893,72 +929,292 @@ if ((pad.check_event(Gamepad::BACK_PRESSED)) || (d == W)){ - exit = 1; + exit++; + } + } +} + +void Menu::animateJoystick(N5110 &lcd, Gamepad &pad, Animations &animate) +{ + int exit = 0; + + while (exit == 0){ + + char d = pad.get_direction(); + + lcd.clear(); + lcd.printString("Control: ", 0, 0); + lcd.printString(" Joystick ", 0, 2); + lcd.printString(" >", 0, 3); + animate.drawLeftJoystick(lcd); + lcd.refresh(); + lcd.clear(); + wait_ms(500); + + if (pad.check_event(Gamepad::A_PRESSED)|| + pad.check_event(Gamepad::JOY_PRESSED)){ + + _control = true; + + lcd.clear(); + lcd.printString(" JOYSTICK ", 0, 1); + lcd.printString(" SELECTED ", 0, 2); + lcd.refresh(); + wait(1); + + return; + } + + if (d == E){ + + exit++; } + lcd.clear(); + lcd.printString("Control: ", 0, 0); + lcd.printString(" Joystick ", 0, 2); + lcd.printString(" >", 0, 3); + animate.drawVerticalJoystick(lcd); + lcd.refresh(); + wait_ms(500); + + if (pad.check_event(Gamepad::A_PRESSED)|| + pad.check_event(Gamepad::JOY_PRESSED)){ + + _control = true; + + lcd.clear(); + lcd.printString(" JOYSTICK ", 0, 1); + lcd.printString(" SELECTED ", 0, 2); + lcd.refresh(); + wait(1); + + return; + } + + if (d == E){ + + exit++; + } + + lcd.clear(); + lcd.printString("Control: ", 0, 0); + lcd.printString(" Joystick ", 0, 2); + lcd.printString(" >", 0, 3); + animate.drawRightJoystick(lcd); + lcd.refresh(); + wait_ms(500); + + if (pad.check_event(Gamepad::A_PRESSED)|| + pad.check_event(Gamepad::JOY_PRESSED)){ + + _control = true; + + lcd.clear(); + lcd.printString(" JOYSTICK ", 0, 1); + lcd.printString(" SELECTED ", 0, 2); + lcd.refresh(); + wait(1); + + return; + } + + if (d == E){ + + exit++; + } + + + lcd.clear(); + lcd.printString("Control: ", 0, 0); + lcd.printString(" Joystick ", 0, 2); + lcd.printString(" >", 0, 3); + animate.drawVerticalJoystick(lcd); + lcd.refresh(); + wait_ms(500); + + if (pad.check_event(Gamepad::A_PRESSED)|| + pad.check_event(Gamepad::JOY_PRESSED)){ + + _control = true; + + lcd.clear(); + lcd.printString(" JOYSTICK ", 0, 1); + lcd.printString(" SELECTED ", 0, 2); + lcd.refresh(); + wait(1); + + return; + } + + if (d == E){ + + return; + } } } -void Menu::animateJoystick(N5110 &lcd) -{ - drawVerticalJoystick(lcd); - -} - - -void Menu::drawVerticalJoystick(N5110 &lcd) +void Menu::animateGamepad(N5110 &lcd, Gamepad &pad, Animations &animate) { - /* Drawing a vertical joystick image - - 33 #### - 34 ############ - 35 ################ - 36 ## - 37 ## - 38 ######## - 39 ################ - 40 ###################### - 41 ######################## - 42 ########################## - 43 ########################## - 44 23456789012345678901234567 - 3 4 5 - - */ + int exit = 0; - for (int i = 32; i < 58; i++){ - lcd.setPixel(i, 43); - lcd.setPixel(i, 42); - } - for (int i = 33; i < 57; i++){ - lcd.setPixel(i, 41); - } - for (int i = 34; i < 56; i++){ - lcd.setPixel(i, 40); - } - for (int i = 37; i < 54; i++){ - lcd.setPixel(i, 39); - } - for (int i = 41; i < 49; i++){ - lcd.setPixel(i, 38); - } - - lcd.setPixel(44, 37); - lcd.setPixel(45, 37); - lcd.setPixel(44, 36); - lcd.setPixel(45, 36); - - for (int i = 37; i < 54; i++){ - lcd.setPixel(i, 35); - } - for (int i = 39; i < 52; i++){ - lcd.setPixel(i, 34); - } - for (int i = 43; i < 47; i++){ - lcd.setPixel(i, 33); + while (exit == 0){ + + char d = pad.get_direction(); + + if (d == W){ + + exit++; + } + + lcd.clear(); + lcd.printString("Control: ", 0, 0); + lcd.printString(" Gamepad ", 0, 2); + lcd.printString("< ", 0, 3); + animate.drawLeftGamepad(lcd); + lcd.refresh(); + lcd.clear(); + wait_ms(500); + + if (d == W){ + + exit++; + } + + if (pad.check_event(Gamepad::A_PRESSED)|| + pad.check_event(Gamepad::JOY_PRESSED)){ + + _control = false; + + lcd.clear(); + lcd.printString(" TILT ", 0, 1); + lcd.printString(" SELECTED ", 0, 2); + lcd.refresh(); + wait(2); + + return; + } + + if (d == W){ + + exit++; + } + + lcd.clear(); + lcd.printString("Control: ", 0, 0); + lcd.printString(" Gamepad ", 0, 2); + lcd.printString("< ", 0, 3); + animate.drawVerticalGamepad(lcd); + lcd.refresh(); + wait_ms(500); + + if (d == W){ + + exit++; + } + + if (pad.check_event(Gamepad::A_PRESSED)|| + pad.check_event(Gamepad::JOY_PRESSED)){ + + _control = false; + + lcd.clear(); + lcd.printString(" TILT ", 0, 1); + lcd.printString(" SELECTED ", 0, 2); + lcd.refresh(); + wait(1); + + return; + } + + if (d == W){ + + exit++; + } + + if (pad.check_event(Gamepad::A_PRESSED)|| + pad.check_event(Gamepad::JOY_PRESSED)){ + + _control = false; + + lcd.clear(); + lcd.printString(" TILT ", 0, 1); + lcd.printString(" SELECTED ", 0, 2); + lcd.refresh(); + wait(1); + + return; + } + + if (d == W){ + + exit++; + } + + lcd.clear(); + lcd.printString("Control: ", 0, 0); + lcd.printString(" Gamepad ", 0, 2); + lcd.printString("< ", 0, 3); + animate.drawRightGamepad(lcd); + lcd.refresh(); + wait_ms(500); + + if (d == W){ + + exit++; + } + + if (pad.check_event(Gamepad::A_PRESSED)|| + pad.check_event(Gamepad::JOY_PRESSED)){ + + _control = false; + + lcd.clear(); + lcd.printString(" TILT ", 0, 1); + lcd.printString(" SELECTED ", 0, 2); + lcd.refresh(); + wait(1); + + return; + } + + if (d == W){ + + exit++; + } + + lcd.clear(); + lcd.printString("Control: ", 0, 0); + lcd.printString(" Gamepad ", 0, 2); + lcd.printString("< ", 0, 3); + animate.drawVerticalGamepad(lcd); + lcd.refresh(); + wait_ms(500); + + if (d == W){ + + exit++; + } + + if (pad.check_event(Gamepad::A_PRESSED)|| + pad.check_event(Gamepad::JOY_PRESSED)){ + + _control = false; + + lcd.clear(); + lcd.printString(" TILT ", 0, 1); + lcd.printString(" SELECTED ", 0, 2); + lcd.refresh(); + wait(1); + + return; + } + + if (d == W){ + + exit++; + } } } - -