SharpShooter
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player
Diff: MainGame.cpp
- Revision:
- 12:2f358065ba3f
- Parent:
- 11:55b65415b6ba
- Child:
- 13:67e79a582164
--- a/MainGame.cpp Fri Oct 28 20:07:38 2016 +0000 +++ b/MainGame.cpp Sat Oct 29 00:18:10 2016 +0000 @@ -14,6 +14,10 @@ DigitalOut myled3(LED3); DigitalOut myled4(LED4); +InterruptIn center(p25); +InterruptIn left(p26); +InterruptIn right(p28); + ///sd/wavfiles/def_swar.wav /*INSTANTIATION*/ @@ -22,15 +26,23 @@ SDFileSystem sd(p5, p6, p7, p8, "sd"); AnalogOut DACout(p18); wave_player waver(&DACout); +Shooter player1; +Bullet bullet; +bool isBullet; +Mutex mutex; /*STRUCT INITIALIZATION*/ +/* struct ObstLocation { int x1, y1, x2, y2; }; +*/ struct TargetLocation { int x,y,r; }; + + /* struct BulletLocation { int x, topY, bottomY; @@ -41,13 +53,16 @@ int levelNum; BulletLocation bulletLocation; ObstLocation * obstaclePtr; +Obstacle obsArr[3]; TargetLocation * targetsPtr = new TargetLocation[3]; +bool play = 0; void startGame() { - uLCD.locate(34,34); - uLCD.set_font_size(4, 4); + uLCD.background_color(BACKGROUND); + uLCD.locate(0,0); + //uLCD.set_font_size(44, 44); uLCD.printf("\nSharp Shooter!!\n"); wait(0.1); @@ -55,48 +70,96 @@ wave_file=fopen("/sd/wavfiles/pitfall.wav","r"); waver.play(wave_file); fclose(wave_file); -} - -void initializeLevel(int level) { - levelNum = level; - numTries = 10; - //draw header (level #, numTries) at the top - //createTargets(); - //createObstacles(level); - //createShooter(); + wait(2); + uLCD.cls(); + //uLCD.filled_rectangle(0,0,127,127,BACKGROUND); } void createTargets() { //draw all targets //initialize targetPtr w locations of where theyre drawn + uLCD.filled_circle(24,15,5,TARGET); + uLCD.filled_circle(64,15,5,TARGET); + uLCD.filled_circle(104,15,5,TARGET); + } void createShooter() { - + player1.drawShooter(); } -/* + void createObstacles(int num) { - Obstacle obsArr[num]; obstaclePtr = new ObstLocation[num]; //dummy x values, CHANGE LATER if (num == 1) { - obsArr[0] = new Obstacle(15, 15, 115, 115, uLCD); + obsArr[0] = Obstacle(2, 62, 50, 65); } else if (num == 2) { - obsArr[0] = new Obstacle(15, 15, 115, 115, uLCD); - obsArr[1] = new Obstacle(15, 15, 115, 115, uLCD); + obsArr[0] = Obstacle(15, 15, 115, 115); + obsArr[1] = Obstacle(15, 15, 115, 115); } else if (num == 3) { - obsArr[0] = new Obstacle(15, 15, 115, 115, uLCD); - obsArr[1] = new Obstacle(15, 15, 115, 115, uLCD); - obsArr[2] = new Obstacle(15, 15, 115, 115, uLCD); + obsArr[0] = Obstacle(15, 15, 115, 115); + obsArr[1] = Obstacle(15, 15, 115, 115); + obsArr[2] = Obstacle(15, 15, 115, 115); } for (int i = 0; i < num; i++) { obstaclePtr[i] = obsArr[i].getLocation(); + obsArr[i].drawObstacle(); + } +} + +void initializeLevel() { + numTries = 10; + //draw header (level #, numTries) at the top + uLCD.locate(0,0); + uLCD.printf("LEVEL:%d BULLETS:%d", levelNum, numTries); + + createTargets(); + createObstacles(levelNum); + createShooter(); +} + +void movingBullet(void const *args) { + while (true) { + if(isBullet) { + mutex.lock(); + bullet.move(); + mutex.unlock(); + + Thread::wait(100); + } } } -*/ + +void movingObs(void const *args) { + while (true) { + if(play) { + mutex.lock(); + if (levelNum == 1) { + obsArr[0].setDirection(1); + obsArr[0].move(3); + } else if (levelNum == 2) { + obsArr[0].setDirection(1); + obsArr[0].move(6); + obsArr[1].setDirection(0); + obsArr[1].move(6); + } else if (levelNum == 3) { + obsArr[0].setDirection(1); + obsArr[0].move(9); + obsArr[1].setDirection(0); + obsArr[1].move(9); + obsArr[2].setDirection(1); + obsArr[2].move(9); + } + mutex.unlock(); + Thread::wait(100); + } + } +} + void shoot() { - + bullet.drawBullet(player1.getLocation(), 115); + isBullet = 1; } void checkIfHit(); @@ -112,31 +175,22 @@ void redrawTarget(); int main() { - int currLevel = 1; + levelNum = 1; + isBullet = 0; + Thread bulletThread(movingBullet); + Thread obstacleThread(movingObs); while(1) { startGame(); //uLCD.rectangle(0,0,100,100, 0xffffff); - initializeLevel(currLevel); - bool play = true; - - wait(100); - - /* + initializeLevel(); + play = 1; while (play) { //actual game play code - //handle controls (5 tactile swtich) - if(myNav.fire()) shoot(); - if(myNav.right()) moveShooter(); - if(myNav.left()) myled=!myled; - - - + if(!right.read()) player1.moveRight(); + if(!left.read()) player1.moveLeft(); + if(!center.read()) shoot(); + //if(isBullet) bullet.move(); + wait(0.12); } - - */ - - - - } }