JianWei Lee
/
project_game
Meteor defense project
main.cpp@39:f92b93efbc72, 2017-04-25 (annotated)
- Committer:
- jasper0712
- Date:
- Tue Apr 25 22:26:14 2017 +0000
- Revision:
- 39:f92b93efbc72
- Parent:
- 38:c66a69c1a6de
- Child:
- 40:3a0c66a0e10e
theres still some small bug to fix on GUI and weapon. not sure if want to put some sounds into the game (might be really troublesome).
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jasper0712 | 0:5fbc0fbc9d30 | 1 | #include "mbed.h" |
jasper0712 | 0:5fbc0fbc9d30 | 2 | #include "N5110.h" |
jasper0712 | 0:5fbc0fbc9d30 | 3 | #include "Gamepad.h" |
jasper0712 | 4:4145abd09075 | 4 | #include "GameEngine.h" |
jasper0712 | 0:5fbc0fbc9d30 | 5 | |
jasper0712 | 0:5fbc0fbc9d30 | 6 | #define PI 3.14159265 |
jasper0712 | 0:5fbc0fbc9d30 | 7 | //Y rows and X columns |
jasper0712 | 1:f5cda0674f24 | 8 | #define Rows 48 |
jasper0712 | 1:f5cda0674f24 | 9 | #define Cols 84 |
jasper0712 | 0:5fbc0fbc9d30 | 10 | |
jasper0712 | 0:5fbc0fbc9d30 | 11 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
jasper0712 | 0:5fbc0fbc9d30 | 12 | Gamepad pad; |
jasper0712 | 4:4145abd09075 | 13 | GameEngine game; |
jasper0712 | 5:c74bbdda06f4 | 14 | |
jasper0712 | 29:6632dd9c48d8 | 15 | int gamefps = 15; |
jasper0712 | 28:450ab72fabdc | 16 | |
jasper0712 | 28:450ab72fabdc | 17 | Ticker waveCompleteTicker; |
jasper0712 | 28:450ab72fabdc | 18 | int setTicker; |
jasper0712 | 28:450ab72fabdc | 19 | int waveComplete_flag; |
jasper0712 | 28:450ab72fabdc | 20 | int waveNumber; |
jasper0712 | 32:580d74825810 | 21 | int menu; |
jasper0712 | 28:450ab72fabdc | 22 | |
jasper0712 | 32:580d74825810 | 23 | char wave[10]; |
jasper0712 | 28:450ab72fabdc | 24 | |
jasper0712 | 0:5fbc0fbc9d30 | 25 | void init(); |
jasper0712 | 0:5fbc0fbc9d30 | 26 | void render(); |
jasper0712 | 32:580d74825810 | 27 | void waveComplete_isr(); |
jasper0712 | 32:580d74825810 | 28 | void gameMenu(); |
jasper0712 | 37:45da88e36d1d | 29 | void startGame(); |
jasper0712 | 37:45da88e36d1d | 30 | void gameUpgrades(); |
jasper0712 | 28:450ab72fabdc | 31 | |
jasper0712 | 0:5fbc0fbc9d30 | 32 | int main() |
jasper0712 | 0:5fbc0fbc9d30 | 33 | { |
jasper0712 | 32:580d74825810 | 34 | init(); |
jasper0712 | 32:580d74825810 | 35 | gameMenu(); |
jasper0712 | 28:450ab72fabdc | 36 | setTicker = 1; //set the ticker. |
jasper0712 | 0:5fbc0fbc9d30 | 37 | while (true) { |
jasper0712 | 37:45da88e36d1d | 38 | if (setTicker == 1) { |
jasper0712 | 37:45da88e36d1d | 39 | startGame(); |
jasper0712 | 28:450ab72fabdc | 40 | } |
jasper0712 | 29:6632dd9c48d8 | 41 | |
jasper0712 | 37:45da88e36d1d | 42 | //this is the game |
jasper0712 | 37:45da88e36d1d | 43 | game.update(pad, lcd); |
jasper0712 | 29:6632dd9c48d8 | 44 | |
jasper0712 | 32:580d74825810 | 45 | while(waveComplete_flag == 1) { //after every wave, go to upgrades |
jasper0712 | 37:45da88e36d1d | 46 | gameUpgrades(); |
jasper0712 | 28:450ab72fabdc | 47 | } |
jasper0712 | 0:5fbc0fbc9d30 | 48 | render(); |
jasper0712 | 0:5fbc0fbc9d30 | 49 | } |
jasper0712 | 0:5fbc0fbc9d30 | 50 | } |
jasper0712 | 0:5fbc0fbc9d30 | 51 | |
jasper0712 | 28:450ab72fabdc | 52 | void init() { |
jasper0712 | 0:5fbc0fbc9d30 | 53 | // need to initialise LCD and Gamepad |
jasper0712 | 0:5fbc0fbc9d30 | 54 | lcd.init(); |
jasper0712 | 0:5fbc0fbc9d30 | 55 | pad.init(); |
jasper0712 | 32:580d74825810 | 56 | game.init(waveNumber); |
jasper0712 | 0:5fbc0fbc9d30 | 57 | // initialise the game |
jasper0712 | 0:5fbc0fbc9d30 | 58 | } |
jasper0712 | 28:450ab72fabdc | 59 | void render() { |
jasper0712 | 0:5fbc0fbc9d30 | 60 | // clear screen, re-draw and refresh |
jasper0712 | 0:5fbc0fbc9d30 | 61 | lcd.refresh(); |
jasper0712 | 0:5fbc0fbc9d30 | 62 | wait(1.0/gamefps); |
jasper0712 | 0:5fbc0fbc9d30 | 63 | lcd.clear(); |
jasper0712 | 28:450ab72fabdc | 64 | } |
jasper0712 | 37:45da88e36d1d | 65 | void startGame() { |
jasper0712 | 37:45da88e36d1d | 66 | sprintf(wave, "wave %d", waveNumber + 1); //+1 because initially waveNumber = 0 |
jasper0712 | 37:45da88e36d1d | 67 | lcd.printString(wave,10,3); |
jasper0712 | 37:45da88e36d1d | 68 | render(); |
jasper0712 | 37:45da88e36d1d | 69 | wait(2.0); |
jasper0712 | 37:45da88e36d1d | 70 | game.init(waveNumber); |
jasper0712 | 39:f92b93efbc72 | 71 | waveCompleteTicker.attach(&waveComplete_isr,60); //60 seconds for a wave. |
jasper0712 | 37:45da88e36d1d | 72 | setTicker = 0; //clear set ticker flag |
jasper0712 | 37:45da88e36d1d | 73 | } |
jasper0712 | 37:45da88e36d1d | 74 | void gameUpgrades() { |
jasper0712 | 37:45da88e36d1d | 75 | waveCompleteTicker.detach(); |
jasper0712 | 37:45da88e36d1d | 76 | lcd.printString("Wave complete",1,3); |
jasper0712 | 37:45da88e36d1d | 77 | lcd.printString("Start to Upgrade",1,5); |
jasper0712 | 37:45da88e36d1d | 78 | render(); |
jasper0712 | 37:45da88e36d1d | 79 | game.weapUpgrade(pad, lcd); |
jasper0712 | 37:45da88e36d1d | 80 | |
jasper0712 | 37:45da88e36d1d | 81 | if (game.doneUpgrade_flag == 1) { |
jasper0712 | 37:45da88e36d1d | 82 | waveComplete_flag = 0; //get out of while loop |
jasper0712 | 37:45da88e36d1d | 83 | setTicker = 1; //continue the game |
jasper0712 | 37:45da88e36d1d | 84 | game.doneUpgrade_flag = 0; |
jasper0712 | 37:45da88e36d1d | 85 | printf("i got out"); |
jasper0712 | 37:45da88e36d1d | 86 | } |
jasper0712 | 37:45da88e36d1d | 87 | } |
jasper0712 | 28:450ab72fabdc | 88 | void waveComplete_isr() { |
jasper0712 | 28:450ab72fabdc | 89 | waveComplete_flag = 1; |
jasper0712 | 28:450ab72fabdc | 90 | waveNumber += 1; |
jasper0712 | 32:580d74825810 | 91 | } |
jasper0712 | 32:580d74825810 | 92 | void gameMenu() { |
jasper0712 | 32:580d74825810 | 93 | |
jasper0712 | 32:580d74825810 | 94 | while ( pad.check_event(Gamepad::START_PRESSED) == false) { |
jasper0712 | 32:580d74825810 | 95 | game.startingMenu(pad, lcd); |
jasper0712 | 32:580d74825810 | 96 | lcd.refresh(); |
jasper0712 | 32:580d74825810 | 97 | wait(0.2); |
jasper0712 | 32:580d74825810 | 98 | } |
jasper0712 | 32:580d74825810 | 99 | lcd.clear(); |
jasper0712 | 0:5fbc0fbc9d30 | 100 | } |