ELEC2645 (2018/19) / Mbed 2 deprecated 2645_Project_SiutingWong201186503

Dependencies:   mbed

Committer:
davidwst421
Date:
Wed May 08 18:50:21 2019 +0000
Revision:
0:fd8eda608206
Child:
1:f09ff0ed98fd
12

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davidwst421 0:fd8eda608206 1 /*
davidwst421 0:fd8eda608206 2 ELEC2645 Embedded Systems Project
davidwst421 0:fd8eda608206 3 School of Electronic & Electrical Engineering
davidwst421 0:fd8eda608206 4 University of Leeds
davidwst421 0:fd8eda608206 5 Name: Siuting Wong
davidwst421 0:fd8eda608206 6 Username: Siuting Wong
davidwst421 0:fd8eda608206 7 Student ID Number: 201186503
davidwst421 0:fd8eda608206 8 Date: 06/05/2019
davidwst421 0:fd8eda608206 9 */
davidwst421 0:fd8eda608206 10 ///////// pre-processor directives ////////
davidwst421 0:fd8eda608206 11 #include "mbed.h"
davidwst421 0:fd8eda608206 12 #include "Gamepad.h"
davidwst421 0:fd8eda608206 13 #include "N5110.h"
davidwst421 0:fd8eda608206 14 #include "Engine.h"
davidwst421 0:fd8eda608206 15
davidwst421 0:fd8eda608206 16 #define WALL_WIDTH 2
davidwst421 0:fd8eda608206 17 #define WALL_GAP 8
davidwst421 0:fd8eda608206 18 #define AVENGER_SIZE 2
davidwst421 0:fd8eda608206 19 #define STONE_SIZE 1
davidwst421 0:fd8eda608206 20 #define SPEED 3
davidwst421 0:fd8eda608206 21
davidwst421 0:fd8eda608206 22 /////////////// structs /////////////////
davidwst421 0:fd8eda608206 23 struct UserInput {
davidwst421 0:fd8eda608206 24 Direction d;
davidwst421 0:fd8eda608206 25 float mag;
davidwst421 0:fd8eda608206 26 };
davidwst421 0:fd8eda608206 27 /////////////// objects ///////////////
davidwst421 0:fd8eda608206 28 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
davidwst421 0:fd8eda608206 29 Gamepad pad;
davidwst421 0:fd8eda608206 30 Engine eng;
davidwst421 0:fd8eda608206 31
davidwst421 0:fd8eda608206 32 ///////////// prototypes ///////////////
davidwst421 0:fd8eda608206 33 void init();
davidwst421 0:fd8eda608206 34 void update_game(UserInput input);
davidwst421 0:fd8eda608206 35 void render();
davidwst421 0:fd8eda608206 36 void welcome();
davidwst421 0:fd8eda608206 37
davidwst421 0:fd8eda608206 38
davidwst421 0:fd8eda608206 39 ///////////// functions ////////////////
davidwst421 0:fd8eda608206 40 int main() {
davidwst421 0:fd8eda608206 41 int fps = 8;
davidwst421 0:fd8eda608206 42
davidwst421 0:fd8eda608206 43 init(); // initialise and then display welcome screen...
davidwst421 0:fd8eda608206 44 welcome();
davidwst421 0:fd8eda608206 45 render();
davidwst421 0:fd8eda608206 46 wait(1.0f/fps); // and wait for one frame period
davidwst421 0:fd8eda608206 47
davidwst421 0:fd8eda608206 48 while (1) {
davidwst421 0:fd8eda608206 49 eng.read_input(pad);
davidwst421 0:fd8eda608206 50 eng.update(pad);
davidwst421 0:fd8eda608206 51 render();
davidwst421 0:fd8eda608206 52 wait(1.0f/fps);
davidwst421 0:fd8eda608206 53 }
davidwst421 0:fd8eda608206 54 }
davidwst421 0:fd8eda608206 55
davidwst421 0:fd8eda608206 56 void init() {
davidwst421 0:fd8eda608206 57
davidwst421 0:fd8eda608206 58 // need to initialise LCD and Gamepad
davidwst421 0:fd8eda608206 59 lcd.init();
davidwst421 0:fd8eda608206 60 pad.init();
davidwst421 0:fd8eda608206 61
davidwst421 0:fd8eda608206 62 // initialise the game with correct ball and paddle sizes
davidwst421 0:fd8eda608206 63 eng.init(WALL_WIDTH,WALL_HEIGHT,AVENGER_SIZE,STONE_SIZE,SPEED);
davidwst421 0:fd8eda608206 64 }
davidwst421 0:fd8eda608206 65
davidwst421 0:fd8eda608206 66 void welcome() {
davidwst421 0:fd8eda608206 67
davidwst421 0:fd8eda608206 68 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 0:fd8eda608206 69 lcd.clear();
davidwst421 0:fd8eda608206 70 lcd.printString("Eternity Stone",0,1);
davidwst421 0:fd8eda608206 71 lcd.refresh();
davidwst421 0:fd8eda608206 72 wait(0.1);
davidwst421 0:fd8eda608206 73 }
davidwst421 0:fd8eda608206 74 }
davidwst421 0:fd8eda608206 75
davidwst421 0:fd8eda608206 76 void render() {
davidwst421 0:fd8eda608206 77
davidwst421 0:fd8eda608206 78 // clear screen, re-draw and refresh
davidwst421 0:fd8eda608206 79 lcd.clear();
davidwst421 0:fd8eda608206 80 eng.draw(lcd);
davidwst421 0:fd8eda608206 81 lcd.refresh();
davidwst421 0:fd8eda608206 82 }