ELEC2645 (2018/19) / Mbed 2 deprecated el17ttds

Dependencies:   mbed N5110_tf

Committer:
el17ttds
Date:
Thu May 09 01:30:57 2019 +0000
Revision:
7:08f78909dda7
Parent:
4:3446009e2f38
Child:
8:d1c04f0e4890
Hero now has health and can die

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17ttds 0:7769e2ad5d7a 1 #include "main.h"
el17ttds 0:7769e2ad5d7a 2
el17ttds 0:7769e2ad5d7a 3 /////////////// objects ///////////////
el17ttds 0:7769e2ad5d7a 4 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
el17ttds 0:7769e2ad5d7a 5 Gamepad pad;
el17ttds 2:ee9b361ba6df 6 Engine engine;
el17ttds 0:7769e2ad5d7a 7
el17ttds 0:7769e2ad5d7a 8 int main() {
el17ttds 3:3d35ab70b565 9
el17ttds 0:7769e2ad5d7a 10 init();
el17ttds 0:7769e2ad5d7a 11 welcome();
el17ttds 1:8e319bd14b84 12 string option = menu();
el17ttds 1:8e319bd14b84 13 begin(option);
el17ttds 3:3d35ab70b565 14
el17ttds 4:3446009e2f38 15 lcd.printString(" END",0,5);
el17ttds 4:3446009e2f38 16 lcd.refresh();
el17ttds 0:7769e2ad5d7a 17 }
el17ttds 0:7769e2ad5d7a 18
el17ttds 0:7769e2ad5d7a 19 void init() {
el17ttds 7:08f78909dda7 20 alive = true;
el17ttds 7:08f78909dda7 21 // initialise display and peripherals
el17ttds 7:08f78909dda7 22 lcd.init();
el17ttds 7:08f78909dda7 23 pad.init();
el17ttds 3:3d35ab70b565 24
el17ttds 0:7769e2ad5d7a 25 // initialise any in game functions (e.g: sprites)
el17ttds 3:3d35ab70b565 26 engine.init(MAP_WIDTH,MAP_HEIGHT,SCREEN_WIDTH,SCREEN_HEIGHT);
el17ttds 0:7769e2ad5d7a 27 }
el17ttds 0:7769e2ad5d7a 28
el17ttds 0:7769e2ad5d7a 29 void welcome() {
el17ttds 0:7769e2ad5d7a 30 // Draw coin
el17ttds 0:7769e2ad5d7a 31 // wait
el17ttds 0:7769e2ad5d7a 32 // Draw protagonist
el17ttds 0:7769e2ad5d7a 33 // wait
el17ttds 0:7769e2ad5d7a 34 // draw enemies
el17ttds 0:7769e2ad5d7a 35 // wait
el17ttds 0:7769e2ad5d7a 36 lcd.printString(" GAME! ",0,0);
el17ttds 0:7769e2ad5d7a 37 lcd.refresh();
el17ttds 0:7769e2ad5d7a 38 wait(1.0);
el17ttds 0:7769e2ad5d7a 39 lcd.printString("By Thomas",0,2);
el17ttds 0:7769e2ad5d7a 40 lcd.printString("Foster",0,3);
el17ttds 0:7769e2ad5d7a 41 lcd.refresh();
el17ttds 0:7769e2ad5d7a 42 wait(2.0);
el17ttds 3:3d35ab70b565 43
el17ttds 0:7769e2ad5d7a 44 while (pad.check_event(Gamepad::START_PRESSED) == false) {
el17ttds 7:08f78909dda7 45 lcd.printString("Press Start ",0,5);
el17ttds 0:7769e2ad5d7a 46 lcd.refresh();
el17ttds 0:7769e2ad5d7a 47 wait(0.2);
el17ttds 7:08f78909dda7 48 lcd.printString("Press Start. ",0,5);
el17ttds 0:7769e2ad5d7a 49 lcd.refresh();
el17ttds 0:7769e2ad5d7a 50 wait(0.2);
el17ttds 7:08f78909dda7 51 lcd.printString("Press Start.. ",0,5);
el17ttds 0:7769e2ad5d7a 52 lcd.refresh();
el17ttds 0:7769e2ad5d7a 53 wait(0.2);
el17ttds 7:08f78909dda7 54 lcd.printString("Press Start... ",0,5);
el17ttds 0:7769e2ad5d7a 55 wait(0.2);
el17ttds 0:7769e2ad5d7a 56 }
el17ttds 0:7769e2ad5d7a 57 }
el17ttds 0:7769e2ad5d7a 58
el17ttds 1:8e319bd14b84 59 string menu() {
el17ttds 3:3d35ab70b565 60
el17ttds 0:7769e2ad5d7a 61 string option = "0";
el17ttds 0:7769e2ad5d7a 62 lcd.init();
el17ttds 3:3d35ab70b565 63
el17ttds 0:7769e2ad5d7a 64 while(option == "0") {
el17ttds 3:3d35ab70b565 65
el17ttds 0:7769e2ad5d7a 66 lcd.printString("A - Play Now",0,1);
el17ttds 0:7769e2ad5d7a 67 lcd.printString("B - Tutorial",0,2);
el17ttds 0:7769e2ad5d7a 68 lcd.printString("X - Highscores",0,3);
el17ttds 0:7769e2ad5d7a 69 lcd.printString("Y - Credits",0,4);
el17ttds 0:7769e2ad5d7a 70 lcd.refresh();
el17ttds 3:3d35ab70b565 71
el17ttds 0:7769e2ad5d7a 72 if (pad.check_event(Gamepad::A_PRESSED) == true) {
el17ttds 0:7769e2ad5d7a 73 option = "A";
el17ttds 0:7769e2ad5d7a 74 } else if (pad.check_event(Gamepad::B_PRESSED) == true) {
el17ttds 0:7769e2ad5d7a 75 option = "B";
el17ttds 0:7769e2ad5d7a 76 } else if (pad.check_event(Gamepad::X_PRESSED) == true) {
el17ttds 0:7769e2ad5d7a 77 option = "X";
el17ttds 0:7769e2ad5d7a 78 } else if (pad.check_event(Gamepad::Y_PRESSED) == true) {
el17ttds 0:7769e2ad5d7a 79 option = "Y";
el17ttds 0:7769e2ad5d7a 80 }
el17ttds 3:3d35ab70b565 81
el17ttds 0:7769e2ad5d7a 82 wait(0.2);
el17ttds 0:7769e2ad5d7a 83 }
el17ttds 0:7769e2ad5d7a 84 if (option == "A") {
el17ttds 0:7769e2ad5d7a 85 init();
el17ttds 0:7769e2ad5d7a 86 lcd.printString(" Play game? ",0,0);
el17ttds 1:8e319bd14b84 87 ask(option);
el17ttds 0:7769e2ad5d7a 88 } else if (option == "B") {
el17ttds 0:7769e2ad5d7a 89 init();
el17ttds 0:7769e2ad5d7a 90 lcd.printString("Play tutorial?",0,0);
el17ttds 1:8e319bd14b84 91 ask(option);
el17ttds 0:7769e2ad5d7a 92 }
el17ttds 1:8e319bd14b84 93 return option;
el17ttds 0:7769e2ad5d7a 94 }
el17ttds 0:7769e2ad5d7a 95
el17ttds 1:8e319bd14b84 96 void ask(string option) {
el17ttds 3:3d35ab70b565 97
el17ttds 1:8e319bd14b84 98 int start = -1;
el17ttds 0:7769e2ad5d7a 99 lcd.printString("Are you sure?",0,3);
el17ttds 0:7769e2ad5d7a 100 lcd.printString("Back? Start?",0,5);
el17ttds 0:7769e2ad5d7a 101 lcd.refresh();
el17ttds 3:3d35ab70b565 102
el17ttds 1:8e319bd14b84 103 while (start == -1) {
el17ttds 3:3d35ab70b565 104
el17ttds 0:7769e2ad5d7a 105 if (pad.check_event(Gamepad::START_PRESSED) == true) {
el17ttds 1:8e319bd14b84 106 start = 1;
el17ttds 0:7769e2ad5d7a 107 } else if(pad.check_event(Gamepad::BACK_PRESSED) == true) {
el17ttds 1:8e319bd14b84 108 start = 0;
el17ttds 0:7769e2ad5d7a 109 }
el17ttds 0:7769e2ad5d7a 110 wait(0.2);
el17ttds 0:7769e2ad5d7a 111 }
el17ttds 3:3d35ab70b565 112
el17ttds 1:8e319bd14b84 113 if (start == 0) {
el17ttds 0:7769e2ad5d7a 114 menu();
el17ttds 1:8e319bd14b84 115 }
el17ttds 1:8e319bd14b84 116 }
el17ttds 1:8e319bd14b84 117
el17ttds 1:8e319bd14b84 118 void begin(string option) {
el17ttds 3:3d35ab70b565 119
el17ttds 1:8e319bd14b84 120 init();
el17ttds 1:8e319bd14b84 121 if (option == "A") {
el17ttds 1:8e319bd14b84 122 play();
el17ttds 1:8e319bd14b84 123 } else if (option == "B") {
el17ttds 1:8e319bd14b84 124 tutorial();
el17ttds 1:8e319bd14b84 125 } else if (option == "X") {
el17ttds 1:8e319bd14b84 126 highscores();
el17ttds 0:7769e2ad5d7a 127 } else {
el17ttds 1:8e319bd14b84 128 credits();
el17ttds 0:7769e2ad5d7a 129 }
el17ttds 0:7769e2ad5d7a 130 }
el17ttds 0:7769e2ad5d7a 131
el17ttds 7:08f78909dda7 132 void play() { // My game loop
el17ttds 7:08f78909dda7 133 lcd.refresh();
el17ttds 7:08f78909dda7 134 wait(0.2);
el17ttds 7:08f78909dda7 135 gameLoop();
el17ttds 7:08f78909dda7 136 }
el17ttds 3:3d35ab70b565 137
el17ttds 7:08f78909dda7 138 void gameLoop() {
el17ttds 7:08f78909dda7 139 while ( (alive == true) || (pad.check_event(Gamepad::START_PRESSED) == false) ) {
el17ttds 7:08f78909dda7 140 lcd.refresh();
el17ttds 7:08f78909dda7 141 engine.read(pad);
el17ttds 7:08f78909dda7 142 alive = engine.write(MAX_SPEED, pad);
el17ttds 7:08f78909dda7 143 engine.render(lcd);
el17ttds 7:08f78909dda7 144 wait(0.1);
el17ttds 7:08f78909dda7 145 }
el17ttds 7:08f78909dda7 146 if (alive) {
el17ttds 7:08f78909dda7 147 while (pad.check_event(Gamepad::START_PRESSED) == false) {
el17ttds 7:08f78909dda7 148 lcd.clear();
el17ttds 7:08f78909dda7 149 lcd.printString(" PAUSED ", 0, 0);
el17ttds 7:08f78909dda7 150 lcd.refresh();
el17ttds 7:08f78909dda7 151 wait(0.5);
el17ttds 7:08f78909dda7 152 lcd.printString("Press Start", 0, 3);
el17ttds 7:08f78909dda7 153 lcd.refresh();
el17ttds 7:08f78909dda7 154 wait(0.2);
el17ttds 7:08f78909dda7 155 lcd.printString("Press Start.", 0, 3);
el17ttds 7:08f78909dda7 156 lcd.refresh();
el17ttds 7:08f78909dda7 157 wait(0.2);
el17ttds 7:08f78909dda7 158 lcd.printString("Press Start .", 0, 3);
el17ttds 7:08f78909dda7 159 lcd.refresh();
el17ttds 7:08f78909dda7 160 wait(0.2);
el17ttds 7:08f78909dda7 161 lcd.printString("Press Start .", 0, 3);
el17ttds 7:08f78909dda7 162 lcd.refresh();
el17ttds 7:08f78909dda7 163 wait(0.2);
el17ttds 2:ee9b361ba6df 164 }
el17ttds 7:08f78909dda7 165 } else {
el17ttds 7:08f78909dda7 166 lcd.clear();
el17ttds 7:08f78909dda7 167 lcd.printString("YOU HELLA DEAD", 0, 0);
el17ttds 7:08f78909dda7 168 }
el17ttds 1:8e319bd14b84 169 }
el17ttds 1:8e319bd14b84 170
el17ttds 1:8e319bd14b84 171 void tutorial() {
el17ttds 3:3d35ab70b565 172
el17ttds 1:8e319bd14b84 173 lcd.printString(" Tutorial!! ",0,0);
el17ttds 1:8e319bd14b84 174 lcd.refresh();
el17ttds 1:8e319bd14b84 175 }
el17ttds 1:8e319bd14b84 176
el17ttds 0:7769e2ad5d7a 177 void highscores() {
el17ttds 3:3d35ab70b565 178
el17ttds 0:7769e2ad5d7a 179 lcd.printString(" Highscores!! ",0,0);
el17ttds 0:7769e2ad5d7a 180 lcd.refresh();
el17ttds 0:7769e2ad5d7a 181 }
el17ttds 0:7769e2ad5d7a 182
el17ttds 0:7769e2ad5d7a 183 void credits() {
el17ttds 3:3d35ab70b565 184
el17ttds 0:7769e2ad5d7a 185 lcd.printString(" Credits!! ",0,0);
el17ttds 0:7769e2ad5d7a 186 lcd.refresh();
el17ttds 4:3446009e2f38 187 }