From ad447eedf8b19e9023744d6b666e66dfc151e77d Mon Sep 17 00:00:00 2001 From: Remco Date: Wed, 27 May 2015 20:10:28 +0200 Subject: [PATCH] Waarschijnlijk de exception opgelost, ik krijg de expection zelf niet --- main/Main.java | 2 +- model/drawObjects/Enemy.java | 21 +++++++++++++++++++-- model/drawObjects/Player.java | 3 ++- model/gameState/PlayState.java | 10 +++++++--- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/main/Main.java b/main/Main.java index 6c45714..ff51e42 100644 --- a/main/Main.java +++ b/main/Main.java @@ -10,7 +10,7 @@ public class Main { else { new Window(true); - } + } } } diff --git a/model/drawObjects/Enemy.java b/model/drawObjects/Enemy.java index 2de287d..d74be12 100644 --- a/model/drawObjects/Enemy.java +++ b/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; diff --git a/model/drawObjects/Player.java b/model/drawObjects/Player.java index b3c1231..89cfbbf 100644 --- a/model/drawObjects/Player.java +++ b/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(); + bullets = Collections.synchronizedList(new ArrayList()); } public void draw(Graphics2D g2){// diff --git a/model/gameState/PlayState.java b/model/gameState/PlayState.java index 654e82d..647a041 100644 --- a/model/gameState/PlayState.java +++ b/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(); + enemys = Collections.synchronizedList(new ArrayList()); 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 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())){