Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- el17ttds
- Date:
- 2019-05-11
- Revision:
- 8:d1c04f0e4890
- Parent:
- 7:08f78909dda7
- Child:
- 9:3a0194c87afe
File content as of revision 8:d1c04f0e4890:
#include "main.h"
/*
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
Name: Thomas Foster
Username: el17ttds
Student ID Number: 201096550
Date: 11 / 05 / 2019
*/
/////////////// objects ///////////////
N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
Gamepad pad;
Engine engine;
int main() {
init();
welcome();
string option = menu();
begin(option);
lcd.printString(" END",0,5);
lcd.refresh();
}
void init() {
health = 3;
score = 0;
// initialise display and peripherals
lcd.init();
pad.init();
// initialise any in game functions (e.g: sprites)
engine.init(MAP_WIDTH,MAP_HEIGHT,SCREEN_WIDTH,SCREEN_HEIGHT);
}
void welcome() {
// Draw coin
// wait
// Draw protagonist
// wait
// draw enemies
// wait
lcd.printString(" GAME! ",0,0);
lcd.refresh();
wait(1.0);
lcd.printString("By Thomas",0,2);
lcd.printString("Foster",0,3);
lcd.refresh();
wait(2.0);
while (pad.check_event(Gamepad::START_PRESSED) == false) {
lcd.printString("Press Start ",0,5);
lcd.refresh();
wait(0.2);
lcd.printString("Press Start. ",0,5);
lcd.refresh();
wait(0.2);
lcd.printString("Press Start.. ",0,5);
lcd.refresh();
wait(0.2);
lcd.printString("Press Start... ",0,5);
wait(0.2);
}
}
string menu() {
string option = "0";
lcd.init();
while(option == "0") {
lcd.printString("A - Play Now",0,1);
lcd.printString("B - Tutorial",0,2);
lcd.printString("X - Highscores",0,3);
lcd.printString("Y - Credits",0,4);
lcd.refresh();
if (pad.check_event(Gamepad::A_PRESSED) == true) {
option = "A";
} else if (pad.check_event(Gamepad::B_PRESSED) == true) {
option = "B";
} else if (pad.check_event(Gamepad::X_PRESSED) == true) {
option = "X";
} else if (pad.check_event(Gamepad::Y_PRESSED) == true) {
option = "Y";
}
wait(0.2);
}
if (option == "A") {
init();
lcd.printString(" Play game? ",0,0);
ask(option);
} else if (option == "B") {
init();
lcd.printString("Play tutorial?",0,0);
ask(option);
}
return option;
}
void ask(string option) {
int start = -1;
lcd.printString("Are you sure?",0,3);
lcd.printString("Back? Start?",0,5);
lcd.refresh();
while (start == -1) {
if (pad.check_event(Gamepad::START_PRESSED) == true) {
start = 1;
} else if(pad.check_event(Gamepad::BACK_PRESSED) == true) {
start = 0;
}
wait(0.2);
}
if (start == 0) {
menu();
}
}
void begin(string option) {
init();
if (option == "A") {
play();
} else if (option == "B") {
tutorial();
} else if (option == "X") {
highscores();
} else {
credits();
}
}
void play() { // My game loop
lcd.refresh();
wait(0.2);
gameLoop();
}
void gameLoop() {
while ( (health > 0) && (pad.check_event(Gamepad::START_PRESSED) == false) ) {
lcd.refresh();
engine.read(pad);
engine.write(MAX_SPEED, pad, lcd);
engine.render(lcd);
health = engine.get_health();
score = engine.get_score();
wait(0.1);
}
wait(0.2);
if (health > 0) {
while (pad.check_event(Gamepad::A_PRESSED) == false) {
lcd.clear();
lcd.printString(" PAUSED ", 0, 0);
//lcd.printString("SCORE = ", 0, 1);
//lcd.printString(score, 60, 1);
lcd.refresh();
wait(0.5);
lcd.printString("Press A", 0, 3);
lcd.refresh();
wait(0.5);
}
gameLoop();
} else {
lcd.clear();
lcd.printString("YOU HELLA DEAD", 0, 0);
}
}
void tutorial() {
lcd.printString(" Tutorial!! ",0,0);
lcd.refresh();
}
void highscores() {
lcd.printString(" Highscores!! ",0,0);
lcd.refresh();
}
void credits() {
lcd.printString(" Credits!! ",0,0);
lcd.refresh();
}