ELEC2645 (2017/18) / Mbed 2 deprecated fy15raf

Dependencies:   mbed

Committer:
RehamFaqehi
Date:
Fri May 04 23:26:17 2018 +0000
Revision:
13:00bbb0612e97
Parent:
12:4d7f1349d796
Child:
14:cf4a32245152
testing Rocket and Asteroid movements 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 13:00bbb0612e97 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 13:00bbb0612e97 37 #endif
RehamFaqehi 13:00bbb0612e97 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 2:3fd0d3d69556 43
RehamFaqehi 12:4d7f1349d796 44 render(); // drawing the initial frame
RehamFaqehi 2:3fd0d3d69556 45 wait(1.0f/fps); // wait for one frame period
RehamFaqehi 12:4d7f1349d796 46
RehamFaqehi 12:4d7f1349d796 47 // game loop executes untill check_gameOver() function return 1 to end the game
RehamFaqehi 12:4d7f1349d796 48 while (game.check_gameOver()!=1) {
RehamFaqehi 12:4d7f1349d796 49 // green LEDs turn on and red LEDs turn off
RehamFaqehi 10:3af708f38a42 50 g_pad.led(1, 0);
RehamFaqehi 10:3af708f38a42 51 g_pad.led(4, 0);
RehamFaqehi 10:3af708f38a42 52 g_pad.led(3, 2);
RehamFaqehi 12:4d7f1349d796 53 g_pad.led(6, 2);
RehamFaqehi 12:4d7f1349d796 54
RehamFaqehi 3:489437d4ebd7 55 game.read_input(g_pad);
RehamFaqehi 12:4d7f1349d796 56 game.update(g_pad);
RehamFaqehi 2:3fd0d3d69556 57 render();
RehamFaqehi 2:3fd0d3d69556 58 wait(1.0f/fps);
RehamFaqehi 12:4d7f1349d796 59
RehamFaqehi 10:3af708f38a42 60 while(g_pad.check_event(Gamepad::BACK_PRESSED) == true || sleep ==1) {
RehamFaqehi 12:4d7f1349d796 61
RehamFaqehi 10:3af708f38a42 62 sleep=1;
RehamFaqehi 12:4d7f1349d796 63 // green LEDs turn off and red LED turn on
RehamFaqehi 10:3af708f38a42 64 g_pad.led(1, 2);
RehamFaqehi 10:3af708f38a42 65 g_pad.led(4, 2);
RehamFaqehi 10:3af708f38a42 66 g_pad.led(3, 0);
RehamFaqehi 12:4d7f1349d796 67 g_pad.led(6, 0);
RehamFaqehi 12:4d7f1349d796 68 //stop the game seconds
RehamFaqehi 12:4d7f1349d796 69 game.time_stop();
RehamFaqehi 11:cb48d596aa3e 70 //sleep();
RehamFaqehi 12:4d7f1349d796 71 //check if start button has been pressed to continue playing
RehamFaqehi 12:4d7f1349d796 72 if(g_pad.check_event(Gamepad::START_PRESSED) == true) {
RehamFaqehi 10:3af708f38a42 73 sleep=0;
RehamFaqehi 10:3af708f38a42 74 break;
RehamFaqehi 10:3af708f38a42 75 }
RehamFaqehi 10:3af708f38a42 76 }
RehamFaqehi 2:3fd0d3d69556 77 }
RehamFaqehi 9:e70179ff61c5 78 lcd.clear();
RehamFaqehi 12:4d7f1349d796 79 gameOver(); //game over screen show up with the maximum secs that has been reached
RehamFaqehi 2:3fd0d3d69556 80
RehamFaqehi 1:386790f5f9bf 81 }
RehamFaqehi 1:386790f5f9bf 82
RehamFaqehi 1:386790f5f9bf 83 // initialies all classes and libraries
RehamFaqehi 1:386790f5f9bf 84 void init()
RehamFaqehi 1:386790f5f9bf 85 {
RehamFaqehi 1:386790f5f9bf 86 //initialise LCD and Gamepad first
RehamFaqehi 1:386790f5f9bf 87 lcd.init();
RehamFaqehi 1:386790f5f9bf 88 lcd.setContrast(0.5);
RehamFaqehi 1:386790f5f9bf 89 g_pad.init();
RehamFaqehi 2:3fd0d3d69556 90 // initialise the game
RehamFaqehi 2:3fd0d3d69556 91 game.init();
RehamFaqehi 2:3fd0d3d69556 92 }
RehamFaqehi 2:3fd0d3d69556 93
RehamFaqehi 2:3fd0d3d69556 94 //function to draw the frames on the LCD
RehamFaqehi 2:3fd0d3d69556 95 void render()
RehamFaqehi 2:3fd0d3d69556 96 {
RehamFaqehi 2:3fd0d3d69556 97 // first clear screen, re-draw and then refresh the LCD
RehamFaqehi 12:4d7f1349d796 98 lcd.clear();
RehamFaqehi 2:3fd0d3d69556 99 game.draw(lcd);
RehamFaqehi 2:3fd0d3d69556 100 lcd.refresh();
RehamFaqehi 1:386790f5f9bf 101 }
RehamFaqehi 1:386790f5f9bf 102
RehamFaqehi 1:386790f5f9bf 103 // simple welcoming screen before starting the game
RehamFaqehi 2:3fd0d3d69556 104 void welcome()
RehamFaqehi 2:3fd0d3d69556 105 {
RehamFaqehi 2:3fd0d3d69556 106
RehamFaqehi 11:cb48d596aa3e 107 lcd.printString(" Rocket! ",0,1);
RehamFaqehi 11:cb48d596aa3e 108 lcd.printString(" Press Start ",0,4);
RehamFaqehi 1:386790f5f9bf 109 lcd.refresh();
RehamFaqehi 2:3fd0d3d69556 110
RehamFaqehi 2:3fd0d3d69556 111 //flashing LEDs until start button is pressed
RehamFaqehi 1:386790f5f9bf 112 while ( g_pad.check_event(Gamepad::START_PRESSED) == false) {
RehamFaqehi 1:386790f5f9bf 113 g_pad.leds_on();
RehamFaqehi 1:386790f5f9bf 114 wait(0.1);
RehamFaqehi 1:386790f5f9bf 115 g_pad.leds_off();
RehamFaqehi 1:386790f5f9bf 116 wait(0.1);
RehamFaqehi 2:3fd0d3d69556 117 }
RehamFaqehi 1:386790f5f9bf 118 }
RehamFaqehi 1:386790f5f9bf 119
RehamFaqehi 12:4d7f1349d796 120 // game over screen after the end of the game
RehamFaqehi 12:4d7f1349d796 121 void gameOver()
RehamFaqehi 12:4d7f1349d796 122 {
RehamFaqehi 1:386790f5f9bf 123
RehamFaqehi 9:e70179ff61c5 124 lcd.printString(" Game Over!! ",0,1);
RehamFaqehi 12:4d7f1349d796 125 //print the maximum recorded seconds
RehamFaqehi 12:4d7f1349d796 126 game.print_travel_time(lcd);
RehamFaqehi 9:e70179ff61c5 127 lcd.refresh();
RehamFaqehi 12:4d7f1349d796 128
RehamFaqehi 12:4d7f1349d796 129 }
RehamFaqehi 9:e70179ff61c5 130
RehamFaqehi 9:e70179ff61c5 131
RehamFaqehi 9:e70179ff61c5 132
RehamFaqehi 9:e70179ff61c5 133