Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- ll16o2l
- Date:
- 2019-04-30
- Revision:
- 10:0c200ed5973a
- Parent:
- 8:c3153fd4d8ce
- Child:
- 11:1c5c549ba75e
File content as of revision 10:0c200ed5973a:
/**
* ELEC2645 Embedded Systems Project
* School of Electronic & Electrical Engineering
* University of Leeds
* @file main.cpp
* @brief
* @author Oliver Luong
* Username: ll16o2l
* Student ID Number:201140613
* @Date 05/03/2019
*/
///////// pre-processor directives ////////
#include "mbed.h"
#include "Gamepad.h"
#include "N5110.h"
#include "DodgeEngine.h"
#define PLAYER_WIDTH 14
#define PLAYER_HEIGHT 14
#define OBJECTS_SIZE 2
#define OBJECTS_SPEED 4 /////////////////Want to make it changing
#define LIVES 5
#define KIT_SIZE 7
/////////////// structs /////////////////
struct UserInput {
Direction d;
float mag;
};
/////////////// objects ///////////////
N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
Gamepad pad;
DodgeEngine dodge;
Instruction instruction;
///////////// prototypes ///////////////
void init();
void update_game(UserInput input);
void render();
void welcome();
void instructions();
///////////// functions ////////////////
int main()
{
// This is used for how many loops per second (i.e frames per second)
int fps = 15;
init(); // initialise and then display welcome screen
welcome(); // waiting for the user to start
instructions(); // waiting for the user to start
render(); // first draw the initial frame
wait(1.0f/fps); // and wait for one frame period
// This will set the initial value to be used in the loop
int lose = 0;
// This sets the time to 0 until the game starts
float time = 0;
// game loop - read input, update the game state and render the display
while (lose == 0) { // Until the value of lose changes to 1 keep looping
dodge.read_input(pad); // Execute the read_input method from dodge source file
dodge.update(pad); // Execute the update method from dodge source file
render(); // Execute the render method
wait(1.0f/fps); // This controls how fast the while loop iterates
time = time + 0.06666f; // Adds the time for every iteration to count the time
// printf("Time = %.2f \n", time); // Used to test the time is working
dodge.time(time); // Input the time from the main file to dodge source file
lose = dodge.get_lose(); // Execute the get_lose method then save return value to time variable
// printf("Lose = %2d" ,lose);
}
main(); // Execute the main method after lose = 1 and the while loop stops
wait(1.0f);
}/**
* This method will be used to initialies all classes and libraries.
* @author Oliver Luong
* @date 22/04/2019
*/
void init()
{
// initialise LCD and Gamepad
lcd.init();
pad.init();
// initialise the game with pre-determerined directives
dodge.init(PLAYER_WIDTH,PLAYER_HEIGHT,OBJECTS_SIZE,OBJECTS_SPEED,LIVES,KIT_SIZE);
}
/**
* This method will be used to draw the frames onto the LCD.
* @author Oliver Luong
* @date 22/04/2019
*/
void render()
{
// clear screen, re-draw and refresh
lcd.clear();
dodge.draw(lcd);
lcd.refresh();
}
/**
* This method will be used to initialies the
* welcome screen and wait for user input.
* @author Oliver Luong
* @date 22/04/2019
*/
void welcome() {
// Write onto the LCD and refresh
lcd.printString(" Dodge! ",0,1);
lcd.printString(" Press Start ",0,4);
lcd.refresh();
// wait flashing LEDs until start button is pressed
while (pad.check_event(Gamepad::START_PRESSED) == false) {
pad.leds_on();
wait(0.1);
pad.leds_off();
wait(0.1);
}
}
void instruction() {
while (pad.check_event(Gamepad::A) == false) {
instruction.write(lcd, pad);
}
}