Browse Source

chooseField returns correekt Field case:Right has Ship

Max Wenzel 3 years ago
parent
commit
bec18067d0
  1. 11
      src/main/java/de/tims/fleetstorm/ai/Logic.java
  2. 23
      src/test/java/de/tims/fleetstorm/ai/LogicTest.java

11
src/main/java/de/tims/fleetstorm/ai/Logic.java

@ -46,6 +46,16 @@ public class Logic {
} }
return target; return target;
} }
target = lastShot;
if (!clearedRight) {
target = matchfield.getRight(target);
if (target.getState() == Coordinate.EMPTY) {
clearedRight = true;
}
return target;
}
} }
// If ship is sinked // If ship is sinked
@ -180,7 +190,6 @@ public class Logic {
this.clearedLeft = false; this.clearedLeft = false;
this.clearedRight = false; this.clearedRight = false;
} }
} }
public void setClearedAbove(boolean b) { public void setClearedAbove(boolean b) {

23
src/test/java/de/tims/fleetstorm/ai/LogicTest.java

@ -279,12 +279,10 @@ class LogicTest {
Logic logic = new Logic(); Logic logic = new Logic();
int size = 4; int size = 4;
Coordinate center = new Coordinate(2, 2); Coordinate center = new Coordinate(2, 2);
// Coordinate empty = new Coordinate(2, 3);
Coordinate expectedResult = new Coordinate(2, 1); Coordinate expectedResult = new Coordinate(2, 1);
Matchfield matchfield = new Matchfield(size); Matchfield matchfield = new Matchfield(size);
matchfield.createMatchfield(); matchfield.createMatchfield();
matchfield.setState(center, Coordinate.HIT); matchfield.setState(center, Coordinate.HIT);
// matchfield.setState(empty, Coordinate.EMPTY);
matchfield.setState(expectedResult, Coordinate.HIT); matchfield.setState(expectedResult, Coordinate.HIT);
logic.setMatchfield(matchfield); logic.setMatchfield(matchfield);
logic.setLastShot(center); logic.setLastShot(center);
@ -297,4 +295,25 @@ class LogicTest {
assertEquals(result, expectedResult); assertEquals(result, expectedResult);
} }
@Test
void testChooseFieldRightAfterHit() {
Logic logic = new Logic();
int size = 4;
Coordinate center = new Coordinate(2, 2);
Coordinate expectedResult = new Coordinate(3, 2);
Matchfield matchfield = new Matchfield(size);
matchfield.createMatchfield();
matchfield.setState(center, Coordinate.HIT);
matchfield.setState(expectedResult, Coordinate.HIT);
logic.setMatchfield(matchfield);
logic.setLastShot(center);
logic.setTarget(center);
logic.setFoundShip(true);
logic.chooseField(logic.getEverySecondField()); // first Shot
logic.chooseField(logic.getEverySecondField()); // second Shot
Coordinate result = logic.chooseField(logic.getEverySecondField());
assertEquals(result, expectedResult);
}
} }
Loading…
Cancel
Save