ELEC2645 (2018/19) / Mbed 2 deprecated ml16c5l

Dependencies:   mbed

Committer:
ml16c5l
Date:
Thu Apr 11 12:51:57 2019 +0000
Revision:
6:0bc6813fe434
Parent:
5:331b65d1d280
Child:
9:192ad897ec95
the copter of the CopterGame

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ml16c5l 1:63db7ec60700 1 /*
ml16c5l 1:63db7ec60700 2 ELEC2645 Embedded Systems Project
ml16c5l 1:63db7ec60700 3 School of Electronic & Electrical Engineering
ml16c5l 1:63db7ec60700 4 University of Leeds
ml16c5l 3:5d860d0d589e 5 Name: Caiwenjing Liu
ml16c5l 3:5d860d0d589e 6 Username:ml16c5l
ml16c5l 3:5d860d0d589e 7 Student ID Number: 201165261
ml16c5l 3:5d860d0d589e 8 Date: 09/04/2019
ml16c5l 1:63db7ec60700 9 */
ml16c5l 1:63db7ec60700 10
ml16c5l 3:5d860d0d589e 11 ///////// pre-processor directives ////////
ml16c5l 1:63db7ec60700 12 #include "mbed.h"
ml16c5l 1:63db7ec60700 13 #include "Gamepad.h"
ml16c5l 1:63db7ec60700 14 #include "N5110.h"
ml16c5l 3:5d860d0d589e 15 //#include "CopterEngine.h"
ml16c5l 3:5d860d0d589e 16
ml16c5l 3:5d860d0d589e 17
ml16c5l 1:63db7ec60700 18
ml16c5l 1:63db7ec60700 19
ml16c5l 1:63db7ec60700 20 /////////////// structs /////////////////
ml16c5l 1:63db7ec60700 21 struct UserInput {
ml16c5l 1:63db7ec60700 22 Direction d;
ml16c5l 1:63db7ec60700 23 float mag;
ml16c5l 1:63db7ec60700 24 };
ml16c5l 1:63db7ec60700 25 /////////////// objects ///////////////
ml16c5l 1:63db7ec60700 26 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
ml16c5l 3:5d860d0d589e 27 Gamepad pad;
ml16c5l 3:5d860d0d589e 28 //CopterEngine copter;
ml16c5l 3:5d860d0d589e 29
ml16c5l 4:2848b366ee3d 30
ml16c5l 4:2848b366ee3d 31
ml16c5l 3:5d860d0d589e 32 ///////////// prototypes ///////////////
ml16c5l 3:5d860d0d589e 33 void init();
ml16c5l 3:5d860d0d589e 34 void update_game(UserInput input);
ml16c5l 3:5d860d0d589e 35 void render();
ml16c5l 3:5d860d0d589e 36 void welcome();
ml16c5l 3:5d860d0d589e 37
ml16c5l 4:2848b366ee3d 38 ////////////// functions ////////////////
ml16c5l 4:2848b366ee3d 39
ml16c5l 4:2848b366ee3d 40
ml16c5l 3:5d860d0d589e 41 int main()
ml16c5l 3:5d860d0d589e 42 {
ml16c5l 3:5d860d0d589e 43 int fps = 8; // frames per second
ml16c5l 3:5d860d0d589e 44 init(); // initialise and then display welcome screen...
ml16c5l 3:5d860d0d589e 45 welcome(); // waiting for the user to start
ml16c5l 6:0bc6813fe434 46 render(); // first draw the initial frame
ml16c5l 3:5d860d0d589e 47 wait(1.0f/fps); // and wait for one frame period
ml16c5l 6:0bc6813fe434 48
ml16c5l 3:5d860d0d589e 49 // game loop - read input, update the game state and render the display
ml16c5l 3:5d860d0d589e 50 while (1) {
ml16c5l 6:0bc6813fe434 51
ml16c5l 6:0bc6813fe434 52 lcd.clear();
ml16c5l 6:0bc6813fe434 53
ml16c5l 6:0bc6813fe434 54 int a = copter.GameOver();
ml16c5l 6:0bc6813fe434 55 if(a == 1) {
ml16c5l 6:0bc6813fe434 56 a=0;
ml16c5l 6:0bc6813fe434 57 lcd.clear();
ml16c5l 6:0bc6813fe434 58 lcd.printString("GAME OVER", 10,1);
ml16c5l 6:0bc6813fe434 59 lcd.refresh();
ml16c5l 6:0bc6813fe434 60 int h=0;
ml16c5l 6:0bc6813fe434 61 for(h=1; h<=500; h++) {
ml16c5l 6:0bc6813fe434 62 pad.tone(h,0.5);
ml16c5l 6:0bc6813fe434 63 }
ml16c5l 6:0bc6813fe434 64
ml16c5l 6:0bc6813fe434 65 wait(1.0);
ml16c5l 6:0bc6813fe434 66 lcd.printString("PRESS BACK",13,3);
ml16c5l 6:0bc6813fe434 67 lcd.printString("RESTART",20,4);
ml16c5l 6:0bc6813fe434 68 lcd.refresh();
ml16c5l 6:0bc6813fe434 69 while (pad.check_event(Gamepad::BACK_PRESSED)== false) {
ml16c5l 6:0bc6813fe434 70
ml16c5l 6:0bc6813fe434 71 pad.leds_on();
ml16c5l 6:0bc6813fe434 72 wait(0.1);
ml16c5l 6:0bc6813fe434 73 }
ml16c5l 6:0bc6813fe434 74
ml16c5l 6:0bc6813fe434 75 init();
ml16c5l 6:0bc6813fe434 76 welcome();
ml16c5l 6:0bc6813fe434 77
ml16c5l 6:0bc6813fe434 78 render();
ml16c5l 6:0bc6813fe434 79 wait(1.0f/fps);
ml16c5l 6:0bc6813fe434 80 }
ml16c5l 6:0bc6813fe434 81
ml16c5l 3:5d860d0d589e 82 copter.read_input(pad);
ml16c5l 3:5d860d0d589e 83 copter.update(pad);
ml16c5l 6:0bc6813fe434 84
ml16c5l 3:5d860d0d589e 85 render();
ml16c5l 3:5d860d0d589e 86 wait(1.0f/fps);
ml16c5l 6:0bc6813fe434 87
ml16c5l 3:5d860d0d589e 88 }
ml16c5l 6:0bc6813fe434 89 }
ml16c5l 3:5d860d0d589e 90
ml16c5l 3:5d860d0d589e 91 // initialies all classes and libraries
ml16c5l 3:5d860d0d589e 92 void init()
ml16c5l 3:5d860d0d589e 93 {
ml16c5l 6:0bc6813fe434 94 // need to initialise LCD and Gamepad
ml16c5l 3:5d860d0d589e 95 lcd.init();
ml16c5l 3:5d860d0d589e 96 pad.init();
ml16c5l 6:0bc6813fe434 97
ml16c5l 6:0bc6813fe434 98 copter.init(COPTER_WIDTH,COPTER_HEIGHT,WALL_SIZE,COPTER_SPEED,WALL1_SIZE,WALL2_SIZE);
ml16c5l 3:5d860d0d589e 99
ml16c5l 3:5d860d0d589e 100 }
ml16c5l 3:5d860d0d589e 101
ml16c5l 3:5d860d0d589e 102 // this function draws each frame on the LCD
ml16c5l 3:5d860d0d589e 103 void render()
ml16c5l 3:5d860d0d589e 104 {
ml16c5l 3:5d860d0d589e 105 // clear screen, re-draw and refresh
ml16c5l 6:0bc6813fe434 106 lcd.clear();
ml16c5l 3:5d860d0d589e 107 copter.draw(lcd);
ml16c5l 3:5d860d0d589e 108 lcd.refresh();
ml16c5l 3:5d860d0d589e 109 }
ml16c5l 3:5d860d0d589e 110
ml16c5l 4:2848b366ee3d 111
ml16c5l 6:0bc6813fe434 112 void welcome()
ml16c5l 6:0bc6813fe434 113 {
ml16c5l 4:2848b366ee3d 114 pad.leds_on();
ml16c5l 4:2848b366ee3d 115 lcd.printString("COPTER", 25,1);
ml16c5l 4:2848b366ee3d 116 lcd.printString("Press START ",10,3);
ml16c5l 4:2848b366ee3d 117 lcd.printString("to Start ",20,5);
ml16c5l 4:2848b366ee3d 118 lcd.refresh();
ml16c5l 6:0bc6813fe434 119
ml16c5l 4:2848b366ee3d 120 //print the symbal on the screen
ml16c5l 3:5d860d0d589e 121 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
ml16c5l 3:5d860d0d589e 122 pad.leds_on();
ml16c5l 4:2848b366ee3d 123 wait(0.2);
ml16c5l 4:2848b366ee3d 124 pad.tone(50,0.1);
ml16c5l 4:2848b366ee3d 125 wait(0.2);
ml16c5l 4:2848b366ee3d 126 pad.tone(100,0.1);
ml16c5l 4:2848b366ee3d 127 wait(0.2);
ml16c5l 4:2848b366ee3d 128 pad.tone(500,0.1);
ml16c5l 4:2848b366ee3d 129 wait(0.2);
ml16c5l 4:2848b366ee3d 130 pad.tone(700,0.1);
ml16c5l 4:2848b366ee3d 131 wait(0.2);
ml16c5l 4:2848b366ee3d 132 pad.tone(500,0.1);
ml16c5l 4:2848b366ee3d 133 wait(0.2);
ml16c5l 4:2848b366ee3d 134 pad.tone(100,0.1);
ml16c5l 4:2848b366ee3d 135 wait(0.2);
ml16c5l 4:2848b366ee3d 136 pad.tone(50,0.1);
ml16c5l 4:2848b366ee3d 137 wait(0.2);
ml16c5l 4:2848b366ee3d 138 pad.tone(100,0.1);
ml16c5l 4:2848b366ee3d 139 wait(0.2);
ml16c5l 4:2848b366ee3d 140 pad.tone(500,0.1);
ml16c5l 4:2848b366ee3d 141 wait(0.2);
ml16c5l 4:2848b366ee3d 142 pad.tone(700,0.1);
ml16c5l 4:2848b366ee3d 143 wait(0.2);
ml16c5l 4:2848b366ee3d 144 pad.tone(500,0.1);
ml16c5l 4:2848b366ee3d 145 wait(0.2);
ml16c5l 4:2848b366ee3d 146 pad.tone(100,0.1);
ml16c5l 4:2848b366ee3d 147 wait(0.2);
ml16c5l 4:2848b366ee3d 148 pad.tone(50,0.1);
ml16c5l 6:0bc6813fe434 149
ml16c5l 3:5d860d0d589e 150 }
ml16c5l 6:0bc6813fe434 151
ml16c5l 3:5d860d0d589e 152 }