Joshua O'hara 201291390

Dependencies:   mbed

main.cpp

Committer:
josh_ohara
Date:
2020-04-06
Revision:
15:dde4ce4bf7fe
Parent:
12:be491ab6e742
Child:
16:987f72d9bb8f

File content as of revision 15:dde4ce4bf7fe:

/* 
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
2019/20

Name: Joshua O'hara
Username: el18jkeo
Student ID Number: 201291390
Date: 11.03.2020
*/

// includes
#include "mbed.h"
#include "Gamepad.h"
#include "N5110.h"
#include "SpaceInvaderEngine.h"

#define SHIP_WIDTH 9
#define SHIP_HEIGHT 2
#define ALIEN_SIZE 4
#define ROW_SIZE 3
#define COLUMN_SIZE 5
#define NUMBER_OF_ALIENS 15
#define COVER_Y 38
#define COVER1_X 9
#define COVER2_X 34
#define COVER3_X 59
#define ROCK_NUMBER 10

// objects
Gamepad pad;
N5110 lcd;
SpaceInvaderEngine SpaceInvader;

// structs
struct UserInput {
    Direction d;
    float mag;
};
    
//functions
void init();
void draw_game();
void start_menu();
void update_game(UserInput input);

int main()
{
    int fps = 6;
    
    init();
    start_menu();
    
    draw_game();
    wait(1.0f/fps);
    
    while(1) {
        SpaceInvader.read_input(pad);
        SpaceInvader.update(pad, lcd);
        draw_game();
        wait(1.0f/fps);
    }
}

void start_menu() {
    lcd.printString("Space Invaders",0,1);  
    lcd.printString("  Press Start ",0,4);
    lcd.refresh();
    
    while ( pad.start_pressed() == false) {
        lcd.setContrast( pad.read_pot1());
        pad.leds_on();
        wait(0.1);
        pad.leds_off();
        wait(0.1);
    }
 
}

void draw_game()
{
    lcd.clear();
    SpaceInvader.render(lcd);
    lcd.refresh();
}

void init()
{ 
    lcd.init();
    pad.init();
    SpaceInvader.init(SHIP_HEIGHT,SHIP_WIDTH,ALIEN_SIZE,NUMBER_OF_ALIENS,COLUMN_SIZE,ROW_SIZE,COVER_Y,COVER1_X,COVER2_X,COVER3_X,ROCK_NUMBER);   
}