
Joshua O'hara 201291390
Dependencies: mbed
main.cpp
- Committer:
- josh_ohara
- Date:
- 2020-05-13
- Revision:
- 22:3e978b1d7958
- Parent:
- 21:970807533b10
- Child:
- 23:aa86e32b6a74
File content as of revision 22:3e978b1d7958:
/* 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 10 #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 hardware_init(); void game_init(); void draw_game(); void start_menu(); void game_over(int level); void next_level(int level); void update_game(UserInput input); int main() { int fps = 6; int counter = 0; int level = 1; bool armada_life = true; bool ship_life = true; hardware_init(); start_menu(); draw_game(); wait(1.0f/fps); while(1){ hardware_init(); game_init(); next_level(level); while(1) { SpaceInvader.read_input(pad); SpaceInvader.update(pad, lcd, counter); draw_game(); wait(1.0f/fps); counter++; ship_life = SpaceInvader.get_ship_life(); if(ship_life == false){ game_over(level); } armada_life = SpaceInvader.get_armada_life(); if(armada_life == false){ break; } } level++; } } 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 hardware_init() { lcd.init(); pad.init(); } void game_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); } void game_over(int level){ lcd.clear(); while(1){ lcd.printString(" Game Over",0,0); char buffer[14]; sprintf(buffer," Level %2d",level); lcd.printString(buffer,0,2); lcd.printString(" Press reset ",0,4); lcd.refresh(); } } void next_level(int level){ lcd.clear(); char buffer[14]; sprintf(buffer," Level %2d",level); lcd.printString(buffer,0,2); lcd.refresh(); wait(2); lcd.clear(); }