Skip to content
Snippets Groups Projects
Commit da330583 authored by Daniel Andrews's avatar Daniel Andrews
Browse files

bugfix

parent 7bdbd0fb
No related tags found
No related merge requests found
...@@ -113,7 +113,11 @@ public class DotsAndBoxesGrid { ...@@ -113,7 +113,11 @@ public class DotsAndBoxesGrid {
// A box is complete if the north and south horizontals and the east and west verticals have all been drawn. // 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). // FIXME: You'll need to fix this code (after writing a test first).
if(getHorizontal(x,y) && getVertical(x,y) && getHorizontal(x,y+1) && getVertical(x+1,y)) {
return true; return true;
} else {
return false;
}
} }
/** 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. */
...@@ -132,7 +136,7 @@ public class DotsAndBoxesGrid { ...@@ -132,7 +136,7 @@ public class DotsAndBoxesGrid {
* @param y * @param y
* @return true if it completes a box * @return true if it completes a box
*/ */
public boolean drawHorizontal(int x, int y, int player) { public boolean drawHorizontal(int x, int y, int player) throws IllegalStateException {
if (x >= width - 1 || x < 0) { if (x >= width - 1 || x < 0) {
throw new IndexOutOfBoundsException(String.format("x was %d, which is out of range. Range is 0 to %d", x, width - 1)); throw new IndexOutOfBoundsException(String.format("x was %d, which is out of range. Range is 0 to %d", x, width - 1));
} }
...@@ -141,8 +145,13 @@ public class DotsAndBoxesGrid { ...@@ -141,8 +145,13 @@ public class DotsAndBoxesGrid {
} }
// FIXME: You need to throw an exception if the line was already drawn. // FIXME: You need to throw an exception if the line was already drawn.
if (this.getHorizontal(x,y)) {
throw new IllegalStateException(
String.format("This line has already been drawn."));
} else {
this.horizontals[x][y] = true; this.horizontals[x][y] = true;
}
// Try to claim the north or south boxes // Try to claim the north or south boxes
boolean claimN = claimBox(x, y-1, player); boolean claimN = claimBox(x, y-1, player);
...@@ -163,7 +172,7 @@ public class DotsAndBoxesGrid { ...@@ -163,7 +172,7 @@ public class DotsAndBoxesGrid {
* @param y * @param y
* @return true if it completes a box * @return true if it completes a box
*/ */
public boolean drawVertical(int x, int y, int player) { public boolean drawVertical(int x, int y, int player) throws IllegalStateException {
if (x >= width || x < 0) { if (x >= width || x < 0) {
throw new IndexOutOfBoundsException(String.format("x was %d, which is out of range. Range is 0 to %d", x, width)); throw new IndexOutOfBoundsException(String.format("x was %d, which is out of range. Range is 0 to %d", x, width));
} }
...@@ -172,8 +181,13 @@ public class DotsAndBoxesGrid { ...@@ -172,8 +181,13 @@ 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 (this.getVertical(x,y)) {
throw new IllegalStateException(
String.format("This line has already been drawn."));
} else {
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
boolean claimE = claimBox(x, y, player); boolean claimE = claimBox(x, y, player);
boolean claimW = claimBox(x-1, y, player); boolean claimW = claimBox(x-1, y, player);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment