summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--domain/src/main/java/mancala/domain/Kalaha.java5
-rw-r--r--domain/src/main/java/mancala/domain/SmallBowl.java92
2 files changed, 50 insertions, 47 deletions
diff --git a/domain/src/main/java/mancala/domain/Kalaha.java b/domain/src/main/java/mancala/domain/Kalaha.java
index 05f41ca..a0d2e0f 100644
--- a/domain/src/main/java/mancala/domain/Kalaha.java
+++ b/domain/src/main/java/mancala/domain/Kalaha.java
@@ -50,10 +50,11 @@ class Kalaha implements Bowl {
myRocks--;
return next.distribute(remainingRocks);
}
- else if (remainingRocks == 1)
+ else if (remainingRocks == 1) {
return this;
- else
+ } else {
return next.distribute(--remainingRocks);
+ }
}
void claimStolenBooty(int booty) {
diff --git a/domain/src/main/java/mancala/domain/SmallBowl.java b/domain/src/main/java/mancala/domain/SmallBowl.java
index d725c48..0a00bde 100644
--- a/domain/src/main/java/mancala/domain/SmallBowl.java
+++ b/domain/src/main/java/mancala/domain/SmallBowl.java
@@ -1,8 +1,5 @@
package mancala.domain;
-// Make your own mancala implementation using your design.
-// You can take this stub as an example how to make a
-// class inside a package and how to test it.
public class SmallBowl implements Bowl {
private int myRocks;
private final Player playerThatOwnsMe;
@@ -61,31 +58,31 @@ public class SmallBowl implements Bowl {
}
public void play() {
- if ((!playerThatOwnsMe.hasTheTurn()) || (myRocks == 0)) ;
- else {
-
- Bowl lastToReceiveRock;
- int myRocksBefore = myRocks;
- // Which distribute method do we need?
- if (getNextBowl().getClass() == Kalaha.class)
- lastToReceiveRock = getNextKalaha().distribute(myRocks);
- else
- lastToReceiveRock = getNextSmallBowl().distribute(myRocks);
- myRocks = (myRocks - myRocksBefore);
-
- // Did play end in smallbowl of my player? steal, otherwise do nothing
- if (lastToReceiveRock.getClass() == SmallBowl.class && lastToReceiveRock.getPlayerThatOwnsMe().equals(getPlayerThatOwnsMe())) {
- stealTheBooty((SmallBowl) lastToReceiveRock);
- }
+ if ((!playerThatOwnsMe.hasTheTurn())) return;
+ if (myRocks == 0) return;
+
+ Bowl lastToReceiveRock;
+ int myRocksBefore = myRocks;
+ // Which distribute method do we need?
+ if (getNextBowl().getClass() == Kalaha.class) {
+ lastToReceiveRock = getNextKalaha().distribute(myRocks);
+ } else {
+ lastToReceiveRock = getNextSmallBowl().distribute(myRocks);
+ }
+ myRocks = (myRocks - myRocksBefore);
- // Did play end in Kalaha? do nothing, otherwise switch turn
- if (!(lastToReceiveRock.getClass() == Kalaha.class)) {
- getPlayerThatOwnsMe().switchTurn();
- }
+ // Did play end in smallbowl of my player? steal, otherwise do nothing
+ if (lastToReceiveRock.getClass() == SmallBowl.class && lastToReceiveRock.getPlayerThatOwnsMe().equals(getPlayerThatOwnsMe())) {
+ stealTheBooty((SmallBowl) lastToReceiveRock);
+ }
- // Should a player win or is it a draw? tell player he won/ drew, otherwise do nothing
- endTheGame();
+ // Did play end in Kalaha? do nothing, otherwise switch turn
+ if (!(lastToReceiveRock.getClass() == Kalaha.class)) {
+ getPlayerThatOwnsMe().switchTurn();
}
+
+ // Should a player win or is it a draw? tell player he won/ drew, otherwise do nothing
+ endTheGame();
}
Bowl distribute(int remainingRocks) {
@@ -94,10 +91,11 @@ public class SmallBowl implements Bowl {
if (remainingRocks == 1)
return this;
else {
- if (getNextBowl().getClass() == SmallBowl.class)
+ if (getNextBowl().getClass() == SmallBowl.class) {
return getNextSmallBowl().distribute(--remainingRocks);
- else
+ } else {
return getNextKalaha().distribute(--remainingRocks);
+ }
}
}
@@ -117,35 +115,37 @@ public class SmallBowl implements Bowl {
SmallBowl firstBowlPlayer = (SmallBowl) getOpposite().getNextKalaha().getNextBowl();
int playerRocks = firstBowlPlayer.countRocksInSmallBowlsUntilOpponentBowls();
- if (playerRocks == 0) {
+ if (playerRocks == 0) return;
- SmallBowl firstBowlOpponent = (SmallBowl) getNextKalaha().getNextBowl();
- int opponentRocks = firstBowlOpponent.countRocksInSmallBowlsUntilOpponentBowls();
+ SmallBowl firstBowlOpponent = (SmallBowl) getNextKalaha().getNextBowl();
+ int opponentRocks = firstBowlOpponent.countRocksInSmallBowlsUntilOpponentBowls();
- int playerKalaha = getNextKalaha().getMyRocks();
- int opponentKalaha = getOpposite().getNextKalaha().getMyRocks();
+ int playerKalaha = getNextKalaha().getMyRocks();
+ int opponentKalaha = getOpposite().getNextKalaha().getMyRocks();
- if ((playerRocks + playerKalaha) == (opponentRocks + opponentKalaha))
- getPlayerThatOwnsMe().gotADraw();
- else if ((playerRocks + playerKalaha) > (opponentRocks + opponentKalaha))
- getPlayerThatOwnsMe().isTheWinner();
- else
- getPlayerThatOwnsMe().getOpponent().isTheWinner();
+ if ((playerRocks + playerKalaha) == (opponentRocks + opponentKalaha)) {
+ getPlayerThatOwnsMe().gotADraw();
+ } else if ((playerRocks + playerKalaha) > (opponentRocks + opponentKalaha)) {
+ getPlayerThatOwnsMe().isTheWinner();
+ } else {
+ getPlayerThatOwnsMe().getOpponent().isTheWinner();
}
}
private SmallBowl getNextSmallBowl() {
- if (getNextBowl().getClass() == Kalaha.class)
+ if (getNextBowl().getClass() == Kalaha.class) {
return (SmallBowl) getNextBowl().getNextBowl();
- else
+ } else {
return (SmallBowl) getNextBowl();
+ }
}
private Kalaha getNextKalaha() {
if (!(getNextBowl().getClass() == Kalaha.class)) {
return getNextSmallBowl().getNextKalaha();
- } else
+ } else {
return (Kalaha) getNextBowl();
+ }
}
private SmallBowl getOpposite() {
@@ -154,16 +154,18 @@ public class SmallBowl implements Bowl {
}
private int countStepsToKalaha() {
- if (getNextBowl().getClass() == Kalaha.class)
+ if (getNextBowl().getClass() == Kalaha.class) {
return 0;
- else
+ } else {
return 1 + getNextSmallBowl().countStepsToKalaha();
+ }
}
private int countRocksInSmallBowlsUntilOpponentBowls() {
- if (!(getNextSmallBowl().getPlayerThatOwnsMe().equals(getPlayerThatOwnsMe())))
+ if (!(getNextSmallBowl().getPlayerThatOwnsMe().equals(getPlayerThatOwnsMe()))) {
return this.myRocks;
- else
+ } else {
return this.myRocks + getNextSmallBowl().countRocksInSmallBowlsUntilOpponentBowls();
+ }
}
} \ No newline at end of file