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:
- 13:09bc615e6665
- Parent:
- 11:93da75c1849d
- Child:
- 14:9b4a219dd91e
--- a/Engine/Engine.cpp Thu May 28 21:20:47 2020 +0000 +++ b/Engine/Engine.cpp Fri May 29 01:14:23 2020 +0000 @@ -2,6 +2,7 @@ #include "mbed.h" #include "Gamepad.h" #include "N5110.h" +#include<ctime> Engine::Engine() {} Engine::~Engine() {} @@ -37,30 +38,30 @@ } void Engine::check_wall_collision(Gamepad &pad) { + srand(time(NULL)); Vector2D bug_pos = _bug.get_pos(); Vector2D bug_velocity = _bug.get_velocity(); - if (bug_pos.y <= 1) { bug_pos.y = 1; bug_velocity.y = -bug_velocity.y; - bug_velocity.x = rand() % 5; + bug_velocity.x = rand() % 5 + 0; pad.tone(750.0,0.1); } else if (bug_pos.y + 10 >= (HEIGHT-1) ) { bug_pos.y = (HEIGHT-1) - 10; bug_velocity.y = -bug_velocity.y ; - bug_velocity.x = rand() % 5; + bug_velocity.x = rand() % 5 + 0; pad.tone(750.0,0.1); } if (bug_pos.x <= 1) { bug_pos.x = 1; bug_velocity.x = -bug_velocity.x; - bug_velocity.y = rand() % 5; + bug_velocity.y = rand() % 5 + 0; pad.tone(750.0,0.1); } else if (bug_pos.x + 10 >= (WIDTH-1) ) { bug_pos.x = (WIDTH-1) - 10; bug_velocity.x = -bug_velocity.x ; - bug_velocity.y = rand() % 5; + bug_velocity.y = rand() % 5 + 0; pad.tone(750.0,0.1); } @@ -72,27 +73,35 @@ Vector2D bug_pos = _bug.get_pos(); Vector2D p_pos = _swatter.get_pos(); Vector2D bug_velocity = _bug.get_velocity(); - - if ((bug_pos.x <= (p_pos.x + 5)) && (bug_pos.x +5 >= p_pos.x)) { + + if ((bug_pos.x <= (p_pos.x +5)) && (bug_pos.x +5 >= p_pos.x)) { collisionX=true; } else { collisionX=false; } - if ((bug_pos.y <= (p_pos.y+5)) && (bug_pos.y+5 >= p_pos.y )) { collisionY=true; } else { collisionY=false; } - if (collisionX && collisionY) { ending(lcd, pad); } } +void Engine::timer() +{ + start = clock(); +} void Engine::ending(N5110 & lcd, Gamepad & pad) { lcd.clear(); + end = clock(); pad.leds_on(); + clockTicksTaken = end - start; + timeInSeconds = clockTicksTaken / (double) CLOCKS_PER_SEC; + char buffer[1]; + //sprintf(buffer,"%s",timeInSeconds); + lcd.printString(buffer,0,0); for (double i = 0; i < 100000; i += 0.1) { lcd.refresh(); _splat.draw(lcd);