|  |  | @ -48,8 +48,7 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | newGame(); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | key=new KeyListener() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | key=new KeyListener() { | 
			
		
	
		
			
				
					|  |  |  | @Override | 
			
		
	
		
			
				
					|  |  |  | public void keyTyped(KeyEvent e) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
	
		
			
				
					|  |  | @ -88,17 +87,14 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | panel = new JPanel() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | protected void paintComponent(Graphics g) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | protected void paintComponent(Graphics g) { | 
			
		
	
		
			
				
					|  |  |  | //Paint Wave | 
			
		
	
		
			
				
					|  |  |  | wave.draw(g); | 
			
		
	
		
			
				
					|  |  |  | for(Bullet b: bullets) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | for(Bullet b: bullets) { | 
			
		
	
		
			
				
					|  |  |  | b.draw(g); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | for(Enemy en: enemy) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | for(Enemy en: enemy) { | 
			
		
	
		
			
				
					|  |  |  | en.draw(g); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | g.setColor(Color.BLACK); | 
			
		
	
	
		
			
				
					|  |  | @ -112,29 +108,25 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | g.drawString("Wave: " + wave.waveNum + "     Ammo: "+ p.ammo + "     Kills: " + wave.kills +"     Health: " + p.health + "     Time: " + wave.timeCount, 50, fheight + 50); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | //Pausing the game | 
			
		
	
		
			
				
					|  |  |  | if(wave.gameMode == 3) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(wave.gameMode == 3) { | 
			
		
	
		
			
				
					|  |  |  | g.setColor(Color.WHITE); | 
			
		
	
		
			
				
					|  |  |  | g.setFont(new Font("Arial" , 1, 40)); | 
			
		
	
		
			
				
					|  |  |  | g.drawString("PAUSED - PRESS ESC TO CONTINUE" , 75, fheight/2); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | if(wave.gameMode == 2) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | if(wave.gameMode == 2) { | 
			
		
	
		
			
				
					|  |  |  | //On screen | 
			
		
	
		
			
				
					|  |  |  | g.setColor(Color.RED); | 
			
		
	
		
			
				
					|  |  |  | g.setFont(new Font("Arial" , 1, 40)); | 
			
		
	
		
			
				
					|  |  |  | g.drawString("You Died" , fwidth/2 - 100, fheight/2); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | //In black bar | 
			
		
	
		
			
				
					|  |  |  | g.setColor(Color.WHITE); | 
			
		
	
		
			
				
					|  |  |  | g.setFont(new Font("Arial" , 1, 25)); | 
			
		
	
		
			
				
					|  |  |  | g.drawString("Press enter to play", 50, fheight + 100); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else if(wave.gameMode ==0) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | else if(wave.gameMode ==0) { | 
			
		
	
		
			
				
					|  |  |  | g.drawString("Press enter to play", 50, fheight + 100); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  | frame.add(panel); | 
			
		
	
	
		
			
				
					|  |  | @ -146,29 +138,12 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | if(wave.gameMode == 1) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | p.move(); | 
			
		
	
		
			
				
					|  |  |  | for(int i = 0; i < bullets.size(); i ++) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | try | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | bullets.get(i).move(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | catch(Exception ex) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | for(int i = 0; i < bullets.size(); i ++) { | 
			
		
	
		
			
				
					|  |  |  | bullets.get(i).move(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | for(int i = 0; i < enemy.size(); i++) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | try | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | enemy.get(i).move(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | catch(Exception ex) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | for(int i = 0; i < enemy.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  | enemy.get(i).move(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | wave.waveCheck(); | 
			
		
	
	
		
			
				
					|  |  | @ -181,24 +156,17 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | void newGame() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | bullets = new ArrayList<Bullet>(); | 
			
		
	
		
			
				
					|  |  |  | enemy = new ArrayList<Enemy>(); | 
			
		
	
		
			
				
					|  |  |  | bullets = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  | enemy = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  | p = new Player(); | 
			
		
	
		
			
				
					|  |  |  | wave = new Wave(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | public static void main(String[] arguments) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | Tanks game = new Tanks(); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /* | 
			
		
	
		
			
				
					|  |  |  | Sub-classes that require the fields in tanks | 
			
		
	
		
			
				
					|  |  |  | */ | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /** | 
			
		
	
		
			
				
					|  |  |  | * the player class which extends the living class | 
			
		
	
		
			
				
					|  |  |  | * a player has a turret and an int kills | 
			
		
	
	
		
			
				
					|  |  | @ -294,55 +262,37 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | t.y = y; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | void updateDir(KeyEvent e, boolean pressed) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | void updateDir(KeyEvent e, boolean pressed) { | 
			
		
	
		
			
				
					|  |  |  | int id=e.getKeyCode(); | 
			
		
	
		
			
				
					|  |  |  | if(id== KeyEvent.VK_UP) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(id== KeyEvent.VK_UP) { | 
			
		
	
		
			
				
					|  |  |  | up=pressed; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_DOWN) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_DOWN) { | 
			
		
	
		
			
				
					|  |  |  | down=pressed; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_LEFT) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_LEFT) { | 
			
		
	
		
			
				
					|  |  |  | left=pressed; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_RIGHT) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_RIGHT) { | 
			
		
	
		
			
				
					|  |  |  | right=pressed; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_A) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_A) { | 
			
		
	
		
			
				
					|  |  |  | rleft = pressed; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_D) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_D) { | 
			
		
	
		
			
				
					|  |  |  | rRight = pressed; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_R && wave.gameMode ==1) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_R && wave.gameMode ==1) { | 
			
		
	
		
			
				
					|  |  |  | ammo=10; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_SPACE) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(pressed) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if (shoot) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | else if(id==KeyEvent.VK_SPACE && wave.gameMode !=0) { | 
			
		
	
		
			
				
					|  |  |  | if(pressed) { | 
			
		
	
		
			
				
					|  |  |  | if (shoot) { | 
			
		
	
		
			
				
					|  |  |  | shoot(); | 
			
		
	
		
			
				
					|  |  |  | shoot=false; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | void shoot() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
	
		
			
				
					|  |  | @ -418,32 +368,25 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | //Moving the bullet | 
			
		
	
		
			
				
					|  |  |  | public void move() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | public void move() { | 
			
		
	
		
			
				
					|  |  |  | super.move(-1); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | //Checks if the bullet goes off screen, if so... it get removed | 
			
		
	
		
			
				
					|  |  |  | if(x < 0 || x > fwidth) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(x < 0 || x > fwidth) { | 
			
		
	
		
			
				
					|  |  |  | bullets.remove(this); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | if (y < 0 || y > fheight) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if (y < 0 || y > fheight) { | 
			
		
	
		
			
				
					|  |  |  | bullets.remove(this); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | //Checks for collision with enemies, enemy takes damage and byllet is removed | 
			
		
	
		
			
				
					|  |  |  | for(int i = 0; i < enemy.size(); i++) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(enemyBullet == false) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | for(int i = 0; i < enemy.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  | if(enemyBullet == false) { | 
			
		
	
		
			
				
					|  |  |  | boolean collided = this.checkCollision(enemy.get(i)); | 
			
		
	
		
			
				
					|  |  |  | if(collided) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(collided) { | 
			
		
	
		
			
				
					|  |  |  | enemy.get(i).takeDamage(); | 
			
		
	
		
			
				
					|  |  |  | bullets.remove(this); | 
			
		
	
		
			
				
					|  |  |  | if(!enemy.get(i).isAlive) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(!enemy.get(i).isAlive) { | 
			
		
	
		
			
				
					|  |  |  | enemy.remove(enemy.get(i)); | 
			
		
	
		
			
				
					|  |  |  | wave.kills++; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | @ -455,12 +398,10 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | if(enemyBullet) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | boolean collided = this.checkCollision(p); | 
			
		
	
		
			
				
					|  |  |  | if(collided) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(collided) { | 
			
		
	
		
			
				
					|  |  |  | p.takeDamage(); | 
			
		
	
		
			
				
					|  |  |  | bullets.remove(this); | 
			
		
	
		
			
				
					|  |  |  | if(!p.isAlive) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(!p.isAlive) { | 
			
		
	
		
			
				
					|  |  |  | wave.setGameMode(2); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | @ -476,10 +417,8 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | * turn left, 1 will cause | 
			
		
	
		
			
				
					|  |  |  | * it to turn right | 
			
		
	
		
			
				
					|  |  |  | */ | 
			
		
	
		
			
				
					|  |  |  | private class Turret extends RotationalElement | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | public Turret(RotationalElement e) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | private class Turret extends RotationalElement { | 
			
		
	
		
			
				
					|  |  |  | public Turret(RotationalElement e) { | 
			
		
	
		
			
				
					|  |  |  | width = 50; | 
			
		
	
		
			
				
					|  |  |  | height = 50; | 
			
		
	
		
			
				
					|  |  |  | x = e.x; | 
			
		
	
	
		
			
				
					|  |  | @ -489,22 +428,16 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | imageLocation = "turret.png"; | 
			
		
	
		
			
				
					|  |  |  | super.loadImage(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | public void shoot() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | //bullets.add(new Bullet (this)); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | public void rotate(int e) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | public void rotate(int e) { | 
			
		
	
		
			
				
					|  |  |  | super.direction = super.direction + 5*e; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | /* | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | A version of the emeny tank that arrives at some point | 
			
		
	
		
			
				
					|  |  |  | */ | 
			
		
	
		
			
				
					|  |  |  | private class Tank extends Enemy | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | Bullet b; | 
			
		
	
		
			
				
					|  |  |  | Turret t; | 
			
		
	
		
			
				
					|  |  |  | Timer tim; | 
			
		
	
	
		
			
				
					|  |  | @ -526,48 +459,32 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | t.imageLocation = "enemyTurret.png"; | 
			
		
	
		
			
				
					|  |  |  | t.loadImage(); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | al = new ActionListener() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | @Override | 
			
		
	
		
			
				
					|  |  |  | public void actionPerformed(ActionEvent e) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(getAlive()) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | b = new Bullet(t); | 
			
		
	
		
			
				
					|  |  |  | b.enemyBullet=true; | 
			
		
	
		
			
				
					|  |  |  | bullets.add(b); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | al = e -> { | 
			
		
	
		
			
				
					|  |  |  | if(getAlive()) { | 
			
		
	
		
			
				
					|  |  |  | b = new Bullet(t); | 
			
		
	
		
			
				
					|  |  |  | b.enemyBullet=true; | 
			
		
	
		
			
				
					|  |  |  | bullets.add(b); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  | tim = new Timer(3500,al); | 
			
		
	
		
			
				
					|  |  |  | tim.start(); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | public void draw (Graphics g) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | public void draw (Graphics g) { | 
			
		
	
		
			
				
					|  |  |  | super.draw(g); | 
			
		
	
		
			
				
					|  |  |  | t.draw(g); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | public void move() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(this.distToPlayer(p)>250) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | public void move() { | 
			
		
	
		
			
				
					|  |  |  | if(this.distToPlayer(p)>250) { | 
			
		
	
		
			
				
					|  |  |  | direction = angleToPlayer(p); | 
			
		
	
		
			
				
					|  |  |  | super.move(-1); | 
			
		
	
		
			
				
					|  |  |  | if(this.checkCollision(p)) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(this.checkCollision(p)) { | 
			
		
	
		
			
				
					|  |  |  | p.takeDamage(); | 
			
		
	
		
			
				
					|  |  |  | this.takeDamage(); | 
			
		
	
		
			
				
					|  |  |  | if(isAlive==false) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(isAlive==false) { | 
			
		
	
		
			
				
					|  |  |  | enemy.remove(this); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | if(!p.isAlive) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(!p.isAlive) { | 
			
		
	
		
			
				
					|  |  |  | wave.setGameMode(2); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | @ -579,7 +496,7 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | private class Wave extends DrawableElement | 
			
		
	
		
			
				
					|  |  |  | private class Wave extends DrawableElement | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | /**fields time is continous while playing, gameMode(1=playing, | 
			
		
	
		
			
				
					|  |  |  | * 2=dead, 3=paused. spawntime keeps a countdown until next spawn, | 
			
		
	
	
		
			
				
					|  |  | @ -603,31 +520,19 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | super.loadImage(); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | //actionlistener calls spawn every 2 seconds | 
			
		
	
		
			
				
					|  |  |  | ActionListener z = new ActionListener() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | ActionListener z = new ActionListener() { | 
			
		
	
		
			
				
					|  |  |  | @Override | 
			
		
	
		
			
				
					|  |  |  | public void actionPerformed(ActionEvent e) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(gameMode == 1) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | public void actionPerformed(ActionEvent e) { | 
			
		
	
		
			
				
					|  |  |  | if(gameMode == 1) { | 
			
		
	
		
			
				
					|  |  |  | spawnZombie(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | ActionListener ta = new ActionListener() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | @Override | 
			
		
	
		
			
				
					|  |  |  | public void actionPerformed(ActionEvent e) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(gameMode ==1) | 
			
		
	
		
			
				
					|  |  |  | spawnTank(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | ActionListener ta = e -> { | 
			
		
	
		
			
				
					|  |  |  | if(gameMode ==1) | 
			
		
	
		
			
				
					|  |  |  | spawnTank(); | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | //action listener increments time | 
			
		
	
	
		
			
				
					|  |  | @ -636,33 +541,26 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | spawnZombie.start(); | 
			
		
	
		
			
				
					|  |  |  | ActionListener t = new ActionListener() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | @Override | 
			
		
	
		
			
				
					|  |  |  | public void actionPerformed(ActionEvent e) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(gameMode==1) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | public void actionPerformed(ActionEvent e) { | 
			
		
	
		
			
				
					|  |  |  | if(gameMode==1) { | 
			
		
	
		
			
				
					|  |  |  | timeCount++; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  | time = new Timer(1000,t); | 
			
		
	
		
			
				
					|  |  |  | time.start(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | public void setGameMode(int newGameMode) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | public void setGameMode(int newGameMode) { | 
			
		
	
		
			
				
					|  |  |  | gameMode = newGameMode; | 
			
		
	
		
			
				
					|  |  |  | if(gameMode == 2) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if(gameMode == 2) { | 
			
		
	
		
			
				
					|  |  |  | //Player has died, ending the game | 
			
		
	
		
			
				
					|  |  |  | time.stop(); | 
			
		
	
		
			
				
					|  |  |  | //move.stop(); | 
			
		
	
		
			
				
					|  |  |  | spawnZombie.stop(); | 
			
		
	
		
			
				
					|  |  |  | spawnTank.stop(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else if(gameMode == 4) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | else if(gameMode == 4) { | 
			
		
	
		
			
				
					|  |  |  | //Player has won | 
			
		
	
		
			
				
					|  |  |  | time.stop(); | 
			
		
	
		
			
				
					|  |  |  | //move.stop(); | 
			
		
	
	
		
			
				
					|  |  | @ -670,17 +568,13 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | spawnTank.stop(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | //spawn method checks if spawn timer ==0 and if so then spawns an | 
			
		
	
		
			
				
					|  |  |  | //enemy | 
			
		
	
		
			
				
					|  |  |  | public void spawnTank() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | public void spawnTank() { | 
			
		
	
		
			
				
					|  |  |  | enemy.add(new Tank()); | 
			
		
	
		
			
				
					|  |  |  | spawnedTanks++; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | public void spawnZombie() | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | public void spawnZombie() { | 
			
		
	
		
			
				
					|  |  |  | enemy.add(new Zombie()); | 
			
		
	
		
			
				
					|  |  |  | spawnedZombies++; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | @ -740,7 +634,6 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | if(kills == 60) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | //Game over | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | break; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | @ -754,5 +647,9 @@ public class Tanks | 
			
		
	
		
			
				
					|  |  |  | spawnTank.setDelay(4000); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | //Main method | 
			
		
	
		
			
				
					|  |  |  | public static void main(String[] arguments) { | 
			
		
	
		
			
				
					|  |  |  | Tanks game = new Tanks(); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  |