From 09a79783c883e83ae1b082de2ddc5bef4b62bef0 Mon Sep 17 00:00:00 2001 From: Mike Vink Date: Fri, 28 May 2021 11:32:57 +0200 Subject: added accolades everywhere, and guarding clauses --- domain/src/main/java/mancala/domain/Kalaha.java | 5 +- domain/src/main/java/mancala/domain/SmallBowl.java | 92 +++++++++++----------- 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 -- cgit v1.2.3