A complex 2D-dungeon game on LPC1768 in SWJTU-Leeds Joint School XJEL2645 project. Referenced from the framework contributed by https://os.mbed.com/users/Siriagus/code/SimplePlatformGame/
Dependencies: mbed N5110 ShiftReg PinDetect
main.cpp
- Committer:
- Siriagus
- Date:
- 2015-05-02
- Revision:
- 8:9ac6a428fa26
- Parent:
- 7:678873947b29
- Child:
- 10:f2488a0ecab7
File content as of revision 8:9ac6a428fa26:
/** @brief Simple platform game developed for ELEC2645 Embedded Systems Project at University of Leeds @author Andreas Garmannslund **/ #include "mbed.h" #include "N5110.h" #include "PowerControl.h" #include "PinDetect.h" #include <string> #include <sstream> #include <ctime> #include "Joystick.h" #include "StateManager.h" #include "State.h" #include "images.h" #include "InputManager.h" // Redefine pin names for simple access. #define JOY_H p17 #define JOY_V p16 #define JOY_BTN p15 #define LED_POT p20 #define BUTTON_A p28 #define BUTTON_B p27 #define BUTTON_C p29 // Input and Output N5110 *lcd; // VCC, SCE, RST, D/C, MOSI, SCLK and LED InputManager *input; // Brightness potentiometer AnalogIn ledPot(LED_POT); // Debugging BusOut leds(LED1, LED2, LED3, LED4); // @brief Clears the screen and fill it with the image in the argument. void clearAndDrawImage(const int img[BANKS][WIDTH]) { for (int i = 0; i < BANKS; ++i) { for (int j = 0; j < WIDTH; ++j) { lcd->buffer[j][i] = img[i][j]; } } lcd->refresh(); } // States void init(); void cleanUp(); StateManager* fsm; int main() { init(); Timer timer; timer.start(); while(true) { // We need to call Sleep() repeatedly, because periodic interrupts in InputManager will cause it to wake up every 20 ms. while (timer.read() < 0.08) Sleep(); // update lcd->setBrightness(1.0 - ledPot); // Update brightness of screen fsm->update(timer.read()); input->joystick->update(); // render lcd->clear(); fsm->render(); lcd->refresh(); fsm->processRequest(); // Change the state if requested. timer.reset(); } cleanUp(); return 0; } void init() { // Init LCD lcd = new N5110(p7, p8, p9, p10, p11, p13, p26); lcd->init(); lcd->normalMode(); lcd->setBrightness(1.0 - ledPot); // Update brightness of screen // Input input = new InputManager(BUTTON_A, BUTTON_B, BUTTON_C, JOY_H, JOY_V, JOY_BTN); fsm = new StateManager(lcd, input, TITLE_SCREEN); } void cleanUp() { delete lcd; delete input; }