Commit 1ef79a09 authored by tgraw's avatar tgraw
Browse files

Fixed issue #1 and #2

Added check to drawVertical() and drawHorizontal() to cover the issue of drawing over already drawn lines.
Altered the return value of boxComplete() to return the conjunction of the state for each line of the box.
parent b42af21d
......@@ -111,9 +111,10 @@ 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;
var hs = this.horizontals[x][y] && this.horizontals[x][y+1];
var vs = this.verticals[x][y] && this.verticals[x+1][y];
return hs && vs;
}
/** Tries to claim a box for a player. If the box is complete, sets the ownership and returns true. */
......@@ -140,7 +141,9 @@ 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.
if (this.horizontals[x][y]) {
throw new IllegalStateException(String.format("Line at (%d, %d) has already been drawn. Choose another line.", x, y));
}
this.horizontals[x][y] = true;
......@@ -171,7 +174,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.
if (this.verticals[x][y]) {
throw new IllegalStateException(String.format("Vertical line at (%d, %d) has already been drawn. Choose another line.", x, y));
}
this.verticals[x][y] = true;
// Try to claim the north or south boxes
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment