Joshua O'hara 201291390

Dependencies:   mbed

Committer:
josh_ohara
Date:
Thu Mar 26 15:24:49 2020 +0000
Revision:
8:86cb9a9f8a73
Parent:
1:9b659b3c092b
Child:
9:8e695df3cc36
6 hours of debugging later.... Have a functioning simple 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
eencae 0:b7f1f47bb26a 21
eencae 0:b7f1f47bb26a 22 // objects
eencae 0:b7f1f47bb26a 23 Gamepad pad;
eencae 0:b7f1f47bb26a 24 N5110 lcd;
josh_ohara 8:86cb9a9f8a73 25 SpaceInvaderEngine SpaceInvader;
josh_ohara 8:86cb9a9f8a73 26
josh_ohara 8:86cb9a9f8a73 27 // structs
josh_ohara 8:86cb9a9f8a73 28 struct UserInput {
josh_ohara 8:86cb9a9f8a73 29 Direction d;
josh_ohara 8:86cb9a9f8a73 30 float mag;
josh_ohara 8:86cb9a9f8a73 31 };
josh_ohara 8:86cb9a9f8a73 32
josh_ohara 8:86cb9a9f8a73 33 //functions
josh_ohara 8:86cb9a9f8a73 34 void init();
josh_ohara 8:86cb9a9f8a73 35 void draw_game();
josh_ohara 8:86cb9a9f8a73 36 void start_menu();
josh_ohara 8:86cb9a9f8a73 37 void update_game(UserInput input);
eencae 0:b7f1f47bb26a 38
eencae 0:b7f1f47bb26a 39 int main()
eencae 0:b7f1f47bb26a 40 {
josh_ohara 8:86cb9a9f8a73 41 int fps = 6;
eencae 0:b7f1f47bb26a 42
josh_ohara 8:86cb9a9f8a73 43 init();
josh_ohara 8:86cb9a9f8a73 44 start_menu();
josh_ohara 8:86cb9a9f8a73 45
josh_ohara 8:86cb9a9f8a73 46 draw_game();
josh_ohara 8:86cb9a9f8a73 47 wait(1.0f/fps);
josh_ohara 8:86cb9a9f8a73 48
josh_ohara 8:86cb9a9f8a73 49 while(1) {
josh_ohara 8:86cb9a9f8a73 50 SpaceInvader.read_input(pad);
josh_ohara 8:86cb9a9f8a73 51 SpaceInvader.update(pad);
josh_ohara 8:86cb9a9f8a73 52 draw_game();
josh_ohara 8:86cb9a9f8a73 53 wait(1.0f/fps);
josh_ohara 8:86cb9a9f8a73 54 }
eencae 0:b7f1f47bb26a 55 }
eencae 0:b7f1f47bb26a 56
josh_ohara 8:86cb9a9f8a73 57 void start_menu() {
josh_ohara 8:86cb9a9f8a73 58 lcd.printString("Space Invaders",0,1);
josh_ohara 8:86cb9a9f8a73 59 lcd.printString(" Press Start ",0,4);
josh_ohara 8:86cb9a9f8a73 60 lcd.refresh();
josh_ohara 8:86cb9a9f8a73 61
josh_ohara 8:86cb9a9f8a73 62 while ( pad.start_pressed() == false) {
josh_ohara 8:86cb9a9f8a73 63 lcd.setContrast( pad.read_pot1());
josh_ohara 8:86cb9a9f8a73 64 pad.leds_on();
josh_ohara 8:86cb9a9f8a73 65 wait(0.1);
josh_ohara 8:86cb9a9f8a73 66 pad.leds_off();
josh_ohara 8:86cb9a9f8a73 67 wait(0.1);
josh_ohara 8:86cb9a9f8a73 68 }
josh_ohara 8:86cb9a9f8a73 69
josh_ohara 8:86cb9a9f8a73 70 }
josh_ohara 8:86cb9a9f8a73 71
josh_ohara 8:86cb9a9f8a73 72 void draw_game()
josh_ohara 8:86cb9a9f8a73 73 {
josh_ohara 8:86cb9a9f8a73 74 lcd.clear();
josh_ohara 8:86cb9a9f8a73 75 SpaceInvader.render(lcd);
josh_ohara 8:86cb9a9f8a73 76 lcd.refresh();
josh_ohara 8:86cb9a9f8a73 77 }
josh_ohara 8:86cb9a9f8a73 78
josh_ohara 8:86cb9a9f8a73 79 void init()
josh_ohara 8:86cb9a9f8a73 80 {
josh_ohara 8:86cb9a9f8a73 81 lcd.init();
josh_ohara 8:86cb9a9f8a73 82 pad.init();
josh_ohara 8:86cb9a9f8a73 83 SpaceInvader.init(SHIP_HEIGHT,SHIP_WIDTH);
josh_ohara 8:86cb9a9f8a73 84
josh_ohara 8:86cb9a9f8a73 85 // lcd.printString("MainInit",0,1);
josh_ohara 8:86cb9a9f8a73 86 // lcd.refresh();
josh_ohara 8:86cb9a9f8a73 87 // wait(5);
josh_ohara 8:86cb9a9f8a73 88 }
josh_ohara 8:86cb9a9f8a73 89