Joshua O'hara 201291390

Dependencies:   mbed

Committer:
josh_ohara
Date:
Fri May 01 12:56:33 2020 +0000
Revision:
16:987f72d9bb8f
Parent:
15:dde4ce4bf7fe
Child:
21:970807533b10
Ship bullet timer added

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 12:be491ab6e742 19 #define SHIP_WIDTH 9
josh_ohara 8:86cb9a9f8a73 20 #define SHIP_HEIGHT 2
josh_ohara 12:be491ab6e742 21 #define ALIEN_SIZE 4
josh_ohara 12:be491ab6e742 22 #define ROW_SIZE 3
josh_ohara 12:be491ab6e742 23 #define COLUMN_SIZE 5
josh_ohara 12:be491ab6e742 24 #define NUMBER_OF_ALIENS 15
josh_ohara 15:dde4ce4bf7fe 25 #define COVER_Y 38
josh_ohara 15:dde4ce4bf7fe 26 #define COVER1_X 9
josh_ohara 15:dde4ce4bf7fe 27 #define COVER2_X 34
josh_ohara 15:dde4ce4bf7fe 28 #define COVER3_X 59
josh_ohara 15:dde4ce4bf7fe 29 #define ROCK_NUMBER 10
eencae 0:b7f1f47bb26a 30
eencae 0:b7f1f47bb26a 31 // objects
eencae 0:b7f1f47bb26a 32 Gamepad pad;
eencae 0:b7f1f47bb26a 33 N5110 lcd;
josh_ohara 8:86cb9a9f8a73 34 SpaceInvaderEngine SpaceInvader;
josh_ohara 8:86cb9a9f8a73 35
josh_ohara 8:86cb9a9f8a73 36 // structs
josh_ohara 8:86cb9a9f8a73 37 struct UserInput {
josh_ohara 8:86cb9a9f8a73 38 Direction d;
josh_ohara 8:86cb9a9f8a73 39 float mag;
josh_ohara 8:86cb9a9f8a73 40 };
josh_ohara 8:86cb9a9f8a73 41
josh_ohara 8:86cb9a9f8a73 42 //functions
josh_ohara 8:86cb9a9f8a73 43 void init();
josh_ohara 8:86cb9a9f8a73 44 void draw_game();
josh_ohara 8:86cb9a9f8a73 45 void start_menu();
josh_ohara 8:86cb9a9f8a73 46 void update_game(UserInput input);
eencae 0:b7f1f47bb26a 47
eencae 0:b7f1f47bb26a 48 int main()
eencae 0:b7f1f47bb26a 49 {
josh_ohara 8:86cb9a9f8a73 50 int fps = 6;
josh_ohara 16:987f72d9bb8f 51 int counter = 0;
eencae 0:b7f1f47bb26a 52
josh_ohara 8:86cb9a9f8a73 53 init();
josh_ohara 8:86cb9a9f8a73 54 start_menu();
josh_ohara 8:86cb9a9f8a73 55
josh_ohara 8:86cb9a9f8a73 56 draw_game();
josh_ohara 8:86cb9a9f8a73 57 wait(1.0f/fps);
josh_ohara 8:86cb9a9f8a73 58
josh_ohara 8:86cb9a9f8a73 59 while(1) {
josh_ohara 8:86cb9a9f8a73 60 SpaceInvader.read_input(pad);
josh_ohara 16:987f72d9bb8f 61 SpaceInvader.update(pad, lcd, counter);
josh_ohara 8:86cb9a9f8a73 62 draw_game();
josh_ohara 8:86cb9a9f8a73 63 wait(1.0f/fps);
josh_ohara 16:987f72d9bb8f 64 counter++;
josh_ohara 8:86cb9a9f8a73 65 }
eencae 0:b7f1f47bb26a 66 }
eencae 0:b7f1f47bb26a 67
josh_ohara 8:86cb9a9f8a73 68 void start_menu() {
josh_ohara 8:86cb9a9f8a73 69 lcd.printString("Space Invaders",0,1);
josh_ohara 8:86cb9a9f8a73 70 lcd.printString(" Press Start ",0,4);
josh_ohara 8:86cb9a9f8a73 71 lcd.refresh();
josh_ohara 8:86cb9a9f8a73 72
josh_ohara 8:86cb9a9f8a73 73 while ( pad.start_pressed() == false) {
josh_ohara 8:86cb9a9f8a73 74 lcd.setContrast( pad.read_pot1());
josh_ohara 8:86cb9a9f8a73 75 pad.leds_on();
josh_ohara 8:86cb9a9f8a73 76 wait(0.1);
josh_ohara 8:86cb9a9f8a73 77 pad.leds_off();
josh_ohara 8:86cb9a9f8a73 78 wait(0.1);
josh_ohara 8:86cb9a9f8a73 79 }
josh_ohara 8:86cb9a9f8a73 80
josh_ohara 8:86cb9a9f8a73 81 }
josh_ohara 8:86cb9a9f8a73 82
josh_ohara 8:86cb9a9f8a73 83 void draw_game()
josh_ohara 8:86cb9a9f8a73 84 {
josh_ohara 10:9189419fda68 85 lcd.clear();
josh_ohara 8:86cb9a9f8a73 86 SpaceInvader.render(lcd);
josh_ohara 8:86cb9a9f8a73 87 lcd.refresh();
josh_ohara 8:86cb9a9f8a73 88 }
josh_ohara 8:86cb9a9f8a73 89
josh_ohara 8:86cb9a9f8a73 90 void init()
josh_ohara 8:86cb9a9f8a73 91 {
josh_ohara 8:86cb9a9f8a73 92 lcd.init();
josh_ohara 8:86cb9a9f8a73 93 pad.init();
josh_ohara 15:dde4ce4bf7fe 94 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);
josh_ohara 8:86cb9a9f8a73 95 }
josh_ohara 8:86cb9a9f8a73 96