From e4d6d082a098dc9de2340476ee05a3bfee5a6616 Mon Sep 17 00:00:00 2001 From: bmcandre <bmcandre@myune.edu.au> Date: Wed, 2 Aug 2023 16:08:25 +1000 Subject: [PATCH] Update DotsAndBoxesGrid.java --- .../java/dotsandboxes/DotsAndBoxesGrid.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/java/dotsandboxes/DotsAndBoxesGrid.java b/src/main/java/dotsandboxes/DotsAndBoxesGrid.java index a9e7c5b..3df2306 100644 --- a/src/main/java/dotsandboxes/DotsAndBoxesGrid.java +++ b/src/main/java/dotsandboxes/DotsAndBoxesGrid.java @@ -112,7 +112,9 @@ public class DotsAndBoxesGrid { // A box is complete if the north and south horizontals and the east and west verticals have all been drawn. // FIXME: You'll need to fix this code (after writing a test first). - return true; + return (getHorizontal(x, y) && getHorizontal(x, y + 1) && getVertical(x, y) && getVertical(x + 1, y)); + + //return true; } /** Tries to claim a box for a player. If the box is complete, sets the ownership and returns true. */ @@ -139,9 +141,12 @@ public class DotsAndBoxesGrid { throw new IndexOutOfBoundsException(String.format("y was %d, which is out of range. Range is 0 to %d", y, height)); } - // FIXME: You need to throw an exception if the line was already drawn. - - this.horizontals[x][y] = true; + if (getHorizontal(x, y)) { + throw new RuntimeException("Horizontal was already drawn"); + } else { + this.horizontals[x][y] = true; + } + // Try to claim the north or south boxes boolean claimN = claimBox(x, y-1, player); @@ -171,8 +176,12 @@ public class DotsAndBoxesGrid { } // You need to throw an exception if the line was already drawn. - - this.verticals[x][y] = true; + if (getVertical(x, y)) { + throw new RuntimeException("Vertical was already drawn"); + } else { + this.verticals[x][y] = true; + } + // Try to claim the north or south boxes boolean claimE = claimBox(x, y, player); boolean claimW = claimBox(x-1, y, player); -- GitLab