Просмотр исходного кода

Waarschijnlijk de exception opgelost, ik krijg de expection zelf niet

Remco 10 лет назад
Родитель
Сommit
ad447eedf8
4 измененных файлов с 29 добавлено и 7 удалено
  1. 1 1
      main/Main.java
  2. 19 2
      model/drawObjects/Enemy.java
  3. 2 1
      model/drawObjects/Player.java
  4. 7 3
      model/gameState/PlayState.java

+ 1 - 1
main/Main.java

@@ -10,7 +10,7 @@ public class Main {
 		else
 		{
 			new Window(true);
-		}
+		}		
 	}
 
 }

+ 19 - 2
model/drawObjects/Enemy.java

@@ -72,8 +72,25 @@ public class Enemy extends Person{
 		this.circle = circle;
 	}
 	
-	public boolean hit(Bullet bullet){
-		if(color.equals(bullet.getColor()) && circle.getBounds2D().intersectsLine(bullet.bullet)){
+	/**
+	 * Deze methode kijkt of de enemy is geraakt door een bullet
+	 * @param bullet, een kogel om te kijken of hij deze enemy heeft geraakt
+	 * @return, true = raakt, false = mis
+	 */
+	public boolean bulletHitMe(Bullet bullet){
+		if(circle.getBounds2D().intersectsLine(bullet.bullet)){
+			return true;
+		}
+		return false;
+	}
+	
+	/**
+	 * Hier kijk je of de bullet de juiste kleur heeft, om de enemy te vermoorden
+	 * @param bullet, de kogel om te kije of hij de zelfde kleur heeft als deze enemy
+	 * @return,true = zelfde kleur, false = andere kleur
+	 */
+	public boolean ColorHitMe(Bullet bullet){
+		if(this.color.equals(bullet.getColor())){
 			return true;
 		}
 		return false;

+ 2 - 1
model/drawObjects/Player.java

@@ -8,6 +8,7 @@ import java.awt.Graphics2D;
 import java.awt.geom.AffineTransform;
 import java.awt.image.BufferedImage;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -26,7 +27,7 @@ public class Player extends Person {
 		img = Images.getImage(Images.ImageType.player2);	
 		width = img.getWidth();
 		height = img.getHeight();
-		bullets = new ArrayList<Bullet>();
+		bullets = Collections.synchronizedList(new ArrayList<Bullet>());
 	}
 	
 	public void draw(Graphics2D g2){//		

+ 7 - 3
model/gameState/PlayState.java

@@ -5,6 +5,7 @@ import java.awt.Graphics2D;
 import java.awt.geom.Line2D;
 import java.awt.geom.Rectangle2D;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -31,7 +32,7 @@ public class PlayState extends GameState{
 		super(gsm);
 		area = new PlayArea((int) borderRect.getX(),1024,1024,100);
 		infoPanel = new InfoPanel(0, 0);
-		enemys = new ArrayList<Enemy>();
+		enemys = Collections.synchronizedList(new ArrayList<Enemy>());
 		player = new Player(1280-1024+1024/2, 1024/2,area);
 		for(int i = 0; i < 8; i++){
 			Line2D line = area.getLine(i);
@@ -53,9 +54,12 @@ public class PlayState extends GameState{
 			Enemy e = enemyIterator.next();
 			Iterator<Bullet> bulletIterator = player.bullets.iterator();
 			while(bulletIterator.hasNext()){
-				if(e.hit(bulletIterator.next())){
-					enemyIterator.remove();
+				Bullet b = bulletIterator.next();
+				if(e.bulletHitMe(b)){		//kijkt of de enemy een bullet tegen komt, zoja verwijder de bullet.
 					bulletIterator.remove();
+					if(e.ColorHitMe(b)){		//kijkt of de bullet die de enemy heeft gehit, ook dezelfde kleur heeft als de enemy, zoja verwijder de enemy
+						enemyIterator.remove();
+					}					
 				}
 			}
 			if(area.octagon.intersects(e.getCircle().getBounds2D())){