ELEC2645 (2017/18) / Mbed 2 deprecated fy15raf

Dependencies:   mbed

Committer:
RehamFaqehi
Date:
Sun May 06 16:17:41 2018 +0000
Revision:
14:cf4a32245152
Parent:
13:00bbb0612e97
Child:
15:658f1216ee84
Debugging strings and play again with start button have been added

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 13:00bbb0612e97 17 #include "tests.h"
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 13:00bbb0612e97 32 //game will excute if all tests passed
RehamFaqehi 14:cf4a32245152 33 #ifdef ALL_TESTS_H
RehamFaqehi 13:00bbb0612e97 34 int failures = Run_tests();
RehamFaqehi 13:00bbb0612e97 35
RehamFaqehi 13:00bbb0612e97 36 if(failures > 0) return failures;
RehamFaqehi 14:cf4a32245152 37 #endif
RehamFaqehi 14:cf4a32245152 38
RehamFaqehi 2:3fd0d3d69556 39 int fps = 8; // frames per second
RehamFaqehi 10:3af708f38a42 40 int sleep=0;
RehamFaqehi 2:3fd0d3d69556 41 init(); // initialise
RehamFaqehi 1:386790f5f9bf 42 welcome(); // display welcome screen till the user press start to start the game
RehamFaqehi 14:cf4a32245152 43
RehamFaqehi 14:cf4a32245152 44 //debugging
RehamFaqehi 14:cf4a32245152 45 printf("\n....THE GAME STARTED :)..... \n\n");
RehamFaqehi 2:3fd0d3d69556 46
RehamFaqehi 12:4d7f1349d796 47 render(); // drawing the initial frame
RehamFaqehi 2:3fd0d3d69556 48 wait(1.0f/fps); // wait for one frame period
RehamFaqehi 12:4d7f1349d796 49
RehamFaqehi 14:cf4a32245152 50
RehamFaqehi 14:cf4a32245152 51 // game loop executes
RehamFaqehi 14:cf4a32245152 52 while (1) {
RehamFaqehi 14:cf4a32245152 53
RehamFaqehi 14:cf4a32245152 54
RehamFaqehi 12:4d7f1349d796 55 // green LEDs turn on and red LEDs turn off
RehamFaqehi 10:3af708f38a42 56 g_pad.led(1, 0);
RehamFaqehi 10:3af708f38a42 57 g_pad.led(4, 0);
RehamFaqehi 10:3af708f38a42 58 g_pad.led(3, 2);
RehamFaqehi 12:4d7f1349d796 59 g_pad.led(6, 2);
RehamFaqehi 12:4d7f1349d796 60
RehamFaqehi 3:489437d4ebd7 61 game.read_input(g_pad);
RehamFaqehi 12:4d7f1349d796 62 game.update(g_pad);
RehamFaqehi 2:3fd0d3d69556 63 render();
RehamFaqehi 2:3fd0d3d69556 64 wait(1.0f/fps);
RehamFaqehi 12:4d7f1349d796 65
RehamFaqehi 10:3af708f38a42 66 while(g_pad.check_event(Gamepad::BACK_PRESSED) == true || sleep ==1) {
RehamFaqehi 12:4d7f1349d796 67
RehamFaqehi 14:cf4a32245152 68 printf("Waiting to contienue.....\n");
RehamFaqehi 14:cf4a32245152 69
RehamFaqehi 10:3af708f38a42 70 sleep=1;
RehamFaqehi 12:4d7f1349d796 71 // green LEDs turn off and red LED turn on
RehamFaqehi 10:3af708f38a42 72 g_pad.led(1, 2);
RehamFaqehi 10:3af708f38a42 73 g_pad.led(4, 2);
RehamFaqehi 10:3af708f38a42 74 g_pad.led(3, 0);
RehamFaqehi 12:4d7f1349d796 75 g_pad.led(6, 0);
RehamFaqehi 12:4d7f1349d796 76 //stop the game seconds
RehamFaqehi 12:4d7f1349d796 77 game.time_stop();
RehamFaqehi 11:cb48d596aa3e 78 //sleep();
RehamFaqehi 12:4d7f1349d796 79 //check if start button has been pressed to continue playing
RehamFaqehi 12:4d7f1349d796 80 if(g_pad.check_event(Gamepad::START_PRESSED) == true) {
RehamFaqehi 10:3af708f38a42 81 sleep=0;
RehamFaqehi 10:3af708f38a42 82 break;
RehamFaqehi 10:3af708f38a42 83 }
RehamFaqehi 10:3af708f38a42 84 }
RehamFaqehi 14:cf4a32245152 85 if (game.check_gameOver()==1) { // if check_gameOver() function return 1 gameOver screen will be showen
RehamFaqehi 14:cf4a32245152 86 //debugging
RehamFaqehi 14:cf4a32245152 87 printf("\n\n ....End of the game :)..... \n\n");
RehamFaqehi 14:cf4a32245152 88
RehamFaqehi 14:cf4a32245152 89 lcd.clear();
RehamFaqehi 14:cf4a32245152 90 gameOver(); //game over screen will be shown with travelling period that has been reached
RehamFaqehi 14:cf4a32245152 91
RehamFaqehi 14:cf4a32245152 92 // reset to play again
RehamFaqehi 14:cf4a32245152 93 game.reset_gameOver();
RehamFaqehi 14:cf4a32245152 94 init();
RehamFaqehi 14:cf4a32245152 95 render();
RehamFaqehi 14:cf4a32245152 96
RehamFaqehi 14:cf4a32245152 97 //debugging
RehamFaqehi 14:cf4a32245152 98 printf("\n\n ....playing the game again :)..... \n\n");
RehamFaqehi 14:cf4a32245152 99
RehamFaqehi 14:cf4a32245152 100 }
RehamFaqehi 2:3fd0d3d69556 101 }
RehamFaqehi 2:3fd0d3d69556 102
RehamFaqehi 1:386790f5f9bf 103 }
RehamFaqehi 1:386790f5f9bf 104
RehamFaqehi 1:386790f5f9bf 105 // initialies all classes and libraries
RehamFaqehi 1:386790f5f9bf 106 void init()
RehamFaqehi 1:386790f5f9bf 107 {
RehamFaqehi 1:386790f5f9bf 108 //initialise LCD and Gamepad first
RehamFaqehi 1:386790f5f9bf 109 lcd.init();
RehamFaqehi 1:386790f5f9bf 110 lcd.setContrast(0.5);
RehamFaqehi 1:386790f5f9bf 111 g_pad.init();
RehamFaqehi 2:3fd0d3d69556 112 // initialise the game
RehamFaqehi 2:3fd0d3d69556 113 game.init();
RehamFaqehi 2:3fd0d3d69556 114 }
RehamFaqehi 2:3fd0d3d69556 115
RehamFaqehi 2:3fd0d3d69556 116 //function to draw the frames on the LCD
RehamFaqehi 2:3fd0d3d69556 117 void render()
RehamFaqehi 2:3fd0d3d69556 118 {
RehamFaqehi 2:3fd0d3d69556 119 // first clear screen, re-draw and then refresh the LCD
RehamFaqehi 12:4d7f1349d796 120 lcd.clear();
RehamFaqehi 2:3fd0d3d69556 121 game.draw(lcd);
RehamFaqehi 2:3fd0d3d69556 122 lcd.refresh();
RehamFaqehi 1:386790f5f9bf 123 }
RehamFaqehi 1:386790f5f9bf 124
RehamFaqehi 1:386790f5f9bf 125 // simple welcoming screen before starting the game
RehamFaqehi 2:3fd0d3d69556 126 void welcome()
RehamFaqehi 2:3fd0d3d69556 127 {
RehamFaqehi 2:3fd0d3d69556 128
RehamFaqehi 11:cb48d596aa3e 129 lcd.printString(" Rocket! ",0,1);
RehamFaqehi 11:cb48d596aa3e 130 lcd.printString(" Press Start ",0,4);
RehamFaqehi 1:386790f5f9bf 131 lcd.refresh();
RehamFaqehi 2:3fd0d3d69556 132
RehamFaqehi 2:3fd0d3d69556 133 //flashing LEDs until start button is pressed
RehamFaqehi 1:386790f5f9bf 134 while ( g_pad.check_event(Gamepad::START_PRESSED) == false) {
RehamFaqehi 1:386790f5f9bf 135 g_pad.leds_on();
RehamFaqehi 1:386790f5f9bf 136 wait(0.1);
RehamFaqehi 1:386790f5f9bf 137 g_pad.leds_off();
RehamFaqehi 1:386790f5f9bf 138 wait(0.1);
RehamFaqehi 2:3fd0d3d69556 139 }
RehamFaqehi 1:386790f5f9bf 140 }
RehamFaqehi 1:386790f5f9bf 141
RehamFaqehi 12:4d7f1349d796 142 // game over screen after the end of the game
RehamFaqehi 12:4d7f1349d796 143 void gameOver()
RehamFaqehi 12:4d7f1349d796 144 {
RehamFaqehi 14:cf4a32245152 145 //game over secreen will be showen until start button is pressed
RehamFaqehi 14:cf4a32245152 146 while ( g_pad.check_event(Gamepad::START_PRESSED) == false) {
RehamFaqehi 9:e70179ff61c5 147 lcd.printString(" Game Over!! ",0,1);
RehamFaqehi 12:4d7f1349d796 148 //print the maximum recorded seconds
RehamFaqehi 12:4d7f1349d796 149 game.print_travel_time(lcd);
RehamFaqehi 9:e70179ff61c5 150 lcd.refresh();
RehamFaqehi 14:cf4a32245152 151 }
RehamFaqehi 12:4d7f1349d796 152
RehamFaqehi 12:4d7f1349d796 153 }
RehamFaqehi 9:e70179ff61c5 154
RehamFaqehi 9:e70179ff61c5 155
RehamFaqehi 9:e70179ff61c5 156
RehamFaqehi 9:e70179ff61c5 157