Skip to content
Snippets Groups Projects
Commit 60ab57d1 authored by Chelsea Allen's avatar Chelsea Allen
Browse files

Bug fixes: square completion and already drawn lines

1. drawHorizontal and drawVertical now throw Illegal State exceptions if a line is already drawn.

2. Fixed logic for boxComplete - method returns true only if N & S horizontals and E & W verticals have been drawn.
parent 5c0457ce
No related branches found
No related tags found
No related merge requests found
......@@ -110,9 +110,8 @@ public class DotsAndBoxesGrid {
return false;
}
// 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 true only if the north and south horizontals and the east and west verticals have all been drawn.
return verticals[x][y] && verticals[x + 1][y] && horizontals[x][y] && horizontals[x][y + 1];
}
/** Tries to claim a box for a player. If the box is complete, sets the ownership and returns true. */
......@@ -139,7 +138,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.
// throw an exception if the line was already drawn.
if (horizontals[x][y]) {
throw new IllegalStateException("Horizontal line already drawn.");
}
this.horizontals[x][y] = true;
......@@ -170,7 +172,10 @@ 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.
// throw an exception if the line was already drawn.
if (verticals[x][y]) {
throw new IllegalStateException("Vertical line already drawn.");
}
this.verticals[x][y] = true;
// Try to claim the north or south boxes
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment