Max Houghton
/
MazeGame_el15mh
el15mh 200929957
Diff: main.cpp
- Revision:
- 1:8ce2586b5965
- Parent:
- 0:d7701c5c20e6
- Child:
- 2:a488caea1601
diff -r d7701c5c20e6 -r 8ce2586b5965 main.cpp --- a/main.cpp Thu Mar 30 12:20:02 2017 +0000 +++ b/main.cpp Thu Mar 30 12:22:51 2017 +0000 @@ -8,12 +8,6 @@ // FUNCTION PROTOTYPES // void init(); -void play(); -void menu(); -void options(); -void lcdSettings(); -void soundSettings(); -void drawBox(); int main() { @@ -21,375 +15,77 @@ while(1){ - menu(); - - } -} - -void init() -{ - lcd.init(); - pad.init(); -} - -void play() -{ - int exit = 0; - - while(exit == 0){ - - // coordinates for centre of lcd - float x = 41.0; - float y = 23.0; - - lcd.clear(); - - double size = pad.read_pot() * 10.0; - - if (pad.check_event(Gamepad::A_PRESSED)){ - pad.leds_on(); - } - if (pad.check_event(Gamepad::B_PRESSED)){ - pad.leds_off(); - } - - // check four sides of ball (+x, -x, +y, -y) - float leftSide = x - size; - float rightSide = x + size; - float topSide = y - size; - float bottomSide = y + size; + int selected = 0; + int exit = 0; - // default values for bool values are true - bool MOVE_X = true; - bool MOVE_Y = true; - - if (leftSide == 1) { - MOVE_X = false; // only set bool values false if circle on the edge - } - - if (rightSide == 82) { - MOVE_X = false; - } - - if (topSide == 1) { - MOVE_Y = false; - } - - if (bottomSide == 46){ - MOVE_Y = false; - } - - drawBox(); - lcd.drawCircle(x, y, size, FILL_TRANSPARENT); - lcd.refresh(); - - Vector2D position = pad.get_mapped_coord(); - - if (MOVE_X == true){ - x += position.x; - } - if (MOVE_Y == true){ - y -= position.y; - } - - // printf("x = %f, y = %f \n", position.x, position.y); - // printf("ball X = %f, ball Y = %f \n\n", x, y); - - wait_ms(20); - - if (pad.check_event(Gamepad::BACK_PRESSED)){ + while(exit == 0){ - exit = 1; - } - } -} - -void drawBox() -{ - for (int i = 0; i < WIDTH; i++){ - lcd.setPixel(i, 0); - lcd.setPixel(i, HEIGHT - 1); - } - - for (int j = 0; j < HEIGHT; j++){ - lcd.setPixel(0, j); - lcd.setPixel(WIDTH - 1, j); - } - - lcd.refresh(); -} - - -void menu() -{ - int selected = 0; - - while(1) { - - // lcd.printString("Testing", 0, 2); - - switch (selected) { - - case 1: - - lcd.clear(); - lcd.printString(">Play game", 0, 0); - lcd.printString(" Game options", 0, 1); - lcd.printString(" LCD settings", 0, 2); - lcd.printString(" Sound", 0, 3); - - lcd.refresh(); - - // either clicking joystick or pressing A selects function - if (pad.check_event(Gamepad::A_PRESSED) || - pad.check_event(Gamepad::JOY_PRESSED)){ + int back = 0; + + switch (selected) { - play(); // call the game function - } - - wait_ms(250); // 1s propogation delay - - break; - - case 2: - - lcd.clear(); - lcd.printString(" Play game", 0, 0); - lcd.printString(">Game options", 0, 1); - lcd.printString(" LCD settings", 0, 2); - lcd.printString(" Sound", 0, 3); - - lcd.refresh(); - - - if (pad.check_event(Gamepad::A_PRESSED) || - pad.check_event(Gamepad::JOY_PRESSED)){ - - options(); - } - - wait_ms(250); // 1s propogation delay - - break; - - case 3: - - lcd.clear(); - lcd.printString(" Play game", 0, 0); - lcd.printString(" Game options", 0, 1); - lcd.printString(">LCD settings", 0, 2); - lcd.printString(" Sound", 0, 3); - - lcd.refresh(); - - - if (pad.check_event(Gamepad::A_PRESSED) || - pad.check_event(Gamepad::JOY_PRESSED)){ + case 1: - lcdSettings(); - } - - wait_ms(250); // 1s propogation delay - - break; - - case 4: - - lcd.clear(); - lcd.printString(" Play game", 0, 0); - lcd.printString(" Game options", 0, 1); - lcd.printString(" LCD settings", 0, 2); - lcd.printString(">Sound", 0, 3); - - lcd.refresh(); - - - if (pad.check_event(Gamepad::A_PRESSED) || - pad.check_event(Gamepad::JOY_PRESSED)){ + 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(); - soundSettings(); - } - - wait_ms(250); // 1s propogation delay - - break; - - default: - - selected = 0; - - break; - } - - // menuSelector(selector); - - char d = pad.get_direction(); - - if ((d == NW) || - (d == N) || - (d == NE)){ - - selected -= 1; - } - - if ((d == SW) || - (d == S) || - (d == SE)){ - - selected += 1; - } - - // printf("Joystick position = %c \n", d); - // printf("Selected = %i \n", selected); - - } -} - -void options() -{ - int selected = 0; - int exit = 0; - - 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)){ + while (back == 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; - } - - 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)){ + // if first option selected + if (pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)){ + + switch(selected){ - // 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; - } - } - - 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(); - - 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)){ + case 1: - // ball.ballColour = 0; lcd.clear(); - lcd.printString("Transparent", 0, 1); + lcd.printString("Difficulty: ", 0, 0); + lcd.printString(">Easy", 0, 2); + lcd.printString(" Hard", 0, 3); 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)){ + if (pad.check_event(Gamepad::A_PRESSED) || + pad.check_event(Gamepad::JOY_PRESSED)){ + + // maze.mazeIndex = 0; + } + + wait_ms(250); - // ball.ballColour = 1; + break; + + case 2: + lcd.clear(); - lcd.printString("Solid", 0, 1); + lcd.printString("Difficulty: ", 0, 0); + lcd.printString(" Easy", 0, 2); + lcd.printString(">Hard", 0, 3); lcd.refresh(); - wait(2); - } - - break; - - default: - - selected = 0; - break; + 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)){ @@ -400,41 +96,92 @@ wait(1); // 1s propogation delay - } - - if (pad.check_event(Gamepad::BACK_PRESSED)){ + 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(); - exit = 1; - } + 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; + } + } } + } } - -void soundSettings() -{ - pad.tone(750.0,0.1); - lcd.clear(); - lcd.printString("Sound settings", 0, 2); - lcd.refresh(); - - wait(2); -} - -void lcdSettings() +void init() { - int exit = 0; - - while(exit == 0){ - - lcd.clear(); - lcd.printString("LCD Settings", 0, 2); - lcd.refresh(); - - if(pad.check_event(Gamepad::BACK_PRESSED)){ - - exit = 1; - } - } + lcd.init(); + pad.init(); } -