ELEC2645 (2018/19) / Mbed 2 deprecated 2645_Project_SiutingWong201186503

Dependencies:   mbed

main.cpp

Committer:
davidwst421
Date:
2019-05-08
Revision:
2:00a3edbe39b0
Parent:
1:f09ff0ed98fd
Child:
3:53f0365461c0

File content as of revision 2:00a3edbe39b0:

/*
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
Name: Siuting Wong
Username: Siuting Wong
Student ID Number: 201186503
Date: 06/05/2019
*/
///////// pre-processor directives ////////
#include "mbed.h"
#include "Gamepad.h"
#include "N5110.h"
#include "Engine.h"

#define WALL_WIDTH 2
#define WALL_GAP 8
#define AVENGER_SIZE 2
#define STONE_SIZE 1
#define SPEED 2

/////////////// structs /////////////////
struct UserInput {
    Direction d;
    float mag;
};
/////////////// objects ///////////////
N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
Gamepad pad;
Engine eng;

///////////// prototypes ///////////////
void init();
void update_game(UserInput input);
void render();
void welcome();


///////////// functions ////////////////
int main() {
    int fps = 10;
    int avenger_score = _avenger.get_score();
    
    init();     // initialise and then display welcome screen...
    welcome();
    render();
    wait(1.0f/fps);  // and wait for one frame period
    
    while (avenger_score >= 0) {
        
        eng.read_input(pad);
        eng.update(pad);
        
        render();
        wait(1.0f/fps);
    }
    endgame();
}

void init() {
    
    // need to initialise LCD and Gamepad 
    lcd.init();
    pad.init();
     
    // initialise the game with correct ball and paddle sizes
    eng.init(WALL_WIDTH,WALL_GAP,AVENGER_SIZE,STONE_SIZE,SPEED);
}

void welcome() {
    
    while ( pad.check_event(Gamepad::START_PRESSED) == false) {
        lcd.clear();
        lcd.printString("Eternity Stone",0,1);
        lcd.refresh();
        wait(0.1);
    }
}

void render() {
    
    // clear screen, re-draw and refresh
    lcd.clear();  
    eng.draw(lcd);
    lcd.refresh();
}

void endgame() {
    
    while ( pad.check_event(Gamepad::START_PRESSED) == false) {
        lcd.clear();
        lcd.printString("Eternity Stone",0,1);
        lcd.refresh();
        wait(0.1);
    }
}