ELEC2645 (2018/19) / Mbed 2 deprecated el17m2h_public

Dependencies:   mbed

Committer:
el17m2h
Date:
Wed May 08 17:51:07 2019 +0000
Revision:
27:af14fcd5a520
Parent:
26:d16a5b1e0ace
Child:
28:e0161a52a8b9
Added a game over screen by adding a set function and get function to the engine. The set functions decides if the game should end and this is read in the main.cpp by the get function.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17m2h 24:67dc71a8f009 1 /*
el17m2h 24:67dc71a8f009 2 ELEC2645 Embedded Systems Project
el17m2h 24:67dc71a8f009 3 School of Electronic & Electrical Engineering
el17m2h 24:67dc71a8f009 4 University of Leeds
el17m2h 24:67dc71a8f009 5 Name: Melissa Hartmann
el17m2h 24:67dc71a8f009 6 Username: el17m2h
el17m2h 24:67dc71a8f009 7 Student ID Number: 201176603
el17m2h 24:67dc71a8f009 8 Date: 09/05/2019
el17m2h 24:67dc71a8f009 9 */
el17m2h 24:67dc71a8f009 10
el17m2h 1:0001cb3eb053 11 #include "mbed.h"
el17m2h 1:0001cb3eb053 12 #include "Gamepad.h"
el17m2h 1:0001cb3eb053 13 #include "N5110.h"
el17m2h 2:360a6c301a4e 14 #include "Engine.h"
el17m2h 1:0001cb3eb053 15
el17m2h 5:8814d6de77d0 16 //structs
el17m2h 5:8814d6de77d0 17 struct UserInput {
el17m2h 5:8814d6de77d0 18 Direction d;
el17m2h 5:8814d6de77d0 19 float mag;
el17m2h 5:8814d6de77d0 20 };
el17m2h 5:8814d6de77d0 21
el17m2h 1:0001cb3eb053 22 // objects
el17m2h 1:0001cb3eb053 23 N5110 lcd(PTC5,PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // START, LCD SCE, LCD RST, LCD DC, LCD MOSI, LCD CLK, LCD Backlight
el17m2h 1:0001cb3eb053 24 Gamepad pad;
el17m2h 2:360a6c301a4e 25 Engine eng;
el17m2h 19:5a7b0cdf013b 26 Doodler dood;
el17m2h 20:a359092079b0 27 Enemy eny;
el17m2h 1:0001cb3eb053 28
el17m2h 1:0001cb3eb053 29 // prototypes
el17m2h 1:0001cb3eb053 30 void init();
el17m2h 5:8814d6de77d0 31 void update_game(UserInput input);
el17m2h 5:8814d6de77d0 32 void render();
el17m2h 1:0001cb3eb053 33 void welcome();
el17m2h 19:5a7b0cdf013b 34 void game_over();
el17m2h 1:0001cb3eb053 35
el17m2h 1:0001cb3eb053 36 // functions
el17m2h 1:0001cb3eb053 37 int main(){
el17m2h 15:4efa04a6a376 38 while(1){
el17m2h 21:6b16ca9834e6 39 init();
el17m2h 15:4efa04a6a376 40 welcome();
el17m2h 19:5a7b0cdf013b 41 int fps = 8;
el17m2h 19:5a7b0cdf013b 42 render(); // draws
el17m2h 19:5a7b0cdf013b 43 wait(1.0f/fps);
el17m2h 19:5a7b0cdf013b 44 while(1){
el17m2h 19:5a7b0cdf013b 45 eng.read_input(pad);
el17m2h 19:5a7b0cdf013b 46 eng.update(pad);
el17m2h 19:5a7b0cdf013b 47 render();
el17m2h 19:5a7b0cdf013b 48 wait(0.8f/fps);
el17m2h 27:af14fcd5a520 49 bool end_game = eng.get_game_over();
el17m2h 27:af14fcd5a520 50 if (end_game == true){
el17m2h 27:af14fcd5a520 51 game_over();
el17m2h 27:af14fcd5a520 52 break;
el17m2h 27:af14fcd5a520 53 }
el17m2h 19:5a7b0cdf013b 54 if (pad.check_event(Gamepad::BACK_PRESSED) == true){
el17m2h 19:5a7b0cdf013b 55 break;
el17m2h 19:5a7b0cdf013b 56 }
el17m2h 19:5a7b0cdf013b 57 }
el17m2h 15:4efa04a6a376 58 render();
el17m2h 15:4efa04a6a376 59 wait(0.1);
el17m2h 1:0001cb3eb053 60 }
el17m2h 1:0001cb3eb053 61 }
el17m2h 1:0001cb3eb053 62
el17m2h 1:0001cb3eb053 63 // initialies all classes and libraries
el17m2h 1:0001cb3eb053 64 void init(){
el17m2h 1:0001cb3eb053 65 // need to initialise LCD and Gamepad
el17m2h 1:0001cb3eb053 66 lcd.init();
el17m2h 23:9be87557b89a 67 lcd.setBrightness(1);
el17m2h 24:67dc71a8f009 68 lcd.setContrast(0.5),
el17m2h 1:0001cb3eb053 69 pad.init();
el17m2h 26:d16a5b1e0ace 70 eng.init();
el17m2h 1:0001cb3eb053 71 }
el17m2h 1:0001cb3eb053 72
el17m2h 5:8814d6de77d0 73 void render(){
el17m2h 5:8814d6de77d0 74 lcd.clear();
el17m2h 5:8814d6de77d0 75 eng.draw(lcd);
el17m2h 5:8814d6de77d0 76 lcd.refresh();
el17m2h 5:8814d6de77d0 77 }
el17m2h 5:8814d6de77d0 78
el17m2h 1:0001cb3eb053 79 // Starting menu screen display
el17m2h 1:0001cb3eb053 80 void welcome() {
el17m2h 1:0001cb3eb053 81 lcd.printString(" Doodle Jump! ",0,1);
el17m2h 1:0001cb3eb053 82 lcd.printString(" Press Start ",0,4);
el17m2h 1:0001cb3eb053 83 lcd.refresh();
el17m2h 5:8814d6de77d0 84 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
el17m2h 5:8814d6de77d0 85 pad.leds_on();
el17m2h 5:8814d6de77d0 86 wait(0.1);
el17m2h 5:8814d6de77d0 87 pad.leds_off();
el17m2h 5:8814d6de77d0 88 wait(0.1);
el17m2h 5:8814d6de77d0 89 }
el17m2h 19:5a7b0cdf013b 90 }
el17m2h 19:5a7b0cdf013b 91
el17m2h 19:5a7b0cdf013b 92 void game_over() {
el17m2h 19:5a7b0cdf013b 93 lcd.clear();
el17m2h 21:6b16ca9834e6 94 lcd.printString("Game Over!",3,1);
el17m2h 21:6b16ca9834e6 95 lcd.printString("Press back",3,3);
el17m2h 21:6b16ca9834e6 96 lcd.printString("SCORE = ",3,5);
el17m2h 19:5a7b0cdf013b 97 lcd.refresh();
el17m2h 21:6b16ca9834e6 98 while ( pad.check_event(Gamepad::BACK_PRESSED) == false) {
el17m2h 19:5a7b0cdf013b 99 pad.leds_on();
el17m2h 19:5a7b0cdf013b 100 wait(0.1);
el17m2h 19:5a7b0cdf013b 101 pad.leds_off();
el17m2h 19:5a7b0cdf013b 102 wait(0.1);
el17m2h 15:4efa04a6a376 103 }
el17m2h 15:4efa04a6a376 104 }