A retro gaming programme, designed for use on a portable embedded system. Incorporates power saving techniques.

Dependencies:   ConfigFile N5110 PowerControl beep mbed

Committer:
el13drt
Date:
Fri Apr 17 16:12:40 2015 +0000
Revision:
14:c2c969e1c6e8
Parent:
13:a1b3a373c5a4
Child:
15:ff3eb0091453
pre sleep

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el13drt 0:a8bc3aac5f69 1 /**
el13drt 0:a8bc3aac5f69 2 @file main.cpp
el13drt 0:a8bc3aac5f69 3 @brief Program implementation
el13drt 0:a8bc3aac5f69 4 */
el13drt 0:a8bc3aac5f69 5
el13drt 0:a8bc3aac5f69 6 #include "mbed.h"
el13drt 0:a8bc3aac5f69 7 #include "N5110.h"
el13drt 10:947d35365ab8 8 #include "beep.h"
el13drt 12:eedda6554615 9 #include "tower.h"
el13drt 14:c2c969e1c6e8 10 #include "PowerControl/PowerControl.h"
el13drt 0:a8bc3aac5f69 11
el13drt 0:a8bc3aac5f69 12 #include <ctime>
el13drt 0:a8bc3aac5f69 13 #include <cstdlib>
el13drt 0:a8bc3aac5f69 14
el13drt 14:c2c969e1c6e8 15 Ticker timer;//timer to read state of buttons every 0.25 seconds
el13drt 14:c2c969e1c6e8 16
el13drt 14:c2c969e1c6e8 17 int buttonFlagA;
el13drt 14:c2c969e1c6e8 18 int buttonFlagB;
el13drt 14:c2c969e1c6e8 19
el13drt 14:c2c969e1c6e8 20 void timerExpiredA()
el13drt 14:c2c969e1c6e8 21 {
el13drt 14:c2c969e1c6e8 22 if(buttonA != 0) {
el13drt 14:c2c969e1c6e8 23 buttonFlagA = 1;
el13drt 14:c2c969e1c6e8 24 actionButtons();
el13drt 14:c2c969e1c6e8 25 }
el13drt 14:c2c969e1c6e8 26 }
el13drt 14:c2c969e1c6e8 27
el13drt 14:c2c969e1c6e8 28 void timerExpiredB()
el13drt 14:c2c969e1c6e8 29 {
el13drt 14:c2c969e1c6e8 30 if(buttonB != 0) {
el13drt 14:c2c969e1c6e8 31 buttonFlagB = 1;
el13drt 14:c2c969e1c6e8 32 actionButtons();
el13drt 14:c2c969e1c6e8 33 }
el13drt 14:c2c969e1c6e8 34 }
el13drt 14:c2c969e1c6e8 35
el13drt 14:c2c969e1c6e8 36
el13drt 0:a8bc3aac5f69 37 int main()
el13drt 0:a8bc3aac5f69 38 {
el13drt 11:6b8416a8ddb3 39 ledR = 1;//power LED on
el13drt 14:c2c969e1c6e8 40 randomise();//randomises falling hazards (initial values only)
el13drt 7:217810c90306 41 calibrateJoystick();//get centred values of joystick
el13drt 7:217810c90306 42 pollJoystick.attach(&updateJoystick,1.0/10.0);//read joystick 10 times per second
el13drt 6:fa2928bcec17 43
el13drt 0:a8bc3aac5f69 44 lcd.init();//initialise screen
el13drt 0:a8bc3aac5f69 45 welcome();//welcome screen
el13drt 0:a8bc3aac5f69 46 lcd.clear();//clear pixels
el13drt 0:a8bc3aac5f69 47
el13drt 12:eedda6554615 48 int exitFlag = 0;//exit flag
el13drt 5:a0e4a67266d6 49 int mainOption = 0;//counter for main menu
el13drt 5:a0e4a67266d6 50 int exitOption = 0;//counter for exit menu
el13drt 14:c2c969e1c6e8 51
el13drt 14:c2c969e1c6e8 52 timer.attach(&timerExpired, 0.25);//checks state of buttons
el13drt 14:c2c969e1c6e8 53
el13drt 1:352c50e88ffa 54 while(1) {
el13drt 11:6b8416a8ddb3 55 drawMainMenu();//draws main menu
el13drt 11:6b8416a8ddb3 56 mainMenu(mainOption);//presents main menu options
el13drt 4:c6305031f80d 57
el13drt 11:6b8416a8ddb3 58 // if 'Play Game' selected
el13drt 5:a0e4a67266d6 59 if ((mainOption == 0)&&(buttonA == 1)) {
el13drt 12:eedda6554615 60 game(exitFlag, exitOption);//actual game
el13drt 12:eedda6554615 61 }
el13drt 12:eedda6554615 62 // if 'Scores' selected
el13drt 12:eedda6554615 63 if((mainOption == 1)&&(buttonA == 1)) {
el13drt 12:eedda6554615 64 scores();
el13drt 5:a0e4a67266d6 65 }
el13drt 12:eedda6554615 66 // if 'option' selected
el13drt 5:a0e4a67266d6 67 if((mainOption == 2)&&(buttonA == 1)) {
el13drt 14:c2c969e1c6e8 68 optionsMenu();
el13drt 1:352c50e88ffa 69 }
el13drt 0:a8bc3aac5f69 70 }
el13drt 3:57bab3b1c974 71 }