JianWei Lee
/
project_game
Meteor defense project
GameEngine/GameEngine.cpp@28:450ab72fabdc, 2017-04-17 (annotated)
- Committer:
- jasper0712
- Date:
- Mon Apr 17 18:22:16 2017 +0000
- Revision:
- 28:450ab72fabdc
- Parent:
- 27:d4926f19c12a
- Child:
- 29:6632dd9c48d8
now trying to connect wu and weapon
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jasper0712 | 4:4145abd09075 | 1 | #include "GameEngine.h" |
jasper0712 | 4:4145abd09075 | 2 | |
jasper0712 | 4:4145abd09075 | 3 | GameEngine::GameEngine() |
jasper0712 | 4:4145abd09075 | 4 | { |
jasper0712 | 4:4145abd09075 | 5 | |
jasper0712 | 4:4145abd09075 | 6 | } |
jasper0712 | 4:4145abd09075 | 7 | |
jasper0712 | 4:4145abd09075 | 8 | GameEngine::~GameEngine() |
jasper0712 | 4:4145abd09075 | 9 | { |
jasper0712 | 4:4145abd09075 | 10 | |
jasper0712 | 4:4145abd09075 | 11 | } |
jasper0712 | 17:53aedd20155a | 12 | void GameEngine::init() { |
jasper0712 | 26:140515d80457 | 13 | _d1.droneInit(20, 46, 0, 42); //drone1 is taking left side pixel 0 to 42. |
jasper0712 | 26:140515d80457 | 14 | _d2.droneInit(62, 46, 42, 84); //drone2 is taking right side pixel 42 to 84; |
jasper0712 | 18:d82059ce929b | 15 | weap.init(); |
jasper0712 | 18:d82059ce929b | 16 | spa.init(); |
jasper0712 | 19:7ccbb19703f9 | 17 | //printf("init completed \n"); |
jasper0712 | 17:53aedd20155a | 18 | } |
jasper0712 | 17:53aedd20155a | 19 | void GameEngine::update(Gamepad &pad, N5110 &lcd) { |
jasper0712 | 27:d4926f19c12a | 20 | _d1.droneScan(Array2, charArray2, lcd); |
jasper0712 | 27:d4926f19c12a | 21 | _d2.droneScan(Array2, charArray2, lcd); |
jasper0712 | 17:53aedd20155a | 22 | drawSpawn(lcd); |
jasper0712 | 17:53aedd20155a | 23 | drawLaserPlayer(pad, lcd); |
jasper0712 | 17:53aedd20155a | 24 | bombAndShield(pad, lcd); |
jasper0712 | 17:53aedd20155a | 25 | } |
jasper0712 | 28:450ab72fabdc | 26 | void GameEngine::weapUpgrade(Gamepad &pad, N5110 &lcd) { |
jasper0712 | 28:450ab72fabdc | 27 | if (pad.check_event(Gamepad::START_PRESSED)) { |
jasper0712 | 28:450ab72fabdc | 28 | wu.upgrading = 1; |
jasper0712 | 28:450ab72fabdc | 29 | while (wu.upgrading == 1) { |
jasper0712 | 28:450ab72fabdc | 30 | wu.main_Upgrades(pad, lcd); |
jasper0712 | 28:450ab72fabdc | 31 | if (wu.saveTheData == 1) { |
jasper0712 | 28:450ab72fabdc | 32 | Data _upgrades = wu.savedata(); //saving data |
jasper0712 | 28:450ab72fabdc | 33 | wu.testingtest(_upgrades); //code used to test the struct |
jasper0712 | 28:450ab72fabdc | 34 | printf("TESTING up = %d, up1 = %d, u1p = %d, u1p1 = %d \n",_upgrades.up,_upgrades.up1,_upgrades.u1p,_upgrades.u1p1); |
jasper0712 | 28:450ab72fabdc | 35 | wu.saveTheData = 0; |
jasper0712 | 28:450ab72fabdc | 36 | wu.upgrading = 0; //get out of while loop after done upgrading |
jasper0712 | 28:450ab72fabdc | 37 | } |
jasper0712 | 28:450ab72fabdc | 38 | lcd.refresh(); |
jasper0712 | 28:450ab72fabdc | 39 | wait(0.3); |
jasper0712 | 28:450ab72fabdc | 40 | lcd.clear(); |
jasper0712 | 28:450ab72fabdc | 41 | } |
jasper0712 | 28:450ab72fabdc | 42 | done = 1; |
jasper0712 | 28:450ab72fabdc | 43 | //remember to re-initialise everything after a wave. |
jasper0712 | 28:450ab72fabdc | 44 | } |
jasper0712 | 28:450ab72fabdc | 45 | } |
jasper0712 | 4:4145abd09075 | 46 | void GameEngine::drawSpawn(N5110 &lcd){ |
jasper0712 | 26:140515d80457 | 47 | updateArray(); //clean up & update the array after the spawn took damage. |
jasper0712 | 22:2e75b50b26f0 | 48 | if (drawit == 0) { //DONT FORGET TO CHANGE THIS TO TICKER. MORE EFFICIENT. |
jasper0712 | 19:7ccbb19703f9 | 49 | drawit = 30; |
jasper0712 | 20:32f115462bbc | 50 | spa.randomizeSpawn(Array, charArray); |
jasper0712 | 20:32f115462bbc | 51 | spa.moveSpawnABC(Array, Array2, charArray, charArray2); |
jasper0712 | 24:d6187d39f09b | 52 | spa.moveSpawnDE(Array, Array2, charArray, charArray2); |
jasper0712 | 4:4145abd09075 | 53 | } else { |
jasper0712 | 19:7ccbb19703f9 | 54 | drawit -= 0.5; |
jasper0712 | 24:d6187d39f09b | 55 | spa.moveSpawnDE(Array, Array2, charArray, charArray2); |
jasper0712 | 20:32f115462bbc | 56 | spa.moveSpawnB(Array, Array2, charArray, charArray2); |
jasper0712 | 19:7ccbb19703f9 | 57 | //printf("moving spawn b \n"); |
jasper0712 | 4:4145abd09075 | 58 | } |
jasper0712 | 20:32f115462bbc | 59 | spa.updateSpawn(Array, Array2, charArray, charArray2, lcd); |
jasper0712 | 14:064b8d7f348d | 60 | //checkGameRule(lcd); |
jasper0712 | 4:4145abd09075 | 61 | } |
jasper0712 | 5:c74bbdda06f4 | 62 | void GameEngine::drawLaserPlayer(Gamepad &pad, N5110 &lcd) { |
jasper0712 | 19:7ccbb19703f9 | 63 | weap.drawPlayer(pad, lcd); |
jasper0712 | 9:4c4d787c7a8b | 64 | //draw a line for the laser when button is pressed |
jasper0712 | 10:926b1f89c4f1 | 65 | if (pad.buttonhold_A == 1) { |
jasper0712 | 7:3be4369131c6 | 66 | //printf("hi, button is working \n"); |
jasper0712 | 5:c74bbdda06f4 | 67 | weap.weaponMath(pad); |
jasper0712 | 20:32f115462bbc | 68 | weap.drawLaser(Array2, charArray2, lcd); |
jasper0712 | 5:c74bbdda06f4 | 69 | } |
jasper0712 | 5:c74bbdda06f4 | 70 | } |
jasper0712 | 10:926b1f89c4f1 | 71 | void GameEngine::checkGameRule(N5110 &lcd) { |
jasper0712 | 9:4c4d787c7a8b | 72 | //the only way to lose is when the spawn reaches y = 46. |
jasper0712 | 10:926b1f89c4f1 | 73 | for ( int x = 0; x < 84; x ++) { |
jasper0712 | 20:32f115462bbc | 74 | if (Array[x][46] > 0) { |
jasper0712 | 10:926b1f89c4f1 | 75 | while (1) { |
jasper0712 | 10:926b1f89c4f1 | 76 | lcd.clear(); |
jasper0712 | 10:926b1f89c4f1 | 77 | lcd.printString("Game Over",10,3); |
jasper0712 | 10:926b1f89c4f1 | 78 | lcd.refresh(); |
jasper0712 | 10:926b1f89c4f1 | 79 | wait(1.0); |
jasper0712 | 10:926b1f89c4f1 | 80 | } |
jasper0712 | 10:926b1f89c4f1 | 81 | } |
jasper0712 | 10:926b1f89c4f1 | 82 | } |
jasper0712 | 5:c74bbdda06f4 | 83 | } |
jasper0712 | 17:53aedd20155a | 84 | void GameEngine::bombAndShield(Gamepad &pad, N5110 &lcd) { |
jasper0712 | 21:e5585569a938 | 85 | weap.bombCooldown(Array2, pad, lcd); |
jasper0712 | 14:064b8d7f348d | 86 | if (pad.check_event(Gamepad::X_PRESSED)) { |
jasper0712 | 28:450ab72fabdc | 87 | //to prevent from detonating the bomb at instant when button X is ay1identally pressed |
jasper0712 | 14:064b8d7f348d | 88 | } |
jasper0712 | 19:7ccbb19703f9 | 89 | if (pad.buttonhold_B == 1) { //if B pressed, generate shield. Shield doesnt have to be fully charged to be activated |
jasper0712 | 15:c68a5c22a2a2 | 90 | if (weap._shield > 0) { //shield will only activate if the shield has not depleted. |
jasper0712 | 20:32f115462bbc | 91 | weap.energyShield(Array, Array2, charArray, charArray2, lcd); |
jasper0712 | 15:c68a5c22a2a2 | 92 | } else { //or else, deactivate the shield and recharge the shield. |
jasper0712 | 15:c68a5c22a2a2 | 93 | pad.buttonhold_B = 0; |
jasper0712 | 15:c68a5c22a2a2 | 94 | } |
jasper0712 | 15:c68a5c22a2a2 | 95 | } |
jasper0712 | 15:c68a5c22a2a2 | 96 | if (pad.buttonhold_B == 0) { // recharge shield |
jasper0712 | 15:c68a5c22a2a2 | 97 | if (weap._shield < weap._shieldCapacity ) { |
jasper0712 | 15:c68a5c22a2a2 | 98 | weap._shield = weap._shield + weap._shieldRegenRate; |
jasper0712 | 15:c68a5c22a2a2 | 99 | //printf("current shield = %d \n",weap._shield); |
jasper0712 | 16:ddc4d5669a6e | 100 | //printf("shield regen rate = %d \n",weap._shieldRegenRate); |
jasper0712 | 19:7ccbb19703f9 | 101 | } else { //when the shield is fully charged. It will automatically activate the shield. |
jasper0712 | 27:d4926f19c12a | 102 | pad.buttonhold_B = 1; |
jasper0712 | 19:7ccbb19703f9 | 103 | } |
jasper0712 | 14:064b8d7f348d | 104 | } |
jasper0712 | 26:140515d80457 | 105 | weap.shieldMeter(lcd); |
jasper0712 | 26:140515d80457 | 106 | } |
jasper0712 | 26:140515d80457 | 107 | void GameEngine::updateArray() { //clean up tool |
jasper0712 | 26:140515d80457 | 108 | for (int x = 0; x < Cols; x++) { |
jasper0712 | 26:140515d80457 | 109 | for (int y = 0; y < Rows; y++) { |
jasper0712 | 26:140515d80457 | 110 | Array[x][y] = Array2[x][y]; |
jasper0712 | 26:140515d80457 | 111 | //printf(" Array[%d][%d] = %d \n",x,y,Array2[x][y]); |
jasper0712 | 26:140515d80457 | 112 | spa.deleteChar(x, y, Array, charArray2); |
jasper0712 | 26:140515d80457 | 113 | } |
jasper0712 | 26:140515d80457 | 114 | } |
jasper0712 | 10:926b1f89c4f1 | 115 | } |