A retro gaming programme, designed for use on a portable embedded system. Incorporates power saving techniques.
Dependencies: ConfigFile N5110 PowerControl beep mbed
main.cpp@14:c2c969e1c6e8, 2015-04-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |