Rosie Gillman
Dependencies: mbed Gamepad2 ELEC2645_Project_el18rg
Dependents: ELEC2645_Project_el18rg
Rosemary Gillman 201265952
Objective
The goal of the game is to splat the bug as fast as you can using the swatter.
Controls
1 - Joystick - left/right to control the swatter 2 - Start button - starts the game 3 - Reset - resets the game 4 - Volume pot - adjusts the volume
Instructions
- Turn the gamepad on
- Wait for start screen and press start
- Move the joystick to control the swatter
- Splat the bug as fast as you can
- Press reset to play again
Gameplay
Start Screen 1
- Low pad tone plays for 0.5s
- Pad lights flash (200ms on/200ms off)
- Text saying "Bug Splat Leeds Edition" is displayed
- After 5 flashes the screen changes to Start Screen 2
Start Screen 2
- Pad lights stay on constantly
- Text reads "Splat the bug as fast as you can! Press start"
- When start is pressed the screen changes to Gamplay Screen
Gameplay Screen
- The timer begins
- Bug appears in the top right corner
- Swatter appears in the bottom left corner
- The bug bounces (with random velocity/direction) off the sides
- When the bug bounces off the wall a low pad tone is played each time for 0.1 seconds
- Swatter is controlled left to right with the joystick
- When the bug and swatter overlap the screen changes to the Ending Screen
Ending Screen
- Low pad tone plays for 0.5s
- The timer ends and its value is displayed
- Text reads "SPLAT (time) secs"
- Splats are drawn on the screen
Diff: Engine/Engine.cpp
- Revision:
- 7:b5ef03efe784
- Parent:
- 6:98e08a6b385b
- Child:
- 8:c5a8576b2e8d
diff -r 98e08a6b385b -r b5ef03efe784 Engine/Engine.cpp --- a/Engine/Engine.cpp Wed May 27 21:09:39 2020 +0000 +++ b/Engine/Engine.cpp Wed May 27 23:24:11 2020 +0000 @@ -28,12 +28,12 @@ _cup.draw(lcd); } -void Engine::update(Gamepad &pad) +void Engine::update(N5110 & lcd, Gamepad & pad) { _cup.update(_d,_mag); _ball.update(); check_wall_collision(pad); - check_paddle_collisions(pad); + check_paddle_collisions(lcd, pad); } void Engine::check_wall_collision(Gamepad &pad) { @@ -69,7 +69,7 @@ _ball.set_velocity(ball_velocity); _ball.set_pos(ball_pos); } -void Engine::check_paddle_collisions(Gamepad &pad) +void Engine::check_paddle_collisions(N5110 & lcd, Gamepad & pad) { Vector2D ball_pos = _ball.get_pos(); Vector2D p_pos = _cup.get_pos(); @@ -95,21 +95,16 @@ if (collisionX && collisionY) { - //ball_velocity.x = 0; - //ball_velocity.y = 0; - const int splat[8][8] = { - {1,1,1,0,0,1,0,1}, - {1,1,0,1,1,0,1,0}, - {1,1,1,1,1,1,1,1}, - {0,1,1,1,1,1,0,0}, - {1,1,1,1,1,1,1,1}, - {0,0,1,1,1,1,1,0}, - {0,1,0,1,1,1,1,0}, - {1,0,0,0,1,0,0,1}, - }; - //lcd.drawSprite(ball_pos.x,ball_pos.y,8,8,(int *)splat); - pad.leds_on(); - wait_ms(100); - pad.leds_off(); + ending(lcd, pad); } } +void Engine::ending(N5110 & lcd, Gamepad & pad) +{ + lcd.clear(); + pad.leds_on(); + for (double t = 0; t < 100000; t += 0.1) + { + lcd.refresh(); + _splat.draw(lcd); + } +} \ No newline at end of file