Esempio n. 1
0
  @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
  }
Esempio n. 2
0
  /**
   * 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;
  }
Esempio n. 3
0
 /**
  * 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;
 }
Esempio n. 4
0
 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;
 }
Esempio n. 5
0
  @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());
  }