Skip to content
Snippets Groups Projects
Commit bc7a2fff authored by Alex Milliken's avatar Alex Milliken
Browse files

Fixed bugs in DotsAndBoxesGrind.java

Corrected the bugs in the drawVertical, drawHorizontal and boxComplete methods. The unit tests all pass now and the code works correctly.
parent e0fe5c10
No related branches found
No related tags found
No related merge requests found
......@@ -111,9 +111,13 @@ 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).
if (horizontals[x][y] && horizontals[x][y+1] && verticals[x][y] && verticals[x+1][y]) {
return true;
}
else {
return false;
}
}
/** Tries to claim a box for a player. If the box is complete, sets the ownership and returns true. */
private boolean claimBox(int x, int y, int p) {
......@@ -139,7 +143,10 @@ 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.
// Throws an exception if the line was already drawn.
if (this.horizontals[x][y]==true) {
throw new IllegalStateException("Line already drawn");
}
this.horizontals[x][y] = true;
......@@ -170,10 +177,13 @@ public class DotsAndBoxesGrid {
throw new IndexOutOfBoundsException(String.format("y was %d, which is out of range. Range is 0 to %d", y, height - 1));
}
// You need to throw an exception if the line was already drawn.
// Throws an exception if the line was already drawn.
if (this.verticals[x][y]==true) {
throw new IllegalStateException("Line already drawn");
}
this.verticals[x][y] = true;
// Try to claim the north or south boxes
// Try to claim the east or west boxes
boolean claimE = claimBox(x, y, player);
boolean claimW = claimBox(x-1, y, player);
if (claimE || claimW) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment