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:
- Kern_EL17KJTF
- Date:
- 2019-05-05
- Revision:
- 2:6baf849b0270
- Parent:
- 1:7a0917df015a
- Child:
- 3:b248dc1f3e8d
File content as of revision 2:6baf849b0270:
/*
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
Name: Kern Fowler
Username: el17kjtf
Student ID Number: 201116686
Date: 19/02/2019
Version: 1.2
*/
#include "main.h"
int fps = 24;
int direction;
int option_pos = 0;
int arrow_pos = 0;
int main() {
init(); // initialise peripherals
welcome(); // display welcome message
while(1) { // infinite loop
arrow_location();
print_menu(); // this re-prints the menu at the start of every loop
arrow_select();
wait_ms(1.0f/fps);
}
}
void init() {
// initialise LCD
lcd.init();
// initialise Gamepad
pad.init();
wait(2.5);
}
void arrow_location() {
direction = pad.get_direction();
if (direction == N) {
option_pos = option_pos - 1;
// printf("North Pressed");
wait_ms(250);
}
if (direction == S) {
option_pos = option_pos + 1;
// printf("South Pressed");
wait_ms(250);
}
if (option_pos > 3) {
option_pos = 0;
}
if (option_pos < 0) {
option_pos = 3;
}
arrow_pos = 16 + (option_pos * 8);
// printf("Option Num = %d", option_pos)
}
void arrow_select() {
if (pad.check_event(Gamepad::A_PRESSED) == true) {
if (option_pos == 0) {
// printf("GameEngine");
game_engine_run();
}
if (option_pos == 1) {
// printf("Controls");
controls_run();
}
if (option_pos == 2) {
// printf("Instructions");
instructions_run();
}
if (option_pos == 3) {
// printf("Options");
options_run();
}
}
}
void print_menu() {
lcd.clear();
lcd.printString("Main Menu",18,0);
lcd.printString("Start Game",8,2);
lcd.printString("Controls",8,3);
lcd.printString("Instructions",8,4);
lcd.printString("Options",8,5);
lcd.drawSprite(0,arrow_pos,7,7,(int *)menu_arrow);
lcd.refresh();
}
void welcome() {
lcd.clear();
lcd.drawSprite(24,0,36,34,(int *)menu_dk_face);
lcd.printString(" Donkey Kong",0,5);
lcd.refresh();
wait(1.0); //edit back to longer
lcd.clear();
lcd.printString(" Created",0,0);
lcd.printString(" By",0,1);
lcd.printString(" Kern Fowler",0,3);
lcd.printString(" 201116686",0,4);
lcd.refresh();
wait(1.0);
}
void game_engine_run() {
wait_ms(250);
while (pad.check_event(Gamepad::BACK_PRESSED) == false) {
//printf("Game State");
lcd.clear();
lcd.printString(" Game",0,0);
lcd.refresh();
wait_ms(1.0f/fps);
}
}
void controls_run() {
wait_ms(250);
while (pad.check_event(Gamepad::BACK_PRESSED) == false) {
//printf("Control State");
lcd.clear();
lcd.printString(" Controls",0,0);
lcd.refresh();
wait_ms(1.0f/fps);
}
}
void instructions_run() {
wait_ms(250);
while (pad.check_event(Gamepad::BACK_PRESSED) == false) {
//printf("Instructions State");
lcd.clear();
lcd.printString(" Instructions",0,0);
lcd.refresh();
wait_ms(1.0f/fps);
}
}
void options_run() {
wait_ms(250);
while (pad.check_event(Gamepad::BACK_PRESSED) == false) {
//printf("Options State");
lcd.clear();
lcd.printString(" Options",0,0);
lcd.refresh();
wait_ms(1.0f/fps);
}
}