ELEC2645 (2017/18) / Mbed 2 deprecated fy15raf

Dependencies:   mbed

Committer:
RehamFaqehi
Date:
Fri May 04 21:19:34 2018 +0000
Revision:
12:4d7f1349d796
Parent:
11:cb48d596aa3e
Child:
13:00bbb0612e97
Time added and some comments and functions names fixed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RehamFaqehi 0:f3d96a1a3177 1 /*
RehamFaqehi 0:f3d96a1a3177 2 ELEC2645 Embedded Systems Project
RehamFaqehi 2:3fd0d3d69556 3 School of Electronic & Electrical Engineering
RehamFaqehi 2:3fd0d3d69556 4 University of Leeds
RehamFaqehi 0:f3d96a1a3177 5 Name: Reham Faqehi
RehamFaqehi 0:f3d96a1a3177 6 Username: Fy15raf
RehamFaqehi 0:f3d96a1a3177 7 Student ID Number: 200982112
RehamFaqehi 2:3fd0d3d69556 8 Date: 03/05/2018
RehamFaqehi 2:3fd0d3d69556 9 */
RehamFaqehi 2:3fd0d3d69556 10
RehamFaqehi 0:f3d96a1a3177 11
RehamFaqehi 1:386790f5f9bf 12 ///////// pre-processor directives ////////
RehamFaqehi 1:386790f5f9bf 13 #include "mbed.h"
RehamFaqehi 1:386790f5f9bf 14 #include "Gamepad.h"
RehamFaqehi 1:386790f5f9bf 15 #include "N5110.h"
RehamFaqehi 2:3fd0d3d69556 16 #include "GameEngine.h"
RehamFaqehi 11:cb48d596aa3e 17
RehamFaqehi 1:386790f5f9bf 18 /////////////// objects ///////////////
RehamFaqehi 1:386790f5f9bf 19 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
RehamFaqehi 1:386790f5f9bf 20 Gamepad g_pad;
RehamFaqehi 2:3fd0d3d69556 21 GameEngine game;
RehamFaqehi 1:386790f5f9bf 22
RehamFaqehi 1:386790f5f9bf 23 ///////////// prototypes ///////////////
RehamFaqehi 1:386790f5f9bf 24 void init();
RehamFaqehi 2:3fd0d3d69556 25 void render();
RehamFaqehi 1:386790f5f9bf 26 void welcome();
RehamFaqehi 9:e70179ff61c5 27 void gameOver();
RehamFaqehi 2:3fd0d3d69556 28
RehamFaqehi 2:3fd0d3d69556 29 ///////////// functions ////////////////
RehamFaqehi 2:3fd0d3d69556 30 int main()
RehamFaqehi 1:386790f5f9bf 31 {
RehamFaqehi 2:3fd0d3d69556 32 int fps = 8; // frames per second
RehamFaqehi 10:3af708f38a42 33 int sleep=0;
RehamFaqehi 2:3fd0d3d69556 34 init(); // initialise
RehamFaqehi 1:386790f5f9bf 35 welcome(); // display welcome screen till the user press start to start the game
RehamFaqehi 2:3fd0d3d69556 36
RehamFaqehi 12:4d7f1349d796 37 render(); // drawing the initial frame
RehamFaqehi 2:3fd0d3d69556 38 wait(1.0f/fps); // wait for one frame period
RehamFaqehi 12:4d7f1349d796 39
RehamFaqehi 12:4d7f1349d796 40 // game loop executes untill check_gameOver() function return 1 to end the game
RehamFaqehi 12:4d7f1349d796 41 while (game.check_gameOver()!=1) {
RehamFaqehi 12:4d7f1349d796 42 // green LEDs turn on and red LEDs turn off
RehamFaqehi 10:3af708f38a42 43 g_pad.led(1, 0);
RehamFaqehi 10:3af708f38a42 44 g_pad.led(4, 0);
RehamFaqehi 10:3af708f38a42 45 g_pad.led(3, 2);
RehamFaqehi 12:4d7f1349d796 46 g_pad.led(6, 2);
RehamFaqehi 12:4d7f1349d796 47
RehamFaqehi 3:489437d4ebd7 48 game.read_input(g_pad);
RehamFaqehi 12:4d7f1349d796 49 game.update(g_pad);
RehamFaqehi 2:3fd0d3d69556 50 render();
RehamFaqehi 2:3fd0d3d69556 51 wait(1.0f/fps);
RehamFaqehi 12:4d7f1349d796 52
RehamFaqehi 10:3af708f38a42 53 while(g_pad.check_event(Gamepad::BACK_PRESSED) == true || sleep ==1) {
RehamFaqehi 12:4d7f1349d796 54
RehamFaqehi 10:3af708f38a42 55 sleep=1;
RehamFaqehi 12:4d7f1349d796 56 // green LEDs turn off and red LED turn on
RehamFaqehi 10:3af708f38a42 57 g_pad.led(1, 2);
RehamFaqehi 10:3af708f38a42 58 g_pad.led(4, 2);
RehamFaqehi 10:3af708f38a42 59 g_pad.led(3, 0);
RehamFaqehi 12:4d7f1349d796 60 g_pad.led(6, 0);
RehamFaqehi 12:4d7f1349d796 61 //stop the game seconds
RehamFaqehi 12:4d7f1349d796 62 game.time_stop();
RehamFaqehi 11:cb48d596aa3e 63 //sleep();
RehamFaqehi 12:4d7f1349d796 64 //check if start button has been pressed to continue playing
RehamFaqehi 12:4d7f1349d796 65 if(g_pad.check_event(Gamepad::START_PRESSED) == true) {
RehamFaqehi 10:3af708f38a42 66 sleep=0;
RehamFaqehi 10:3af708f38a42 67 break;
RehamFaqehi 10:3af708f38a42 68 }
RehamFaqehi 10:3af708f38a42 69 }
RehamFaqehi 2:3fd0d3d69556 70 }
RehamFaqehi 9:e70179ff61c5 71 lcd.clear();
RehamFaqehi 12:4d7f1349d796 72 gameOver(); //game over screen show up with the maximum secs that has been reached
RehamFaqehi 2:3fd0d3d69556 73
RehamFaqehi 1:386790f5f9bf 74 }
RehamFaqehi 1:386790f5f9bf 75
RehamFaqehi 1:386790f5f9bf 76 // initialies all classes and libraries
RehamFaqehi 1:386790f5f9bf 77 void init()
RehamFaqehi 1:386790f5f9bf 78 {
RehamFaqehi 1:386790f5f9bf 79 //initialise LCD and Gamepad first
RehamFaqehi 1:386790f5f9bf 80 lcd.init();
RehamFaqehi 1:386790f5f9bf 81 lcd.setContrast(0.5);
RehamFaqehi 1:386790f5f9bf 82 g_pad.init();
RehamFaqehi 2:3fd0d3d69556 83 // initialise the game
RehamFaqehi 2:3fd0d3d69556 84 game.init();
RehamFaqehi 2:3fd0d3d69556 85 }
RehamFaqehi 2:3fd0d3d69556 86
RehamFaqehi 2:3fd0d3d69556 87 //function to draw the frames on the LCD
RehamFaqehi 2:3fd0d3d69556 88 void render()
RehamFaqehi 2:3fd0d3d69556 89 {
RehamFaqehi 2:3fd0d3d69556 90 // first clear screen, re-draw and then refresh the LCD
RehamFaqehi 12:4d7f1349d796 91 lcd.clear();
RehamFaqehi 2:3fd0d3d69556 92 game.draw(lcd);
RehamFaqehi 2:3fd0d3d69556 93 lcd.refresh();
RehamFaqehi 1:386790f5f9bf 94 }
RehamFaqehi 1:386790f5f9bf 95
RehamFaqehi 1:386790f5f9bf 96 // simple welcoming screen before starting the game
RehamFaqehi 2:3fd0d3d69556 97 void welcome()
RehamFaqehi 2:3fd0d3d69556 98 {
RehamFaqehi 2:3fd0d3d69556 99
RehamFaqehi 11:cb48d596aa3e 100 lcd.printString(" Rocket! ",0,1);
RehamFaqehi 11:cb48d596aa3e 101 lcd.printString(" Press Start ",0,4);
RehamFaqehi 1:386790f5f9bf 102 lcd.refresh();
RehamFaqehi 2:3fd0d3d69556 103
RehamFaqehi 2:3fd0d3d69556 104 //flashing LEDs until start button is pressed
RehamFaqehi 1:386790f5f9bf 105 while ( g_pad.check_event(Gamepad::START_PRESSED) == false) {
RehamFaqehi 1:386790f5f9bf 106 g_pad.leds_on();
RehamFaqehi 1:386790f5f9bf 107 wait(0.1);
RehamFaqehi 1:386790f5f9bf 108 g_pad.leds_off();
RehamFaqehi 1:386790f5f9bf 109 wait(0.1);
RehamFaqehi 2:3fd0d3d69556 110 }
RehamFaqehi 1:386790f5f9bf 111 }
RehamFaqehi 1:386790f5f9bf 112
RehamFaqehi 12:4d7f1349d796 113 // game over screen after the end of the game
RehamFaqehi 12:4d7f1349d796 114 void gameOver()
RehamFaqehi 12:4d7f1349d796 115 {
RehamFaqehi 1:386790f5f9bf 116
RehamFaqehi 9:e70179ff61c5 117 lcd.printString(" Game Over!! ",0,1);
RehamFaqehi 12:4d7f1349d796 118 //print the maximum recorded seconds
RehamFaqehi 12:4d7f1349d796 119 game.print_travel_time(lcd);
RehamFaqehi 9:e70179ff61c5 120 lcd.refresh();
RehamFaqehi 12:4d7f1349d796 121
RehamFaqehi 12:4d7f1349d796 122 }
RehamFaqehi 9:e70179ff61c5 123
RehamFaqehi 9:e70179ff61c5 124
RehamFaqehi 9:e70179ff61c5 125
RehamFaqehi 9:e70179ff61c5 126