def play_as(game, color): run = True ongoing = True joker = 0 try: while run: CLOCK.tick(CLOCK_TICK) print_board(game.board, color) if chess.game_ended(game): set_title(SCREEN_TITLE + ' - ' + chess.get_outcome(game)) ongoing = False if ongoing and game.to_move == chess.opposing_color(color): game = make_AI_move(game, color) if chess.game_ended(game): set_title(SCREEN_TITLE + ' - ' + chess.get_outcome(game)) ongoing = False for event in pygame.event.get(): if event.type == pygame.QUIT: run = False if event.type == pygame.MOUSEBUTTONDOWN: leaving_square = coord2str(event.pos, color) if event.type == pygame.MOUSEBUTTONUP: arriving_square = coord2str(event.pos, color) if ongoing and game.to_move == color: move = (chess.str2bb(leaving_square), chess.str2bb(arriving_square)) game = try_move(game, move) print_board(game.board, color) if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE or event.key == 113: run = False if event.key == 104 and ongoing: # H key game = make_AI_move(game, color) if event.key == 117: # U key game = chess.unmake_move(game) game = chess.unmake_move(game) set_title(SCREEN_TITLE) print_board(game.board, color) ongoing = True if event.key == 99: # C key global BOARD_COLOR new_colors = deepcopy(BOARD_COLORS) new_colors.remove(BOARD_COLOR) BOARD_COLOR = choice(new_colors) print_board(game.board, color) if event.key == 112 or event.key == 100: # P or D key print(game.get_move_list() + '\n') print('\n'.join(game.position_history)) if event.key == 101: # E key print('eval = ' + str(chess.evaluate_game(game) / 100)) if event.key == 106: # J key joker += 1 if joker == 13 and chess.get_queen(game.board, color): queen_index = chess.bb2index( chess.get_queen(game.board, color)) game.board[queen_index] = color | chess.JOKER print_board(game.board, color) if event.type == pygame.VIDEORESIZE: if SCREEN.get_height() != event.h: resize_screen(int(event.h / 8.0)) elif SCREEN.get_width() != event.w: resize_screen(int(event.w / 8.0)) print_board(game.board, color) except: print(format_exc(), file=stderr) bug_file = open('bug_report.txt', 'a') bug_file.write('----- ' + strftime('%x %X') + ' -----\n') bug_file.write(format_exc()) bug_file.write('\nPlaying as WHITE:\n\t' if color == chess.WHITE else '\nPlaying as BLACK:\n\t') bug_file.write(game.get_move_list() + '\n\t') bug_file.write('\n\t'.join(game.position_history)) bug_file.write('\n-----------------------------\n\n') bug_file.close()
def play_as(game, color): run = True ongoing = True joker = 0 try: while run: CLOCK.tick(CLOCK_TICK) print_board(game.board, color) if chess.game_ended(game): set_title(SCREEN_TITLE + ' - ' + chess.get_outcome(game)) ongoing = False if ongoing and game.to_move == chess.opposing_color(color): game = make_AI_move(game, color) if chess.game_ended(game): set_title(SCREEN_TITLE + ' - ' + chess.get_outcome(game)) ongoing = False for event in pygame.event.get(): if event.type == pygame.QUIT: run = False if event.type == pygame.MOUSEBUTTONDOWN: leaving_square = coord2str(event.pos, color) if event.type == pygame.MOUSEBUTTONUP: arriving_square = coord2str(event.pos, color) if ongoing and game.to_move == color: move = (chess.str2bb(leaving_square), chess.str2bb(arriving_square)) game = try_move(game, move) print_board(game.board, color) if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE or event.key == 113: run = False if event.key == 104 and ongoing: # H key game = make_AI_move(game, color) if event.key == 117: # U key game = chess.unmake_move(game) game = chess.unmake_move(game) set_title(SCREEN_TITLE) print_board(game.board, color) ongoing = True if event.key == 99: # C key global BOARD_COLOR new_colors = deepcopy(BOARD_COLORS) new_colors.remove(BOARD_COLOR) BOARD_COLOR = choice(new_colors) print_board(game.board, color) if event.key == 112 or event.key == 100: # P or D key print(game.get_move_list() + '\n') print('\n'.join(game.position_history)) if event.key == 101: # E key print('eval = ' + str(chess.evaluate_game(game)/100)) if event.key == 106: # J key joker += 1 if joker == 13 and chess.get_queen(game.board, color): queen_index = chess.bb2index(chess.get_queen(game.board, color)) game.board[queen_index] = color|chess.JOKER print_board(game.board, color) if event.type == pygame.VIDEORESIZE: if SCREEN.get_height() != event.h: resize_screen(int(event.h/8.0)) elif SCREEN.get_width() != event.w: resize_screen(int(event.w/8.0)) print_board(game.board, color) except: print(format_exc(), file=stderr) bug_file = open('bug_report.txt', 'a') bug_file.write('----- ' + strftime('%x %X') + ' -----\n') bug_file.write(format_exc()) bug_file.write('\nPlaying as WHITE:\n\t' if color == chess.WHITE else '\nPlaying as BLACK:\n\t') bug_file.write(game.get_move_list() + '\n\t') bug_file.write('\n\t'.join(game.position_history)) bug_file.write('\n-----------------------------\n\n') bug_file.close()