gpt4 book ai didi

python - AI tictactoe - future 的棋盘和计算机 Action

转载 作者:行者123 更新时间:2023-12-01 06:28:40 25 4
gpt4 key购买 nike

我被要求将我的玩家对战井字游戏改进为人工智能井字游戏,其中玩家与计算机对战:为此,我需要编写两个函数:一个获取棋盘和当前玩家的符号并返回所有可能的 future 棋盘的列表 - 每个 future 棋盘都是一个包含两个元素的列表:一个是放置符号的位置,另一个是放置符号之后的棋盘放置符号 - 一圈后的棋盘(我正在使用嵌套列表棋盘,如下面的代码所示(我在其中收到了帮助,here)

我需要的第二个函数是让计算机转动的函数 - 它使用第一个函数并通过以下方式之一选择最佳移动:

  1. 随机选择一个棋步(如果计算机先走,则只是开始)并进行棋局

或者

  • 如果计算机可以在下一回合获胜,他就会选择并玩这个选项
  • 如果玩家可以在下一回合获胜,计算机应该“阻止”他。
  • 我有一个玩家对玩家井字游戏

    代码:

    def get_move(whoseturn, board):
    rowloc=int(input(f'{whoseturn},insert the deserved row to place your symbol: '))
    coloc=int(input(f'{whoseturn} insert the deserved column to place your symbol: '))
    while True:
    if not (0 <= rowloc < 3 and 0 <= coloc < 3):
    print('row and column must be 0, 1, or 2')
    rowloc = int(input(f'{whoseturn},insert the deserved row to place your symbol: '))
    coloc = int(input(f'{whoseturn} insert the deserved column to place your symbol: '))
    elif board[rowloc][coloc] !='e':
    print("The deserved place is taken, choose again ")
    rowloc = int(input(f'{whoseturn},insert the deserved row to place your symbol: '))
    coloc = int(input(f'{whoseturn} insert the deserved column to place your symbol: '))
    else:
    board[rowloc][coloc] = whoseturn
    break

    return rowloc, coloc

    def display_board(board):
    print('\n'.join([' '.join(board[i]) for i in range(3)]))

    def win(board, whoseturn, x, y):
    if board[0][y] == board[1][y] == board [2][y] == whoseturn:
    return True
    if board[x][0] == board[x][1] == board [x][2] == whoseturn:
    return True
    if x == y and board[0][0] == board[1][1] == board [2][2] == whoseturn:
    return True
    if x + y == 2 and board[0][2] == board[1][1] == board [2][0] == whoseturn:
    return True

    return False

    def isfull(board):
    for i in range(0,3):
    for j in range(0,3):
    if board[i][j]=='e':
    return False
    return True

    def main():
    board = [['e','e','e']
    ,['e','e','e']
    ,['e','e','e']]
    print("Welcome to the great tic tac toe game!")

    player1=input("Player 1, select your symbol (X/O): ")
    if player1 =='O':
    print('X is player 2s symbol')
    player2 = 'X'
    else:
    print('O is player 2s symbol')
    player2 = 'O'
    print("Player 1 will start")


    whoseturn=player1
    while True:
    display_board(board)

    rowloc, coloc = get_move(whoseturn, board)
    if win(board,whoseturn, rowloc, coloc):
    print(f'{whoseturn} wins!')
    display_board(board)
    break

    if isfull(board):
    print('Tied')
    break
    if whoseturn=='O':
    whoseturn='X'
    else:
    whoseturn='O'


    if __name__ == '__main__':
    main()

    以及 future 董事会功能的开始

    代码:

    def futuremove(board,whoseturn):
    newboard=copy.deepcopy(board)
    place = []
    copyboard = []
    arrangement=[]
    final=[]
    for i in range(3):
    for j in range(3):
    if newboard[i][j]=='e':
    newboard[i][j]=whoseturn
    if win(newboard,whoseturn,i,j)==True:
    loctup=[i,j]
    place.append(loctup)
    copyboard.append(newboard)
    arrangement.append(place)
    arrangement.append(copyboard)
    final.append(arrangement)
    print(final)
    else:
    break

    请帮我制作一个可以运行的玩家对战电脑井字棋游戏!任何帮助将非常感激!

    最佳答案

    您可以采用多种不同的方法来实现它,您可能采取的一种相当简单的方法是利用 Minimax Algorithm

    在一个简单的例子中,你的程序只向前看一回合,在玩家采取行动后,你的人工智能会为它可能采取的每一个可能的行动生成一个棋盘,并根据这些行动,玩家的每一个可能的反击行动可以做。

    现在您想要为 AI 的每个可能的 Action 分配一个分数,如何定义评分算法取决于您,但它应该代表特定游戏状态对您的 AI 的好坏程度。

    人工智能每个潜在 Action 的得分应该等于玩家所有反击 Action 的最差得分,因为我们希望假设玩家会按照自己的最佳利益行事。

    因此,您将能够确定 AI 的哪些潜在 Action 使其最有可能从当前状态赢得比赛。我强烈建议阅读随附的文章以了解实现细节和更深入的理解。

    关于python - AI tictactoe - future 的棋盘和计算机 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60009268/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com