ELEC2645 (2018/19) / Mbed 2 deprecated el17m2h_public

Dependencies:   mbed

main.cpp

Committer:
el17m2h
Date:
2019-05-01
Revision:
21:6b16ca9834e6
Parent:
20:a359092079b0
Child:
22:0d2ac98a8b48

File content as of revision 21:6b16ca9834e6:

/*
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
Name: Melissa Hartmann
Username: el17m2h
Student ID Number: 201176603
Date: 11/04/2019
*/


#include "mbed.h" 
#include "Gamepad.h" 
#include "N5110.h" 
#include "Engine.h"  

#define FLOORS_WIDTH 12
#define FLOORS_HEIGHT 1
#define DOODLER_RADIUS 2

//structs
struct UserInput {
    Direction d;
    float mag;
};


// objects
N5110 lcd(PTC5,PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // START, LCD SCE, LCD RST, LCD DC, LCD MOSI, LCD CLK, LCD Backlight
Gamepad pad;
Engine eng;
Doodler dood;
Enemy eny;

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

// functions
int main(){
    while(1){
        init();
        welcome();
        int fps = 8;
        render(); // draws
        wait(1.0f/fps);
        while(1){   
            eng.read_input(pad);
            eng.update(pad);
            render();
            wait(0.8f/fps);
            if (pad.check_event(Gamepad::BACK_PRESSED) == true){
                break;
            }
        }
        render();
        wait(0.1);
    }
}


// initialies all classes and libraries
void init(){
    // need to initialise LCD and Gamepad 
    lcd.init();
    pad.init();
    eng.init(FLOORS_WIDTH, FLOORS_HEIGHT, DOODLER_RADIUS);
}

void render(){
    lcd.clear();
    eng.draw(lcd);
    lcd.refresh();
}

// Starting menu screen display
void welcome() {   
    lcd.printString(" Doodle Jump! ",0,1);  
    lcd.printString("  Press Start ",0,4);
    lcd.refresh();
    
    while ( pad.check_event(Gamepad::START_PRESSED) == false) {
        pad.leds_on();
        wait(0.1);
        pad.leds_off();
        wait(0.1);
    }
}

void game_over() {   
    lcd.clear();
    lcd.printString("Game Over!",3,1);  
    lcd.printString("Press back",3,3);  
    lcd.printString("SCORE =  ",3,5);
    lcd.refresh();
    while ( pad.check_event(Gamepad::BACK_PRESSED) == false) {
            pad.leds_on();
            wait(0.1);
            pad.leds_off();
            wait(0.1);
    }
}