예제 #1
0
파일: main.py 프로젝트: Plamenod/2D_Chess
def pygame_mainloop():

    chess_board = ChessBoard()
    player = 0
    chess_board.set_allowed_color(player)
    screen = pygame.display.set_mode((640, 480))
    board_image, chess_image = load_images()
    selected = surface()

    is_selected_cell = False
    selected_cell = Point(None, None)
    offset = 120

    print ("player's", player, "turn")

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return

            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    return

            elif event.type == pygame.MOUSEBUTTONUP:
                new_position = make_a_point_from_mouse(event, offset)
                if is_into_board(new_position):
                    new_position.normalize_point()
                    if is_selected_cell:
                        is_selected_cell = False
                        can_play = chess_board.play(selected_cell, new_position)
                        if can_play:
                            player = change_player(player)
                            chess_board.set_allowed_color(player)
                            print ("player's", player, "turn")
                        else:
                            print("Invalid move!!! Try again")
                        selected_cell.set_point(None, None)
                    else:
                        selected_cell.set_point(
                            new_position.get_x(), new_position.get_y())
                        if chess_board.allowed_selection(selected_cell, player):
                            is_selected_cell = True

                        else:
                            selected_cell.set_point(None, None)

        screen.fill((109, 165, 165))
        screen.blit(board_image, (offset, offset))
        if selected_cell.get_x() is not None and \
                selected_cell.get_y() is not None:
            screen.blit(selected, (selected_cell.get_x()*32 + offset + 2,
                        selected_cell.get_y()*24 + offset + 2))
        prepare_board_to_update(chess_board, screen, chess_image, offset)
        pygame.display.update()
        time.sleep(0.04)
        if chess_board.is_end():
            print("The winner is Player {0}".format((player + 1) % 2))
            time.sleep(4)
            return
예제 #2
0
from chess import ChessBoard

if __name__ == "__main__":
    #test
    board = [
        [None ,None,"w3a",None,None,None,"b7a","b3a"],
        ["w5a","w6b",None,None,None,None,"b7b","b5a"],
        ["w4a","w6c",None,None,None,None,"b7c","b4a"],
        [None,None,"w2",None,None,None,"b7d","b2" ],
        ["w1" ,"w6e",None,None,None,None,"b7e","b1" ],
        ["w4b","w6f",None,None,None,None,"b7f","b4b"],
        ["w5b","w6g",None,None,None,None,"b7g","b5b"],
        ["w3b","w6h",None,None,None,None,"b7h","b3b"]
    ]
    game = ChessBoard(board)
    print "White Player plays:"
    game.play("white")
    print
    print "Black Player plays:"
    game.play("black")
    print
예제 #3
0
    def test_play(self):
        board = ChessBoard()
        player = 0
        board.set_allowed_color(player)

        # Test 1
        white_figure = Point(2, 6, "wp")
        new_position = Point(2, 4)

        self.assertTrue(board.play(white_figure, new_position))

        # Test 2
        selected_figure = Point(-1, -1, "  ")
        new_position = Point(2, 4)

        self.assertFalse(board.play(selected_figure, new_position))

        # Test 3

        testBoard = [['br', 'bn', 'bb', 'bq', 'bk', 'bb', 'bn', 'br'],
                     ['bp', 'bp', 'bp', '  ', 'bp', 'bp', 'bp', 'bp'],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', 'bp', '  ', '  ', '  ', '  '],
                     ['wp', 'wp', 'wp', 'wp', 'wp', 'wp', 'wp', '  '],
                     ['wr', 'wn', 'wb', 'wq', 'wk', 'wb', 'wn', 'wr']]

        set_board(board, testBoard)
        board.set_allowed_color(1)
        black_pawn = Point(3, 5, "bp")
        new_position = Point(4, 6)

        self.assertTrue(board.play(black_pawn, new_position))

        # Test 4

        testBoard = [['br', 'bn', 'bb', 'bq', 'bk', 'bb', 'bn', 'br'],
                     ['bp', 'bp', 'bp', '  ', 'bp', 'bp', 'bp', 'bp'],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', 'bp', '  ', '  ', '  ', '  '],
                     ['wp', 'wp', 'wp', 'wp', 'wp', 'wp', 'wp', '  '],
                     ['wr', 'wn', 'wb', 'wq', 'wk', 'wb', 'wn', 'wr']]

        set_board(board, testBoard)
        black_pawn = Point(3, 5, "bp")
        new_position = Point(4, 5)

        self.assertFalse(board.play(black_pawn, new_position))

        # Test 5

        testBoard = [['br', 'bn', 'bb', 'bq', 'bk', 'bb', 'bn', 'br'],
                     ['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp'],
                     ['  ', '  ', '  ', 'wp', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['wp', 'wp', 'wp', '  ', 'wp', 'wp', 'wp', '  '],
                     ['wr', 'wn', 'wb', 'wq', 'wk', 'wb', 'wn', 'wr']]

        set_board(board, testBoard)
        board.set_allowed_color(0)
        white_figure = Point(3, 2, "wp")
        new_position = Point(4, 1)

        self.assertTrue(board.play(white_figure, new_position))

        # Test 6

        testBoard = [['br', 'bn', 'bb', 'bq', 'bk', 'bb', 'bn', 'br'],
                     ['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp'],
                     ['  ', '  ', '  ', 'wp', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['wp', 'wp', 'wp', '  ', 'wp', 'wp', 'wp', '  '],
                     ['wr', 'wn', 'wb', 'wq', 'wk', 'wb', 'wn', 'wr']]

        set_board(board, testBoard)

        white_figure = Point(3, 2, "wp")
        new_position = Point(4, 2)

        self.assertFalse(board.play(white_figure, new_position))

        # Test 7

        testBoard = [['br', 'bn', 'bb', 'bq', 'bk', 'bb', 'bn', 'br'],
                     ['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', '  '],
                     ['  ', '  ', '  ', 'wp', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', 'bp'],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['wp', 'wp', 'wp', '  ', 'wp', 'wp', 'wp', '  '],
                     ['wr', 'wn', 'wb', 'wq', 'wk', 'wb', 'wn', 'wr']]

        set_board(board, testBoard)

        white_rock = Point(7, 7, "wr")
        new_position = Point(7, 1)

        self.assertFalse(board.play(white_rock, new_position))

        # Test 8

        testBoard = [['br', 'bn', 'bb', 'bq', 'bk', 'bb', 'bn', 'br'],
                     ['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', '  '],
                     ['  ', '  ', '  ', 'wp', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', 'wp'],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['wp', 'wp', 'wp', '  ', 'wp', 'wp', 'wp', '  '],
                     ['wr', 'wn', 'wb', 'wq', 'wk', 'wb', 'wn', 'wr']]

        set_board(board, testBoard)

        white_rock = Point(7, 7, "wr")
        new_position = Point(7, 1)

        self.assertFalse(board.play(white_rock, new_position))

        # Test 9

        testBoard = [['br', 'bn', 'bb', 'bq', 'bk', 'bb', 'bn', 'br'],
                     ['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', '  '],
                     ['  ', '  ', '  ', 'wp', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', 'wp'],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['wp', 'wp', 'wp', '  ', 'wp', 'wp', 'wp', '  '],
                     ['wr', 'wn', 'wb', 'wq', 'wk', 'wb', 'wn', 'wr']]

        set_board(board, testBoard)

        white_knight = Point(6, 7, "wn")
        new_position = Point(4, 6)

        self.assertFalse(board.play(white_knight, new_position))

        # Test 10

        testBoard = [['br', 'bn', 'bb', 'bq', 'bk', 'bb', 'bn', '  '],
                     ['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'wp'],
                     ['  ', '  ', '  ', 'wp', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['wp', 'wp', 'wp', '  ', 'wp', 'wp', 'wp', '  '],
                     ['wr', 'wn', 'wb', 'wq', 'wk', 'wb', 'wn', 'wr']]

        set_board(board, testBoard)

        white_pawn = Point(7, 1, "wp")
        new_position = Point(7, 0)

        self.assertTrue(board.play(white_pawn, new_position))

        # Test 11

        testBoard = [['br', 'bn', 'bb', 'bq', 'bk', 'bb', 'bn', '  '],
                     ['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'wp'],
                     ['  ', '  ', '  ', 'wp', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['wp', 'wp', 'wp', '  ', 'wp', 'wp', 'wp', '  '],
                     ['wr', 'wn', 'wb', 'wq', 'wk', 'wb', 'wn', 'wr']]

        set_board(board, testBoard)

        white_pawn = Point(7, 1, "wp")
        new_position = Point(6, 0)

        self.assertTrue(board.play(white_pawn, new_position))

        # Test 12

        testBoard = [['br', 'bn', 'bb', 'bq', 'bk', 'bb', 'bn', '  '],
                     ['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'wp'],
                     ['  ', '  ', '  ', 'wp', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['  ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
                     ['wp', 'wp', 'wp', '  ', 'wp', 'wp', 'wp', '  '],
                     ['wr', 'wn', 'wb', 'wq', 'wk', 'wb', 'wn', 'wr']]

        set_board(board, testBoard)

        white_pawn = Point(3, 3, "  ")
        new_position = Point(6, 0)

        self.assertFalse(board.play(white_pawn, new_position))