Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
Loading items

Target

Select target project
  • asegal2/cosc220_assignment2
1 result
Select Git revision
Loading items
Show changes
Commits on Source (3)
......@@ -111,9 +111,11 @@ 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 (this.verticals[x][y] && this.verticals[x+1][y] && this.horizontals[x][y] && this.horizontals[x][y+1]){
return true;
}
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 +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("Attempted redraw of preexisting line"));
}
this.horizontals[x][y] = true;
......@@ -170,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("Attempted redraw of preexisting line"));
}
this.verticals[x][y] = true;
// Try to claim the north or south boxes
......
......@@ -11,8 +11,7 @@ public class Main {
JFrame mainWindow = new JFrame("Dots and Boxes");
DotsAndBoxesGrid grid = new DotsAndBoxesGrid(15, 8, 2);
// FIXME: Update this label to show your name and student number
JLabel label = new JLabel("Name: (Your name and student number goes here)");
JLabel label = new JLabel("Alexander Segal 220252054");
JPanel borderPane = new JPanel(new BorderLayout());
borderPane.add(label, BorderLayout.SOUTH);
......
......@@ -27,5 +27,33 @@ public class DotsAndBoxesGridTest {
assertTrue(true);
}
// FIXME: You need to write tests for the two known bugs in the code.
@Test
public void boxCompleteDetectsCompletedBoxes() {
DotsAndBoxesGrid case1 = new DotsAndBoxesGrid(5, 5, 2);
case1.drawHorizontal(0, 0, 0);
case1.drawVertical(0, 0, 1);
case1.drawHorizontal(0, 1, 0);
case1.drawVertical(1, 0, 1);
assertTrue(case1.boxComplete(0, 0));
}
@Test
public void boxCompleteDetectsIncompleteBoxes() {
DotsAndBoxesGrid case2 = new DotsAndBoxesGrid(5, 5, 2);
case2.drawHorizontal(0, 0, 0);
case2.drawVertical(0, 0, 1);
case2.drawHorizontal(0, 1, 0);
assertFalse(case2.boxComplete(0, 0));
}
@Test
public void drawMethodsDetectRedrawnLines() {
DotsAndBoxesGrid case3 = new DotsAndBoxesGrid(5, 5, 2);
case3.drawHorizontal(0, 0, 0);
case3.drawVertical(0, 0, 1);
assertThrows(IllegalStateException.class, () -> {
case3.drawVertical(0, 0, 1);
});
assertThrows(IllegalStateException.class, () -> {
case3.drawHorizontal(0, 0, 0);
});
}
}