Skip to content
Snippets Groups Projects
Commit 57597a4a authored by Scott Crooks's avatar Scott Crooks
Browse files

Fixed bugs in boxComplete and drawVertical/Horizontal

parent 88c938c4
No related branches found
No related tags found
1 merge request!1Resolve "Fix errors in assignment"
...@@ -110,9 +110,13 @@ public class DotsAndBoxesGrid { ...@@ -110,9 +110,13 @@ public class DotsAndBoxesGrid {
return false; return false;
} }
// A box is complete if the north and south horizontals and the east and west verticals have all been drawn. // Could be shorter but this is more readable
// FIXME: You'll need to fix this code (after writing a test first). boolean north = horizontals[x][y];
return true; boolean south = horizontals[x][y + 1];
boolean west = verticals[x][y];
boolean east = verticals[x + 1][y];
return north && south && west && east;
} }
/** Tries to claim a box for a player. If the box is complete, sets the ownership and returns true. */ /** Tries to claim a box for a player. If the box is complete, sets the ownership and returns true. */
...@@ -139,7 +143,8 @@ public class DotsAndBoxesGrid { ...@@ -139,7 +143,8 @@ public class DotsAndBoxesGrid {
throw new IndexOutOfBoundsException(String.format("y was %d, which is out of range. Range is 0 to %d", y, height)); 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. // You need to throw an exception if the line was already drawn.
if (horizontals[x][y]) throw new IllegalArgumentException("Line is already taken.");
this.horizontals[x][y] = true; this.horizontals[x][y] = true;
...@@ -171,6 +176,7 @@ public class DotsAndBoxesGrid { ...@@ -171,6 +176,7 @@ public class DotsAndBoxesGrid {
} }
// You need to throw an exception if the line was already drawn. // You need to throw an exception if the line was already drawn.
if (verticals[x][y]) throw new IllegalArgumentException("Line is already taken.");
this.verticals[x][y] = true; this.verticals[x][y] = true;
// Try to claim the north or south boxes // Try to claim the north or south boxes
......
...@@ -78,7 +78,7 @@ public class DotsAndBoxesGridTest { ...@@ -78,7 +78,7 @@ public class DotsAndBoxesGridTest {
DotsAndBoxesGrid grid = new DotsAndBoxesGrid(3, 3, 2); DotsAndBoxesGrid grid = new DotsAndBoxesGrid(3, 3, 2);
grid.drawHorizontal(1, 1, 1); grid.drawHorizontal(1, 1, 1);
Exception exception = assertThrows(IllegalStateException.class, () -> { Exception exception = assertThrows(IllegalArgumentException.class, () -> {
grid.drawHorizontal(1, 1, 2); grid.drawHorizontal(1, 1, 2);
}); });
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment