X-Git-Url: https://git.ucc.asn.au/?p=progcomp2012.git;a=blobdiff_plain;f=agents%2Fbasic_java%2Fbasic.java;fp=agents%2Fbasic_java%2Fbasic.java;h=72b2b9099a5c19eb76a5a308236a77e96f89df40;hp=242e6cb4164025e54ddfd970e07ab35fa83bd14a;hb=a46f782eda088f2229c2c3375aad92e4e4d16421;hpb=8827bb58a733a2adf3e7fe6e174d12bd5c1a0846 diff --git a/agents/basic_java/basic.java b/agents/basic_java/basic.java index 242e6cb..72b2b90 100644 --- a/agents/basic_java/basic.java +++ b/agents/basic_java/basic.java @@ -256,18 +256,29 @@ class BasicAI */ private void KillUnit(Piece kill) throws Exception { + Vector removeFrom = null; if (kill.colour.compareTo(colour) == 0) { totalAllies[Piece.Index(kill.rank)] -= 1; - if (units.remove(kill) == false) - throw new Exception("BasicAI.KillUnit - Couldn't remove allied Piece from units Vector!"); + removeFrom = units; } else if (kill.colour.compareTo(OppositeColour(colour)) == 0) { totalEnemies[Piece.Index(kill.rank)] -= 1; - if (enemyUnits.remove(kill) == false) - throw new Exception("BasicAI.KillUnit - Couldn't remove enemy Piece from enemyUnits Vector!"); + removeFrom = enemyUnits; } + if (removeFrom == null) + throw new Exception("BasicAI.KillUnit - Can't identify unit with colour " + kill.colour + "!"); + + for (int ii=0; ii < removeFrom.size(); ++ii) + { + if (removeFrom.elementAt(ii) == kill) + { + removeFrom.remove(ii); + return; + } + } + throw new Exception("BasicAI.KillUnit - Couldn't find unit in unit list."); } /**