Joshua O'hara 201291390

Dependencies:   mbed

Committer:
josh_ohara
Date:
Fri Mar 27 22:58:56 2020 +0000
Revision:
10:9189419fda68
Parent:
9:8e695df3cc36
Child:
11:c174d84e4866
adding "death" functionality to alien and ship

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:b7f1f47bb26a 1 /*
eencae 0:b7f1f47bb26a 2 ELEC2645 Embedded Systems Project
eencae 0:b7f1f47bb26a 3 School of Electronic & Electrical Engineering
eencae 0:b7f1f47bb26a 4 University of Leeds
eencae 0:b7f1f47bb26a 5 2019/20
eencae 0:b7f1f47bb26a 6
josh_ohara 1:9b659b3c092b 7 Name: Joshua O'hara
josh_ohara 1:9b659b3c092b 8 Username: el18jkeo
josh_ohara 1:9b659b3c092b 9 Student ID Number: 201291390
josh_ohara 1:9b659b3c092b 10 Date: 11.03.2020
eencae 0:b7f1f47bb26a 11 */
eencae 0:b7f1f47bb26a 12
eencae 0:b7f1f47bb26a 13 // includes
eencae 0:b7f1f47bb26a 14 #include "mbed.h"
eencae 0:b7f1f47bb26a 15 #include "Gamepad.h"
eencae 0:b7f1f47bb26a 16 #include "N5110.h"
josh_ohara 8:86cb9a9f8a73 17 #include "SpaceInvaderEngine.h"
eencae 0:b7f1f47bb26a 18
josh_ohara 8:86cb9a9f8a73 19 #define SHIP_WIDTH 8
josh_ohara 8:86cb9a9f8a73 20 #define SHIP_HEIGHT 2
josh_ohara 9:8e695df3cc36 21 #define SHIP_SIZE 4
eencae 0:b7f1f47bb26a 22
eencae 0:b7f1f47bb26a 23 // objects
eencae 0:b7f1f47bb26a 24 Gamepad pad;
eencae 0:b7f1f47bb26a 25 N5110 lcd;
josh_ohara 8:86cb9a9f8a73 26 SpaceInvaderEngine SpaceInvader;
josh_ohara 8:86cb9a9f8a73 27
josh_ohara 8:86cb9a9f8a73 28 // structs
josh_ohara 8:86cb9a9f8a73 29 struct UserInput {
josh_ohara 8:86cb9a9f8a73 30 Direction d;
josh_ohara 8:86cb9a9f8a73 31 float mag;
josh_ohara 8:86cb9a9f8a73 32 };
josh_ohara 8:86cb9a9f8a73 33
josh_ohara 8:86cb9a9f8a73 34 //functions
josh_ohara 8:86cb9a9f8a73 35 void init();
josh_ohara 8:86cb9a9f8a73 36 void draw_game();
josh_ohara 8:86cb9a9f8a73 37 void start_menu();
josh_ohara 8:86cb9a9f8a73 38 void update_game(UserInput input);
eencae 0:b7f1f47bb26a 39
eencae 0:b7f1f47bb26a 40 int main()
eencae 0:b7f1f47bb26a 41 {
josh_ohara 8:86cb9a9f8a73 42 int fps = 6;
eencae 0:b7f1f47bb26a 43
josh_ohara 8:86cb9a9f8a73 44 init();
josh_ohara 8:86cb9a9f8a73 45 start_menu();
josh_ohara 8:86cb9a9f8a73 46
josh_ohara 8:86cb9a9f8a73 47 draw_game();
josh_ohara 8:86cb9a9f8a73 48 wait(1.0f/fps);
josh_ohara 8:86cb9a9f8a73 49
josh_ohara 8:86cb9a9f8a73 50 while(1) {
josh_ohara 8:86cb9a9f8a73 51 SpaceInvader.read_input(pad);
josh_ohara 10:9189419fda68 52 SpaceInvader.update(pad, lcd);
josh_ohara 8:86cb9a9f8a73 53 draw_game();
josh_ohara 8:86cb9a9f8a73 54 wait(1.0f/fps);
josh_ohara 8:86cb9a9f8a73 55 }
eencae 0:b7f1f47bb26a 56 }
eencae 0:b7f1f47bb26a 57
josh_ohara 8:86cb9a9f8a73 58 void start_menu() {
josh_ohara 8:86cb9a9f8a73 59 lcd.printString("Space Invaders",0,1);
josh_ohara 8:86cb9a9f8a73 60 lcd.printString(" Press Start ",0,4);
josh_ohara 8:86cb9a9f8a73 61 lcd.refresh();
josh_ohara 8:86cb9a9f8a73 62
josh_ohara 8:86cb9a9f8a73 63 while ( pad.start_pressed() == false) {
josh_ohara 8:86cb9a9f8a73 64 lcd.setContrast( pad.read_pot1());
josh_ohara 8:86cb9a9f8a73 65 pad.leds_on();
josh_ohara 8:86cb9a9f8a73 66 wait(0.1);
josh_ohara 8:86cb9a9f8a73 67 pad.leds_off();
josh_ohara 8:86cb9a9f8a73 68 wait(0.1);
josh_ohara 8:86cb9a9f8a73 69 }
josh_ohara 8:86cb9a9f8a73 70
josh_ohara 8:86cb9a9f8a73 71 }
josh_ohara 8:86cb9a9f8a73 72
josh_ohara 8:86cb9a9f8a73 73 void draw_game()
josh_ohara 8:86cb9a9f8a73 74 {
josh_ohara 10:9189419fda68 75 lcd.clear();
josh_ohara 10:9189419fda68 76 lcd.drawRect(1, 10, 3, 3, FILL_BLACK);
josh_ohara 8:86cb9a9f8a73 77 SpaceInvader.render(lcd);
josh_ohara 8:86cb9a9f8a73 78 lcd.refresh();
josh_ohara 8:86cb9a9f8a73 79 }
josh_ohara 8:86cb9a9f8a73 80
josh_ohara 8:86cb9a9f8a73 81 void init()
josh_ohara 8:86cb9a9f8a73 82 {
josh_ohara 8:86cb9a9f8a73 83 lcd.init();
josh_ohara 8:86cb9a9f8a73 84 pad.init();
josh_ohara 9:8e695df3cc36 85 SpaceInvader.init(SHIP_HEIGHT,SHIP_WIDTH,SHIP_SIZE);
josh_ohara 8:86cb9a9f8a73 86
josh_ohara 8:86cb9a9f8a73 87 // lcd.printString("MainInit",0,1);
josh_ohara 8:86cb9a9f8a73 88 // lcd.refresh();
josh_ohara 8:86cb9a9f8a73 89 // wait(5);
josh_ohara 8:86cb9a9f8a73 90 }
josh_ohara 8:86cb9a9f8a73 91