@Test public void testKing() { Board b = new Board(true); Piece water = new Piece(false, b, 2, 2, "bomb"); Piece fire = new Piece(true, b, 1, 1, "pawn"); Piece fire2 = new Piece(true, b, 2, 6, "shield"); b.place(water, 2, 2); b.place(fire, 1, 1); b.place(fire2, 2, 6); assertEquals(false, water.isKing()); assertEquals(false, fire2.isKing()); assertEquals(fire, b.pieceAt(1, 1)); fire2.move(3, 7); assertEquals(true, fire2.isKing()); assertEquals(true, fire2.isFire()); assertEquals(fire2, b.pieceAt(3, 7)); water.move(0, 0); assertEquals(true, water.isKing()); assertEquals(true, fire2.isKing()); assertEquals(null, b.pieceAt(1, 1)); assertEquals(null, b.pieceAt(0, 0)); b.select(3, 7); assertEquals(true, b.canSelect(4, 6)); // fire can now move down assertEquals(false, b.canSelect(4, 8)); // out of bounds }
/** * Rates a board by the position advantage * * @param b * @param color * @return */ private int h2(Board b, char color) { int kingVal = 2; int result = 0; int[][] posVals = { {2, 1, 1, 1, 1, 1, 1, 2}, {2, 1, 1, 1, 1, 1, 1, 2}, {2, 1, 1, 1, 1, 1, 1, 2}, {2, 1, 1, 1, 1, 1, 1, 2}, {2, 1, 1, 1, 1, 1, 1, 2}, {2, 1, 1, 1, 1, 1, 1, 2}, {2, 1, 1, 1, 1, 1, 1, 2}, {2, 1, 1, 1, 1, 1, 1, 2} }; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { Piece p = b.getPiece(i, j); int pVal = 0; if (p.getColor() == color) pVal = posVals[i][j]; else if (p.getColor() != '-') pVal = -posVals[i][j]; if (p.isKing()) pVal = pVal * kingVal; result += pVal; } } return result; }
/** * Rates a board by the number of kings. * * @param b * @return */ private int h1(Board b, char color) { int result = 0; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { Piece p = b.getPiece(i, j); if (p.getColor() == color) { result++; if (p.isKing()) result++; } else if (p.getColor() != '-') { result--; if (p.isKing()) result--; } } } return result; }
private int h4(Board b, char color) { int result = 0; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { Piece p = b.getPiece(i, j); if (p.getColor() == color && p.isKing() == true) { result++; } } } return result; }
@Test public void testPieces() { Board b = new Board(true); Piece fire = new Piece(true, b, 0, 0, "pawn"); Piece water = new Piece(false, b, 1, 1, "shield"); assertEquals(true, fire.isFire()); assertEquals(false, water.isFire()); assertEquals(false, fire.isShield()); assertEquals(true, water.isShield()); assertEquals(false, fire.isBomb()); assertEquals(false, water.isBomb()); assertEquals(0, fire.side()); assertEquals(1, water.side()); Piece fire2 = new Piece(true, b, 6, 6, "bomb"); // move makes it a king, not place b.place(fire2, 6, 6); fire2.move(7, 7); assertEquals(true, fire2.isKing()); assertEquals(false, water.isKing()); }