示例#1
0
    def test_blackpawn_valid_move_jump(self):
        pawn = pieces.Pawn(False, 3, 1)

        empty_square1 = pieces.EmptySquare(4, 1)    # down
        empty_square2 = pieces.EmptySquare(5, 1)    # down

        self.assertTrue(pawn.valid_move(empty_square1))
        self.assertTrue(pawn.valid_move(empty_square2))
示例#2
0
    def test_whitepawn_valid_move_jump(self):
        pawn = pieces.Pawn(True, 12, 1)

        empty_square1 = pieces.EmptySquare(11, 1)   # up
        empty_square2 = pieces.EmptySquare(10, 1)   # up

        self.assertTrue(pawn.valid_move(empty_square1))
        self.assertTrue(pawn.valid_move(empty_square2))
示例#3
0
    def test_whiterook_invalid_move_jump(self):
        rook = pieces.Rook(True, 7, 7)

        empty_square1 = pieces.EmptySquare(5, 5)     # up_rigth
        empty_square2 = pieces.EmptySquare(9, 9)     # down_right
        empty_square3 = pieces.EmptySquare(9, 5)     # down_left
        empty_square4 = pieces.EmptySquare(3, 3)     # up_left

        self.assertFalse(rook.valid_move(empty_square1))
        self.assertFalse(rook.valid_move(empty_square2))
        self.assertFalse(rook.valid_move(empty_square3))
        self.assertFalse(rook.valid_move(empty_square4))
示例#4
0
    def test_whitebishop_valid_move_jump(self):
        bishop = pieces.Bishop(True, 7, 7)

        empty_square1 = pieces.EmptySquare(3, 3)        # up_left
        empty_square2 = pieces.EmptySquare(5, 9)        # up_right
        empty_square3 = pieces.EmptySquare(11, 11)      # down_right
        empty_square4 = pieces.EmptySquare(8, 6)        # down_left

        self.assertTrue(bishop.valid_move(empty_square1))
        self.assertTrue(bishop.valid_move(empty_square2))
        self.assertTrue(bishop.valid_move(empty_square3))
        self.assertTrue(bishop.valid_move(empty_square4))
示例#5
0
    def test_whitequeen_invalid_move_jump(self):
        queen = pieces.Queen(True, 8, 8)

        empty_square1 = pieces.EmptySquare(6, 9)     
        empty_square2 = pieces.EmptySquare(10, 9)    
        empty_square3 = pieces.EmptySquare(10, 7)    
        empty_square4 = pieces.EmptySquare(6, 7)  

        self.assertFalse(queen.valid_move(empty_square1))
        self.assertFalse(queen.valid_move(empty_square2))
        self.assertFalse(queen.valid_move(empty_square3))
        self.assertFalse(queen.valid_move(empty_square4))
示例#6
0
    def test_whitehorse_valid_move_jump(self):
        horse = pieces.Horse(True, 8, 8)

        empty_square1 = pieces.EmptySquare(6, 9)     # L up_right
        empty_square2 = pieces.EmptySquare(10, 9)    # L down_right
        empty_square3 = pieces.EmptySquare(10, 7)    # L down_left
        empty_square4 = pieces.EmptySquare(6, 7)     # L up_left

        self.assertTrue(horse.valid_move(empty_square1))
        self.assertTrue(horse.valid_move(empty_square2))
        self.assertTrue(horse.valid_move(empty_square3))
        self.assertTrue(horse.valid_move(empty_square4))
示例#7
0
    def test_whiterook_valid_move_jump(self):
        rook = pieces.Rook(True, 7, 7)

        empty_square1 = pieces.EmptySquare(0, 7)     # up
        empty_square2 = pieces.EmptySquare(7, 5)     # right
        empty_square3 = pieces.EmptySquare(12, 7)    # down
        empty_square4 = pieces.EmptySquare(7, 1)     # left

        self.assertTrue(rook.valid_move(empty_square1))
        self.assertTrue(rook.valid_move(empty_square2))
        self.assertTrue(rook.valid_move(empty_square3))
        self.assertTrue(rook.valid_move(empty_square4))
示例#8
0
    def test_whitebishop_invalid_move_jump(self):
        bishop = pieces.Bishop(True, 7, 7)

        empty_square1 = pieces.EmptySquare(6, 7)     # up
        empty_square2 = pieces.EmptySquare(7, 9)     # right
        empty_square3 = pieces.EmptySquare(11, 7)    # down
        empty_square4 = pieces.EmptySquare(7, 1)     # left

        self.assertFalse(bishop.valid_move(empty_square1))
        self.assertFalse(bishop.valid_move(empty_square2))
        self.assertFalse(bishop.valid_move(empty_square3))
        self.assertFalse(bishop.valid_move(empty_square4))
示例#9
0
    def test_jump_rival_whitepawn(self):
        factor = -1
        white_pawn1 = pieces.Pawn(True, 12, 6)  # center-front
        white_pawn2 = pieces.Pawn(True, 13, 6)  # center-back
        white_pawn3 = pieces.Pawn(True, 12, 2)  # side-front
        white_pawn4 = pieces.Pawn(True, 12, 12)  # side-front
        white_pawn5 = pieces.Pawn(True, 13, 2)  # side-back
        white_pawn6 = pieces.Pawn(True, 13, 12)  # side-back
        white_pawn7 = pieces.Pawn(True, 12, 9)  # king-front
        white_pawn8 = pieces.Pawn(True, 13, 9)  # king-back

        square1 = pieces.EmptySquare(11, 6)
        square2 = pieces.EmptySquare(12, 6)
        square3 = pieces.EmptySquare(11, 2)
        square4 = pieces.EmptySquare(11, 12)
        square5 = pieces.EmptySquare(12, 2)
        square6 = pieces.EmptySquare(12, 12)
        square7 = pieces.EmptySquare(11, 9)
        square8 = pieces.EmptySquare(12, 9)

        self.assertEqual(-62.29, score.jump_pawn(white_pawn1, square1, factor))
        self.assertEqual(-61.22, score.jump_pawn(white_pawn2, square2, factor))
        self.assertEqual(-60.29, score.jump_pawn(white_pawn3, square3, factor))
        self.assertEqual(-60.29, score.jump_pawn(white_pawn4, square4, factor))
        self.assertEqual(-60.22, score.jump_pawn(white_pawn5, square5, factor))
        self.assertEqual(-60.22, score.jump_pawn(white_pawn6, square6, factor))
        self.assertEqual(-62.29, score.jump_pawn(white_pawn7, square7, factor))
        self.assertEqual(-62.22, score.jump_pawn(white_pawn8, square8, factor))
示例#10
0
    def test_jump_blackpawn(self):
        factor = 1
        black_pawn1 = pieces.Pawn(False, 3, 6)  # center-front
        black_pawn2 = pieces.Pawn(False, 2, 6)  # center-back
        black_pawn3 = pieces.Pawn(False, 3, 2)  # side-front
        black_pawn4 = pieces.Pawn(False, 3, 12)  # side-front
        black_pawn5 = pieces.Pawn(False, 2, 2)  # side-back
        black_pawn6 = pieces.Pawn(False, 2, 12)  # side-back
        black_pawn7 = pieces.Pawn(False, 3, 9)  # king-front
        black_pawn8 = pieces.Pawn(False, 2, 9)  # king-back

        square1 = pieces.EmptySquare(4, 6)
        square2 = pieces.EmptySquare(3, 6)
        square3 = pieces.EmptySquare(4, 2)
        square4 = pieces.EmptySquare(4, 12)
        square5 = pieces.EmptySquare(3, 2)
        square6 = pieces.EmptySquare(3, 12)
        square7 = pieces.EmptySquare(4, 9)
        square8 = pieces.EmptySquare(3, 9)

        self.assertEqual(62.29, score.jump_pawn(black_pawn1, square1, factor))
        self.assertEqual(61.22, score.jump_pawn(black_pawn2, square2, factor))
        self.assertEqual(60.29, score.jump_pawn(black_pawn3, square3, factor))
        self.assertEqual(60.29, score.jump_pawn(black_pawn4, square4, factor))
        self.assertEqual(60.22, score.jump_pawn(black_pawn5, square5, factor))
        self.assertEqual(60.22, score.jump_pawn(black_pawn6, square6, factor))
        self.assertEqual(62.29, score.jump_pawn(black_pawn7, square7, factor))
        self.assertEqual(62.22, score.jump_pawn(black_pawn8, square8, factor))
示例#11
0
    def complete_matrix_pieces(self):

        for row, pieces_row in enumerate(self.matrix):
            for col, piece in enumerate(pieces_row):
                # Creates a list with black pieces
                if piece == '♟':
                    black_pawn = pieces.Pawn(False, row, col)
                    self.matrix_pieces[row][col] = black_pawn
                elif piece == '♞':
                    black_horse = pieces.Horse(False, row, col)
                    self.matrix_pieces[row][col] = black_horse
                elif piece == '♝':
                    black_bishop = pieces.Bishop(False, row, col)
                    self.matrix_pieces[row][col] = black_bishop
                elif piece == '♜':
                    black_rook = pieces.Rook(False, row, col)
                    self.matrix_pieces[row][col] = black_rook
                elif piece == '♛':
                    black_queen = pieces.Queen(False, row, col)
                    self.matrix_pieces[row][col] = black_queen
                elif piece == '♚':
                    black_king = pieces.King(False, row, col)
                    self.matrix_pieces[row][col] = black_king

                # Creates a list with white pieces
                elif piece == '♙':
                    white_pawn = pieces.Pawn(True, row, col)
                    self.matrix_pieces[row][col] = white_pawn
                elif piece == '♘':
                    white_horse = pieces.Horse(True, row, col)
                    self.matrix_pieces[row][col] = white_horse
                elif piece == '♗':
                    white_bishop = pieces.Bishop(True, row, col)
                    self.matrix_pieces[row][col] = white_bishop
                elif piece == '♖':
                    white_rook = pieces.Rook(True, row, col)
                    self.matrix_pieces[row][col] = white_rook
                elif piece == '♕':
                    white_queen = pieces.Queen(True, row, col)
                    self.matrix_pieces[row][col] = white_queen
                elif piece == '♔':
                    white_king = pieces.King(True, row, col)
                    self.matrix_pieces[row][col] = white_king

                # Creates a list with empty squares
                else:
                    empty_square = pieces.EmptySquare(row, col)
                    self.matrix_pieces[row][col] = empty_square
示例#12
0
def evaluate_moves(actual_board, actual_score, color):
    move_score = ([])
    next_score = score.Score()

    for s in actual_score.play_moves:
        if s['score'] > 0:
            next_board = deepcopy(actual_board)
            next_board.matrix_pieces[s['to_row']][s['to_col']] = next_board.matrix_pieces[s['from_row']][s['from_col']]
            next_board.matrix_pieces[s['from_row']][s['from_col']] = pieces.EmptySquare(s['from_row'],s['from_col'])
            next_score = scan_posible_moves(next_board, color)
            
            max_move_now, _ = minimax(actual_score)
            max_move, min_move = minimax(next_score)
            points = s['score'] * 2 + max_move['score'] + min_move['score']
            move_score.append([s, round(points, 2)])

    return move_score
示例#13
0
    def test_whitekking_valid_move_jump(self):
        king = pieces.King(True, 8, 8)

        empty_square1 = pieces.EmptySquare(7, 8)     # up
        empty_square2 = pieces.EmptySquare(7, 9)     # up_right
        empty_square3 = pieces.EmptySquare(8, 9)     # right
        empty_square4 = pieces.EmptySquare(9, 9)     # down_right
        empty_square5 = pieces.EmptySquare(9, 8)    # down
        empty_square6 = pieces.EmptySquare(9, 7)    # down_left
        empty_square7 = pieces.EmptySquare(8, 7)     # left
        empty_square8 = pieces.EmptySquare(7, 7)     # up_left

        self.assertTrue(king.valid_move(empty_square1))
        self.assertTrue(king.valid_move(empty_square2))
        self.assertTrue(king.valid_move(empty_square3))
        self.assertTrue(king.valid_move(empty_square4))
        self.assertTrue(king.valid_move(empty_square5))
        self.assertTrue(king.valid_move(empty_square6))
        self.assertTrue(king.valid_move(empty_square7))
        self.assertTrue(king.valid_move(empty_square8))
示例#14
0
    def test_blackking_invalid_move_jump(self):
        king = pieces.King(False, 8, 8)

        empty_square1 = pieces.EmptySquare(5, 8)     # up
        empty_square2 = pieces.EmptySquare(6, 10)    # up_right
        empty_square3 = pieces.EmptySquare(8, 10)    # right
        empty_square4 = pieces.EmptySquare(11, 11)   # down_right
        empty_square5 = pieces.EmptySquare(12, 8)    # down
        empty_square6 = pieces.EmptySquare(11, 5)    # down_left
        empty_square7 = pieces.EmptySquare(8, 5)     # left
        empty_square8 = pieces.EmptySquare(6, 6)     # up_left

        self.assertFalse(king.valid_move(empty_square1))
        self.assertFalse(king.valid_move(empty_square2))
        self.assertFalse(king.valid_move(empty_square3))
        self.assertFalse(king.valid_move(empty_square4))
        self.assertFalse(king.valid_move(empty_square5))
        self.assertFalse(king.valid_move(empty_square6))
        self.assertFalse(king.valid_move(empty_square7))
        self.assertFalse(king.valid_move(empty_square8))
示例#15
0
    def test_whitehorse_invalid_move_jump(self):
        horse = pieces.Horse(True, 8, 8)

        empty_square1 = pieces.EmptySquare(7, 8)     # up
        empty_square2 = pieces.EmptySquare(7, 9)     # up_right
        empty_square3 = pieces.EmptySquare(8, 9)     # right
        empty_square4 = pieces.EmptySquare(9, 9)     # dow_right
        empty_square5 = pieces.EmptySquare(9, 8)     # down
        empty_square6 = pieces.EmptySquare(9, 7)     # down_left
        empty_square7 = pieces.EmptySquare(8, 7)     # left
        empty_square8 = pieces.EmptySquare(6, 6)     # up_left

        self.assertFalse(horse.valid_move(empty_square1))
        self.assertFalse(horse.valid_move(empty_square2))
        self.assertFalse(horse.valid_move(empty_square3))
        self.assertFalse(horse.valid_move(empty_square4))
        self.assertFalse(horse.valid_move(empty_square5))
        self.assertFalse(horse.valid_move(empty_square6))
        self.assertFalse(horse.valid_move(empty_square7))
        self.assertFalse(horse.valid_move(empty_square8))
示例#16
0
    def test_whitekqueen_valid_move_jump(self):
        queen = pieces.Queen(True, 8, 8)

        empty_square1 = pieces.EmptySquare(1, 8)     # up
        empty_square2 = pieces.EmptySquare(5, 11)    # up_right
        empty_square3 = pieces.EmptySquare(8, 15)    # right
        empty_square4 = pieces.EmptySquare(11, 11)   # down_right
        empty_square5 = pieces.EmptySquare(12, 8)    # down
        empty_square6 = pieces.EmptySquare(10, 6)   # down_left
        empty_square7 = pieces.EmptySquare(8, 3)     # left
        empty_square8 = pieces.EmptySquare(5, 5)     # up_left

        self.assertTrue(queen.valid_move(empty_square1))
        self.assertTrue(queen.valid_move(empty_square2))
        self.assertTrue(queen.valid_move(empty_square3))
        self.assertTrue(queen.valid_move(empty_square4))
        self.assertTrue(queen.valid_move(empty_square5))
        self.assertTrue(queen.valid_move(empty_square6))
        self.assertTrue(queen.valid_move(empty_square7))
        self.assertTrue(queen.valid_move(empty_square8))    
示例#17
0
    def test_blackpawn_invalid_move_jump(self):
        pawn = pieces.Pawn(False, 3, 1)

        empty_square1 = pieces.EmptySquare(2, 1)    # up
        empty_square2 = pieces.EmptySquare(2, 2)    # up_right
        empty_square3 = pieces.EmptySquare(3, 2)    # right
        empty_square4 = pieces.EmptySquare(4, 2)    # down_right
        empty_square5 = pieces.EmptySquare(4, 0)    # down_left
        empty_square6 = pieces.EmptySquare(3, 0)    # left
        empty_square7 = pieces.EmptySquare(2, 0)    # up_left

        self.assertFalse(pawn.valid_move(empty_square1))
        self.assertFalse(pawn.valid_move(empty_square2))
        self.assertFalse(pawn.valid_move(empty_square3))
        self.assertFalse(pawn.valid_move(empty_square4))
        self.assertFalse(pawn.valid_move(empty_square5))
        self.assertFalse(pawn.valid_move(empty_square6))
        self.assertFalse(pawn.valid_move(empty_square7))
示例#18
0
    def test_whitepawn_invalid_move_jump(self):
        pawn = pieces.Pawn(True, 12, 1)

        empty_square1 = pieces.EmptySquare(11, 2)   # up_right
        empty_square2 = pieces.EmptySquare(12, 2)   # rigth
        empty_square3 = pieces.EmptySquare(13, 2)   # down_right    
        empty_square4 = pieces.EmptySquare(13, 1)   # down
        empty_square5 = pieces.EmptySquare(13, 0)   # down_left
        empty_square6 = pieces.EmptySquare(12, 0)   # left
        empty_square7 = pieces.EmptySquare(11, 0)   # up_left

        self.assertFalse(pawn.valid_move(empty_square1))
        self.assertFalse(pawn.valid_move(empty_square2))
        self.assertFalse(pawn.valid_move(empty_square3))
        self.assertFalse(pawn.valid_move(empty_square4))
        self.assertFalse(pawn.valid_move(empty_square5))
        self.assertFalse(pawn.valid_move(empty_square6))
        self.assertFalse(pawn.valid_move(empty_square7))
示例#19
0
    def test_whiteking_invalid_move_jump(self):
        king = pieces.King(True, 8, 8)

        empty_square1 = pieces.EmptySquare(5, 8)     # up
        empty_square2 = pieces.EmptySquare(6, 10)    # up_right
        empty_square3 = pieces.EmptySquare(8, 10)    # right
        empty_square4 = pieces.EmptySquare(11, 11)   # down_right
        empty_square5 = pieces.EmptySquare(12, 8)    # down
        empty_square6 = pieces.EmptySquare(11, 5)    # down_left
        empty_square7 = pieces.EmptySquare(8, 5)     # left
        empty_square8 = pieces.EmptySquare(6, 6)     # up_left

        self.assertFalse(king.valid_move(empty_square1))
        self.assertFalse(king.valid_move(empty_square2))
        self.assertFalse(king.valid_move(empty_square3))
        self.assertFalse(king.valid_move(empty_square4))
        self.assertFalse(king.valid_move(empty_square5))
        self.assertFalse(king.valid_move(empty_square6))
        self.assertFalse(king.valid_move(empty_square7))
        self.assertFalse(king.valid_move(empty_square8))

# if __name__ == 'main':
#     unittest.main()