diff --git a/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/.classpath b/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/.classpath new file mode 100644 index 0000000..e446dbd --- /dev/null +++ b/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/.project b/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/.project new file mode 100644 index 0000000..c12f50f --- /dev/null +++ b/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/.project @@ -0,0 +1,17 @@ + + + Assn09_FloodIt + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/.settings/org.eclipse.core.resources.prefs b/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/.settings/org.eclipse.jdt.core.prefs b/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..e71285a --- /dev/null +++ b/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 diff --git a/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/src/FloodIt.java b/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/src/FloodIt.java new file mode 100644 index 0000000..6a184f5 --- /dev/null +++ b/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/src/FloodIt.java @@ -0,0 +1,259 @@ +import java.util.ArrayList; +import javalib.impworld.*; +import java.awt.Color; +import javalib.worldimages.*; +import java.util.Random; + +// Represents a single square of the game area +class Cell { + // In logical coordinates, with the origin at the top-left corner of the screen + int x; + int y; + Color color; + boolean flooded; + // the four adjacent cells to this one + Cell left; + Cell right; + Cell top; + Cell bottom; + + Cell(int x, int y, Color color, boolean flooded, + Cell left, Cell right, Cell top, Cell bottom) { + this.x = x; + this.y = y; + this.color = color; + this.flooded = flooded; + this.left = left; + this.right = right; + this.top = top; + this.bottom = bottom; + } + Cell(int x, int y, Color color) { + this(x, y, color, false, null, null, null, null); + } + + //returns a rectangle image of this cell + WorldImage drawCell(int tileAxis) { + return new RectangleImage( + FloodItWorld.BOARD_SIZE / tileAxis, + FloodItWorld.BOARD_SIZE / tileAxis, + OutlineMode.SOLID, this.color); + } +} + +class Board { + ArrayList cells; + int size; // tiles vert & horz, board is always square + Board(ArrayList cells, int size) { + this.cells = cells; + this.size = size; + } + Board() { + this.size = FloodItWorld.DEFAULT_TILE_COUNT; + generateRandomBoard(new Random()); + makeConnections(); + } + Board(int size) { + this.size = size; + generateRandomBoard(new Random()); + makeConnections(); + } + Board(int size, int seed) { + this.size = size; + generateRandomBoard(new Random(seed)); + makeConnections(); + } + + // generates a random board + void generateRandomBoard(Random rand) { + this.cells = new ArrayList(); + for (int i = 0; i < size * size; i++) { + this.cells.add(new Cell(i % size, i / size, randomColor(rand.nextInt(6)))); + } + } + // returns a random color + Color randomColor(int rand) { + switch (rand) { + case 0: + return Color.red; + case 1: + return Color.yellow; + case 2: + return Color.blue; + case 3: + return Color.pink; + case 4: + return Color.orange; + case 5: + return Color.green; + default: + return Color.black; + } + } + // adds the flooded status and directional connections to each cell + void makeConnections() { + // first (top left / idx 0) cell is always flooded + this.cells.get(0).flooded = true; + for (int i = 0; i < this.cells.size(); i++) { + Cell cell = cells.get(i); + if (cell.x > 0) { + cell.left = this.cells.get(i - 1); + } + if (cell.x < this.size - 1) { + cell.right = this.cells.get(i + 1); + } + if (cell.y > 0) { + cell.top = this.cells.get(i - this.size); + } + if (cell.y < this.size - 1) { + cell.bottom = this.cells.get(i + this.size); + } + } + // floods all tiles where an adjacent tile is flooded and color matches flood + Color floodedColor = this.cells.get(0).color; + for (Cell cell : this.cells) { + if (((cell.left != null && cell.left.flooded) || + (cell.top != null && cell.top.flooded) || + (cell.right != null && cell.right.flooded) || + (cell.bottom != null && cell.bottom.flooded)) && + cell.color.equals(floodedColor)) { + cell.flooded = true; + } + } + } + // returns the cell in provided the position + Cell findCell(Posn pos) { + int cellPxSize = (FloodItWorld.BOARD_SIZE / this.size); + for (Cell cell : this.cells) { + if ((pos.x >= cell.x * cellPxSize && pos.x < (cell.x + 1) * cellPxSize) && + (pos.y >= cell.y * cellPxSize && pos.y < (cell.y + 1) * cellPxSize)) { + return cell; + } + } + throw new IllegalArgumentException("Cannot Place Key Press" + pos.x + " " + pos.y); + + // // !!! something is wrong with my math here and i cant figure it out + // int findX, findY; + // // protect from div 0 + // if (pos.x == 0) { + // findX = 0; + // } else { + // findX = (int) Math.floor(this.size / (int) Math.floor(FloodItWorld.BOARD_SIZE / pos.x)); + // } + // // protect from div 0 + // if (pos.y == 0) { + // findY = 0; + // } else { + // findY = (int) Math.floor(this.size / (int) Math.floor(FloodItWorld.BOARD_SIZE / pos.y)); + // } + // for (Cell cell : this.cells) { + // if (cell.x == findX && cell.y == findY) { + // return cell; + // } + // } + // throw new IllegalArgumentException("Cannot Place Key Press" + findX + " " + findY); + } + // sets all flooded tiles to the provided color + void updateColor(Color color) { + for (Cell cell : this.cells) { + if (cell.flooded) { + cell.color = color; + } + } + } + // sets flooded status of all tiles of the provided color and + // adjacent to a flooded tile + void updateFloodStatus(Color color) { + for (Cell cell : this.cells) { + if (((cell.left != null && cell.left.flooded) || + (cell.right != null && cell.right.flooded) || + (cell.top != null && cell.top.flooded) || + (cell.bottom != null && cell.bottom.flooded)) && + cell.color == color) { + cell.flooded = true; + } + } + } + // updates the color of flooded cells to match clicked cell + // any cells with the same color as clicked will become flooded + void floodCells(Posn pos) { + Color floodColor = this.findCell(pos).color; + this.updateColor(floodColor); + this.updateFloodStatus(floodColor); + } + // returns a world image of all the cells stitched together + WorldScene drawBoard(WorldScene scene) { + int tileLength = FloodItWorld.BOARD_SIZE / this.size; + for (Cell cell : this.cells) { + scene.placeImageXY( + cell.drawCell(this.size), + (cell.x * tileLength) + (tileLength / 2), + (cell.y * tileLength) + (tileLength / 2)); + } + return scene; + } +} + +class FloodItWorld extends World { + // constants + static int BOARD_SIZE = 256; + static int DEFAULT_TILE_COUNT = 16; + static Color TEXT_COLOR = Color.black; + // All the cells of the game + Board board; + int score; + int time; + + FloodItWorld(Board board) { + this.board = board; + this.score = 0; + this.time = 0; + } + FloodItWorld(int seed) { + this(new Board(DEFAULT_TILE_COUNT, seed)); + } + FloodItWorld(int size, int seed) { + this(new Board(size, seed)); + } + FloodItWorld() { + this(new Board()); + } + + // resets the game to default start conditions + void reset() { + this.board = new Board(); + this.score = 0; + this.time = 0; + } + + // draws the game scene + public WorldScene makeScene() { + WorldScene scene = new WorldScene( + FloodItWorld.BOARD_SIZE, + FloodItWorld.BOARD_SIZE); + scene = this.board.drawBoard(scene); + scene.placeImageXY( + new TextImage("" + this.score, FloodItWorld.TEXT_COLOR), + 10, 10); + scene.placeImageXY( + new TextImage(this.time / 3600 + ":" + this.time / 60 + ":" + this.time % 60, + FloodItWorld.TEXT_COLOR), + BOARD_SIZE - 30, 10); + return scene; + } + // floods the board with the color at the location clicked + public void onMouseClicked(Posn pos) { + this.board.floodCells(pos); + this.score++; + } + // reset game when r is pressed + public void onKeyEvent(String k) { + if (k.equals("r")) { + reset(); + } + } + // increments the time counter every second + public void onTick() { + this.time++; + } +} diff --git a/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/src/FloodItExamples.java b/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/src/FloodItExamples.java new file mode 100644 index 0000000..4341c74 --- /dev/null +++ b/completedwork/core_programming/02_classbased_design/Workspace/Assn09_FloodIt/src/FloodItExamples.java @@ -0,0 +1,247 @@ +import tester.Tester; +import java.awt.Color; +import java.util.ArrayList; +import java.util.Arrays; +import javalib.impworld.World; +import javalib.worldimages.Posn; + +class Examples { + Cell cellSmall1; + Cell cellSmall2; + Cell cellSmall3; + Cell cellSmall4; + Board boardTest1; + Board boardTest2; + Board boardTest3; + Board boardTestSmall; + Board boardSolved; + Board boardRandom; + FloodItWorld gameBoard; + FloodItWorld gameRandom; + FloodItWorld gameRandom2; + void init() { + // @formatter:off + boardTest1 = new Board(new ArrayList(Arrays.asList( + new Cell(0, 0, Color.red ), new Cell(1, 0, Color.blue), new Cell(2, 0, Color.blue), new Cell(3, 0, Color.blue), + new Cell(0, 1, Color.blue), new Cell(1, 1, Color.blue), new Cell(2, 1, Color.blue), new Cell(3, 1, Color.blue), + new Cell(0, 2, Color.blue), new Cell(1, 2, Color.blue), new Cell(2, 2, Color.blue), new Cell(3, 2, Color.blue), + new Cell(0, 3, Color.blue), new Cell(1, 3, Color.blue), new Cell(2, 3, Color.blue), new Cell(3, 3, Color.blue))), + 4); + boardTest2 = new Board(new ArrayList(Arrays.asList( + new Cell(0, 0, Color.red ), new Cell(1, 0, Color.blue), new Cell(2, 0, Color.blue), new Cell(3, 0, Color.blue), + new Cell(0, 1, Color.blue), new Cell(1, 1, Color.blue), new Cell(2, 1, Color.blue), new Cell(3, 1, Color.blue), + new Cell(0, 2, Color.blue), new Cell(1, 2, Color.blue), new Cell(2, 2, Color.blue), new Cell(3, 2, Color.blue), + new Cell(0, 3, Color.blue), new Cell(1, 3, Color.blue), new Cell(2, 3, Color.blue), new Cell(3, 3, Color.green))), + 4); + boardTest3 = new Board(new ArrayList(Arrays.asList( + new Cell(0, 0, Color.blue), new Cell(1, 0, Color.blue), new Cell(2, 0, Color.blue), new Cell(3, 0, Color.blue), + new Cell(0, 1, Color.blue), new Cell(1, 1, Color.blue), new Cell(2, 1, Color.blue), new Cell(3, 1, Color.blue), + new Cell(0, 2, Color.blue), new Cell(1, 2, Color.blue), new Cell(2, 2, Color.blue), new Cell(3, 2, Color.blue), + new Cell(0, 3, Color.blue), new Cell(1, 3, Color.blue), new Cell(2, 3, Color.blue), new Cell(3, 3, Color.green))), + 4); + boardSolved = new Board(new ArrayList(Arrays.asList( + new Cell(0, 0, Color.blue), new Cell(1, 0, Color.blue), new Cell(2, 0, Color.blue), new Cell(3, 0, Color.blue), + new Cell(0, 1, Color.blue), new Cell(1, 1, Color.blue), new Cell(2, 1, Color.blue), new Cell(3, 1, Color.blue), + new Cell(0, 2, Color.blue), new Cell(1, 2, Color.blue), new Cell(2, 2, Color.blue), new Cell(3, 2, Color.blue), + new Cell(0, 3, Color.blue), new Cell(1, 3, Color.blue), new Cell(2, 3, Color.blue), new Cell(3, 3, Color.blue))), + 4); + // x y color flooded left right top bottom + cellSmall1 = new Cell(0, 0, Color.red , true, null, cellSmall2, null, cellSmall3); + cellSmall2 = new Cell(1, 0, Color.blue, true, cellSmall1, null, null, cellSmall4 ); + cellSmall3 = new Cell(0, 1, Color.blue, true, null, cellSmall4, cellSmall1, null ); + cellSmall4 = new Cell(1, 1, Color.blue, true, cellSmall3, null, cellSmall2, null ); + boardTestSmall = new Board(new ArrayList(Arrays.asList( + cellSmall1, cellSmall2, cellSmall3, cellSmall4)), + 2); + // @formatter:on + gameBoard = new FloodItWorld(boardTest1); + // Should make the same boards + boardRandom = new Board(16, 314); + gameRandom = new FloodItWorld(314); + gameRandom2 = new FloodItWorld(4, 314); + } + + void testConstructor(Tester t) { + init(); + t.checkExpect(boardTest1.size, 4); + t.checkExpect(boardRandom.size, 16); + t.checkExpect(gameRandom2.board.size, 4); + t.checkExpect(gameBoard.board, boardTest1); + t.checkExpect(gameRandom.board, boardRandom); + t.checkExpect(boardRandom.cells.size(), 256); // 16*16 + t.checkExpect(gameRandom2.board.cells.size(), 16); // 4*4 + } + void testRandomColor(Tester t) { + init(); + t.checkExpect(boardTest1.randomColor(0), Color.red); + t.checkExpect(boardTest1.randomColor(1), Color.yellow); + t.checkExpect(boardTest1.randomColor(2), Color.blue); + t.checkExpect(boardTest1.randomColor(3), Color.pink); + t.checkExpect(boardTest1.randomColor(4), Color.orange); + t.checkExpect(boardTest1.randomColor(5), Color.green); + t.checkExpect(boardTest1.randomColor(100), Color.black); + } + void testMakeConnection(Tester t) { + init(); + this.boardTest1.makeConnections(); + t.checkExpect(boardTest1.cells.get(0).left, null); + t.checkExpect(boardTest1.cells.get(0).right, boardTest1.cells.get(1)); + t.checkExpect(boardTest1.cells.get(0).top, null); + t.checkExpect(boardTest1.cells.get(0).bottom, boardTest1.cells.get(4)); + + t.checkExpect(boardTest1.cells.get(6).left, boardTest1.cells.get(5)); + t.checkExpect(boardTest1.cells.get(6).right, boardTest1.cells.get(7)); + t.checkExpect(boardTest1.cells.get(6).top, boardTest1.cells.get(2)); + t.checkExpect(boardTest1.cells.get(6).bottom, boardTest1.cells.get(10)); + + t.checkExpect(boardTest1.cells.get(4).left, null); + t.checkExpect(boardTest1.cells.get(7).right, null); + t.checkExpect(boardTest1.cells.get(3).top, null); + t.checkExpect(boardTest1.cells.get(13).bottom, null); + + t.checkExpect(boardTest1.cells.get(15).left, boardTest1.cells.get(14)); + t.checkExpect(boardTest1.cells.get(15).right, null); + t.checkExpect(boardTest1.cells.get(15).top, boardTest1.cells.get(11)); + t.checkExpect(boardTest1.cells.get(15).bottom, null); + + t.checkExpect(boardTest1.cells.get(0).flooded, true); + t.checkExpect(boardTest1.cells.get(1).flooded, false); + t.checkExpect(boardTest1.cells.get(3).flooded, false); + t.checkExpect(boardTest1.cells.get(7).flooded, false); + t.checkExpect(boardTest1.cells.get(11).flooded, false); + t.checkExpect(boardTest1.cells.get(15).flooded, false); + + this.boardTest3.makeConnections(); + t.checkExpect(boardTest3.cells.get(0).flooded, true); + t.checkExpect(boardTest3.cells.get(1).flooded, true); + t.checkExpect(boardTest3.cells.get(3).flooded, true); + t.checkExpect(boardTest3.cells.get(5).flooded, true); + t.checkExpect(boardTest3.cells.get(8).flooded, true); + t.checkExpect(boardTest3.cells.get(11).flooded, true); + t.checkExpect(boardTest3.cells.get(14).flooded, true); + t.checkExpect(boardTest3.cells.get(15).flooded, false); + } + void testFindCell(Tester t) { + init(); + t.checkExpect(this.boardTest1.findCell(new Posn(0, 0)), + this.boardTest1.cells.get(0)); + t.checkExpect(this.boardTest1.findCell(new Posn(65, 0)), + this.boardTest1.cells.get(1)); + t.checkExpect(this.boardTest1.findCell(new Posn(0, 65)), + this.boardTest1.cells.get(4)); + t.checkExpect(this.boardTest1.findCell(new Posn(127, 127)), + this.boardTest1.cells.get(5)); + t.checkExpect(this.boardTest1.findCell(new Posn(254, 254)), + this.boardTest1.cells.get(15)); + } + void testUpdateColor(Tester t) { + init(); + t.checkExpect(this.boardTestSmall.cells.get(0).color, Color.red); + this.boardTestSmall.updateColor(Color.blue); + t.checkExpect(this.boardTestSmall.cells.get(0).color, Color.blue); + + init(); + this.cellSmall2.color = Color.red; + t.checkExpect(this.boardTestSmall.cells.get(1).color, Color.red); + this.boardTestSmall.updateColor(Color.blue); + t.checkExpect(this.boardTestSmall.cells.get(1).color, Color.blue); + + init(); + this.cellSmall3.color = Color.red; + t.checkExpect(this.boardTestSmall.cells.get(2).color, Color.red); + this.boardTestSmall.updateColor(Color.blue); + t.checkExpect(this.boardTestSmall.cells.get(2).color, Color.blue); + + init(); + this.cellSmall4.color = Color.red; + t.checkExpect(this.boardTestSmall.cells.get(3).color, Color.red); + this.boardTestSmall.updateColor(Color.blue); + t.checkExpect(this.boardTestSmall.cells.get(3).color, Color.blue); + + } + void testUpdateFloodStatus(Tester t) { + init(); + this.boardTest1.makeConnections(); + t.checkExpect(this.boardTest1.cells.get(0).flooded, true); + t.checkExpect(this.boardTest1.cells.get(1).flooded, false); + this.boardTest1.updateColor(Color.blue); + this.boardTest1.updateFloodStatus(Color.blue); + t.checkExpect(this.boardTest1.cells.get(0).flooded, true); + t.checkExpect(this.boardTest1.cells.get(1).flooded, true); + t.checkExpect(this.boardTest1.cells.get(11).flooded, true); + t.checkExpect(this.boardTest1.cells.get(15).flooded, true); + + init(); + this.boardTest2.makeConnections(); + t.checkExpect(this.boardTest2.cells.get(0).flooded, true); + t.checkExpect(this.boardTest2.cells.get(1).flooded, false); + this.boardTest2.updateColor(Color.green); + this.boardTest2.updateFloodStatus(Color.green); + t.checkExpect(this.boardTest2.cells.get(0).flooded, true); + t.checkExpect(this.boardTest2.cells.get(1).flooded, false); + t.checkExpect(this.boardTest2.cells.get(11).flooded, false); + t.checkExpect(this.boardTest2.cells.get(15).flooded, false); + this.boardTest2.updateColor(Color.blue); + this.boardTest2.updateFloodStatus(Color.blue); + t.checkExpect(this.boardTest2.cells.get(0).flooded, true); + t.checkExpect(this.boardTest2.cells.get(1).flooded, true); + t.checkExpect(this.boardTest2.cells.get(11).flooded, true); + t.checkExpect(this.boardTest2.cells.get(15).flooded, false); + } + void testFloodCells(Tester t) { + init(); + // @formatter:off + this.boardTest1.makeConnections(); + this.boardTest1.floodCells(new Posn(0,0)); + Board testAns1 = new Board(new ArrayList(Arrays.asList( + new Cell(0, 0, Color.red ), new Cell(1, 0, Color.blue), new Cell(2, 0, Color.blue), new Cell(3, 0, Color.blue), + new Cell(0, 1, Color.blue), new Cell(1, 1, Color.blue), new Cell(2, 1, Color.blue), new Cell(3, 1, Color.blue), + new Cell(0, 2, Color.blue), new Cell(1, 2, Color.blue), new Cell(2, 2, Color.blue), new Cell(3, 2, Color.blue), + new Cell(0, 3, Color.blue), new Cell(1, 3, Color.blue), new Cell(2, 3, Color.blue), new Cell(3, 3, Color.blue))), + 4); + testAns1.makeConnections(); + t.checkExpect(this.boardTest1, testAns1); + + init(); + this.boardTest1.makeConnections(); + Board testAns2 = new Board(new ArrayList(Arrays.asList( + new Cell(0, 0, Color.blue ), new Cell(1, 0, Color.blue), new Cell(2, 0, Color.blue), new Cell(3, 0, Color.blue), + new Cell(0, 1, Color.blue), new Cell(1, 1, Color.blue), new Cell(2, 1, Color.blue), new Cell(3, 1, Color.blue), + new Cell(0, 2, Color.blue), new Cell(1, 2, Color.blue), new Cell(2, 2, Color.blue), new Cell(3, 2, Color.blue), + new Cell(0, 3, Color.blue), new Cell(1, 3, Color.blue), new Cell(2, 3, Color.blue), new Cell(3, 3, Color.blue))), + 4); + testAns2.makeConnections(); + this.boardTest1.floodCells(new Posn(128, 128)); + t.checkExpect(this.boardTest1, testAns2); + + init(); + this.boardTest2.makeConnections(); + this.boardTest2.floodCells(new Posn(255, 255)); + Board testAns3 = new Board(new ArrayList(Arrays.asList( + new Cell(0, 0, Color.green), new Cell(1, 0, Color.blue), new Cell(2, 0, Color.blue), new Cell(3, 0, Color.blue), + new Cell(0, 1, Color.blue), new Cell(1, 1, Color.blue), new Cell(2, 1, Color.blue), new Cell(3, 1, Color.blue), + new Cell(0, 2, Color.blue), new Cell(1, 2, Color.blue), new Cell(2, 2, Color.blue), new Cell(3, 2, Color.blue), + new Cell(0, 3, Color.blue), new Cell(1, 3, Color.blue), new Cell(2, 3, Color.blue), new Cell(3, 3, Color.green))), + 4); + testAns3.makeConnections(); + t.checkExpect(this.boardTest1, testAns3); + + init(); + this.boardTest3.makeConnections(); + this.boardTest3.floodCells(new Posn(224, 224)); + Board testAns4 = new Board(new ArrayList(Arrays.asList( + new Cell(0, 0, Color.green), new Cell(1, 0, Color.green), new Cell(2, 0, Color.green), new Cell(3, 0, Color.green), + new Cell(0, 1, Color.green), new Cell(1, 1, Color.green), new Cell(2, 1, Color.green), new Cell(3, 1, Color.green), + new Cell(0, 2, Color.green), new Cell(1, 2, Color.green), new Cell(2, 2, Color.green), new Cell(3, 2, Color.green), + new Cell(0, 3, Color.green), new Cell(1, 3, Color.green), new Cell(2, 3, Color.green), new Cell(3, 3, Color.green))), + 4); + testAns4.makeConnections(); + t.checkExpect(this.boardTest3, testAns4); + // @formatter:on + } + void testDrawBoard(Tester t) { + init(); + World g = new FloodItWorld(boardRandom); + g.bigBang(256, 256, 1); + } +}