def play(hparams): gomoku = Gomoku(hparams) render = GameRender(gomoku, hparams) # change the AI here, bigger the depth stronger the AI ai = gomokuAI(gomoku, BoardState.BLACK, 2) second_ai = gomokuAI(gomoku, BoardState.WHITE, 2) result = BoardState.EMPTY # AI plays first ai.first_step() result = gomoku.get_chess_result() render.change_state() while True: if hparams['enable_second_ai']: second_ai.one_step() result = gomoku.get_chess_result() if result != BoardState.EMPTY: print(result, "wins") break if hparams['enable_ai']: ai.one_step() result = gomoku.get_chess_result() if result != BoardState.EMPTY: print(result, "wins") break else: render.change_state() # pygame event, player vs. ai section for event in pygame.event.get(): if event.type == pygame.QUIT: exit() elif event.type == pygame.MOUSEBUTTONDOWN: if render.one_step(): result = gomoku.get_chess_result() else: continue if result != BoardState.EMPTY: break if hparams['enable_ai']: ai.one_step() result = gomoku.get_chess_result() else: render.change_state() else: continue render.draw_chess() render.draw_mouse() if result != BoardState.EMPTY: render.draw_result(result) pygame.display.update()
enable_ai = False while True: # 捕捉pygame事件 for event in pygame.event.get(): # 退出進程 if event.type == QUIT: exit() elif event.type == MOUSEBUTTONDOWN: # 成功下棋 if render.one_step(): result = gobang.get_chess_result() else: continue if result != ChessboardState.EMPTY: break if enable_ai: #ai.one_step() result = gobang.get_chess_result() else: render.change_state() # 繪製 render.draw_chess() render.draw_mouse() if result != ChessboardState.EMPTY: render.draw_result(result) # 刷新 pygame.display.update()