![](/media/cache/profiles/f16cb71ca1813353fcef2c86431621a7.jpg.50x50_q85.png)
el15mh 200929957
Diff: main.cpp
- Revision:
- 2:a488caea1601
- Parent:
- 1:8ce2586b5965
- Child:
- 3:02653cb1c8f8
--- a/main.cpp Thu Mar 30 12:22:51 2017 +0000 +++ b/main.cpp Thu Mar 30 14:08:03 2017 +0000 @@ -8,180 +8,269 @@ // FUNCTION PROTOTYPES // void init(); +void difficultyOptions(); +void colourOptions(); + int main() { init(); // initialise devices - while(1){ - - int selected = 0; - int exit = 0; + printf("Devices initialised \n"); + + int selected = 0; + + while(1) { - while(exit == 0){ - - int back = 0; - - switch (selected) { - - case 1: - - 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.refresh(); - - while (back == 0){ - - // if first option selected - if (pad.check_event(Gamepad::A_PRESSED) || - pad.check_event(Gamepad::JOY_PRESSED)){ - - switch(selected){ - - case 1: - - lcd.clear(); - lcd.printString("Difficulty: ", 0, 0); - lcd.printString(">Easy", 0, 2); - lcd.printString(" Hard", 0, 3); - lcd.refresh(); - - if (pad.check_event(Gamepad::A_PRESSED) || - pad.check_event(Gamepad::JOY_PRESSED)){ - - // maze.mazeIndex = 0; - } - - wait_ms(250); - - break; - - case 2: - - lcd.clear(); - lcd.printString("Difficulty: ", 0, 0); - lcd.printString(" Easy", 0, 2); - lcd.printString(">Hard", 0, 3); - lcd.refresh(); - - if (pad.check_event(Gamepad::A_PRESSED) || - pad.check_event(Gamepad::JOY_PRESSED)){ - - // maze.mazeIndex = 1; - lcd.printString("Hard selected", 0, 1); - lcd.refresh(); - } - - wait_ms(250); - - break; - - default: - - selected = 0; - - break; - - } - } - - if (pad.check_event(Gamepad::BACK_PRESSED)){ - - back = 1; - } - } + // printf("While loop 1 \n"); + // printf("Selected = %i \n", selected); + switch (selected) { + + case 1: + + 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.refresh(); + + if (pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)){ - wait(1); // 1s propogation delay - - case 2: - - lcd.clear(); - // displays options page with indicator on second - lcd.printString("Game Options:", 0, 0); - lcd.printString(" Difficulty", 0, 2); - lcd.printString(">Ball Colour", 0, 3); - lcd.refresh(); + difficultyOptions(); + } + + wait_ms(250); + + break; + + case 2: + + lcd.clear(); + // displays options page with indicator on second + lcd.printString("Game Options:", 0, 0); + lcd.printString(" Difficulty", 0, 2); + lcd.printString(">Ball Colour", 0, 3); + lcd.refresh(); + + // if second option selected + if (pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)){ - while (back == 0){ - - // if second option selected - if (pad.check_event(Gamepad::A_PRESSED) || - pad.check_event(Gamepad::JOY_PRESSED)){ - - switch (selected){ - - case 1: - - lcd.clear(); - lcd.printString("Ball colour: ", 0, 0); - lcd.printString(">Transparent", 0, 2); - lcd.printString(" Solid", 0, 3); - lcd.refresh(); - - if (pad.check_event(Gamepad::A_PRESSED) || - pad.check_event(Gamepad::JOY_PRESSED)){ - - // ball.ballColour = 0; - lcd.clear(); - lcd.printString("Transparent", 0, 1); - lcd.refresh(); - - wait(2); - } - - break; - - case 2: - - lcd.printString("Ball colour: ", 0, 0); - lcd.printString(" Transparent", 0, 2); - lcd.printString(">Solid", 0, 3); - lcd.refresh(); - - if (pad.check_event(Gamepad::A_PRESSED) || - pad.check_event(Gamepad::JOY_PRESSED)){ - - // ball.ballColour = 1; - lcd.clear(); - lcd.printString("Solid", 0, 1); - lcd.refresh(); - - wait(2); - } - - break; - - default: - - selected = 0; - break; - } - - if (pad.check_event(Gamepad::BACK_PRESSED)){ - - back = 1; - } - } - - wait(1); // 1s propogation delay - - } - - if (pad.check_event(Gamepad::BACK_PRESSED)){ - - exit = 1; - } - } + colourOptions(); + } + + wait_ms(250); + + break; + + default: + + selected = 1; + + break; + } + + char d = pad.get_direction(); + + if ((d == NW) || + (d == N) || + (d == NE)){ + + selected -= 1; + } + + if ((d == SW) || + (d == S) || + (d == SE)){ + + selected += 1; + } + + if (pad.check_event(Gamepad::Y_PRESSED)){ + + selected -= 1; + } + + if (pad.check_event(Gamepad::X_PRESSED)){ + + selected += 1; } } } + void init() { lcd.init(); pad.init(); } + +void difficultyOptions() +{ + int selected = 0; + int exit = 0; + + while(exit == 0){ + + switch(selected){ + + case 1: + + lcd.clear(); + lcd.printString("Difficulty: ", 0, 0); + lcd.printString(">Easy", 0, 2); + lcd.printString(" Hard", 0, 3); + lcd.refresh(); + + if (pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)){ + + // maze.mazeIndex = 0; + lcd.clear(); + lcd.printString("Easy mode", 0, 1); + lcd.refresh(); + wait(2); + } + + break; + + case 2: + + lcd.clear(); + lcd.printString("Difficulty: ", 0, 0); + lcd.printString(" Easy", 0, 2); + lcd.printString(">Hard", 0, 3); + lcd.refresh(); + + if (pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)){ + + // maze.mazeIndex = 1; + lcd.clear(); + lcd.printString("Hard mode", 0, 1); + lcd.refresh(); + wait(2); + } + + break; + + default: + + selected = 1; + + break; + + } + char d = pad.get_direction(); + + if ((d == NW) || + (d == N) || + (d == NE)){ + + selected -= 1; + } + + if ((d == SW) || + (d == S) || + (d == SE)){ + + selected += 1; + } + + + if (pad.check_event(Gamepad::BACK_PRESSED)){ + + exit = 1; + } + + } +} + +void colourOptions() +{ + int selected = 0; + int exit = 0; + while(exit == 0){ + + switch(selected){ + + case 1: + + printf("case 2.1"); + + lcd.clear(); + lcd.printString("Ball colour: ", 0, 0); + lcd.printString(">Transparent", 0, 2); + lcd.printString(" Solid", 0, 3); + lcd.refresh(); + + if (pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)){ + + // ball.ballColour = 0; + lcd.clear(); + lcd.printString("Transparent", 0, 1); + lcd.refresh(); + wait(2); + } + + break; + + case 2: + + printf("case 2.2"); + + lcd.clear(); + lcd.printString("Ball colour: ", 0, 0); + lcd.printString(" Transparent", 0, 2); + lcd.printString(">Solid", 0, 3); + lcd.refresh(); + + if (pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)){ + + // ball.ballColour = 1; + lcd.clear(); + lcd.printString("Solid", 0, 1); + lcd.refresh(); + wait(2); + } + + break; + + default: + + selected = 1; + + break; + } + + char d = pad.get_direction(); + + if ((d == NW) || + (d == N) || + (d == NE)){ + + selected -= 1; + } + + if ((d == SW) || + (d == S) || + (d == SE)){ + + selected += 1; + } + + if (pad.check_event(Gamepad::BACK_PRESSED)){ + + exit = 1; + } + } + +} + + +