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
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
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))