Final Commit
Dependencies: mbed
main.cpp
- Committer:
- JRM1986
- Date:
- 2018-05-08
- Revision:
- 27:bd0f69a75d8b
- Parent:
- 26:23301f48c1ed
File content as of revision 27:bd0f69a75d8b:
#include "mbed.h"
#include "Gamepad.h"
#include "N5110.h"
#include "SnakeEngine.h"
#define FOOD_X 20
#define FOOD_Y 20
#define SNAKE_P_X 42
#define SNAKE_P_Y 24
#define IN E
#define CUR E
#define SPAWN_TIME 200
#ifndef WITH_TESTING
#include "tests.h"
//#endif
struct UserInput
{
Direction d;
};
/*
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
Name: Joshua Robert Marshall
Username: ll13jrm
Student ID Number: 200764543
Date: 28/02/2018
*/
// ----- Objects -----
SnakeEngine snake_engine;
Gamepad pad;
Snake snake;
N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
//Testing test1;
// ----- Prototypes -----
void init();
void update_game(UserInput input);
void render();
void start_screen();
int main() {
//#ifdef WITH_TESTING
int number_of_failures = run_tests();
if(number_of_failures > 0) return number_of_failures;
#endif
init();
start_screen();
render();
wait(0.2);
while(1) {
snake_engine.get_input(pad);
snake_engine.update(pad);
render();
wait(0.15);
}
}
// initialies all classes and libraries
void init()
{
// need to initialise LCD and Gamepad
lcd.init();
pad.init();
// initialise the game with food, snake...
snake_engine.init(IN, CUR, SNAKE_P_X, SNAKE_P_Y, SPAWN_TIME);
}
// this function draws each frame on the LCD
void render()
{
// clear screen, re-draw and refresh
lcd.clear();
snake_engine.draw(lcd);
lcd.refresh();
}
void start_screen()
{
int i = 0;
lcd.setContrast(0.5);
for(i = 0; i <= 4; ++i) {
lcd.printString(" NOTENDO ", 0,i);
lcd.refresh();
wait(0.3);
lcd.clear();
if(i == 4) {
lcd.printString(" NOTENDO ", 0,5);
lcd.refresh();
pad.tone(0,1.75);
wait(1.5);
lcd.clear();
}
}
while ( pad.check_event(Gamepad::START_PRESSED) == false ) {
lcd.printString(" Welcome ", 0, 1);
lcd.printString(" Press Start ", 0, 3);
lcd.refresh();
}
}