如何选择最佳板/移动?

时间:2016-06-01 18:14:06

标签: python function chess

我需要有关hexapawn游戏的介绍性python编程任务的帮助。我需要编写一个需要参数的函数(计算机的pawn和可能的板/移动列表)。我已经编写了生成可能的电路板列表(all_boards)的函数,它返回一个列表,其中包含程序可以进行的所有可能的移动。

到目前为止,我有一个通过每个棋盘的功能,并计算程序所具有的棋子数量以及"用户"将它们保存到列表中。我需要帮助的是使用这些数字来选择最好的板,通过查看哪个板与用户的棋子相比具有最多的程序棋子并返回最佳板。此外,如果程序捕获所有用户棋子或到达棋盘末端(即移动意味着程序赢得游戏),我还想确定最佳棋盘。

以下是我目前所拥有的代码:

def BestMoves(pawn,all_boards):
    COMPAWNS = []
    USERPAWNS = []
    if pawn == 1:
        opponent = 2
    elif pawn == 2:
        opponent = 1
    # loop starts
    for board in all_boards:
        computercount=[]
        usercounter=[]
        computerpawn = 0
        userpawn = 0

        for i in range(len(board)):

            for j in range(len(board[0])):

                piece = board[i][j]
                if piece == pawn:
                    computerpawn = computerpawn + 1
                if piece == opponent:
                    userpawn = userpawn + 1

        computercount.append(computerpawn)
        usercounter.append(userpawn)
        COMPAWNS.append(computercount)
        USERPAWNS.append(usercounter)

    print("User Pawns:",USERPAWNS)
    print("Computer Pawns:",COMPAWNS)

它应该基本上做什么的例子:

>>>BestMove(1,[[[0, 1, 0], [1, 0, 2], [2, 0, 2]], [[1, 0, 0], [0, 1, 2], [2, 0,2]], [[1, 0, 0], [0, 0, 1], [2, 0, 2]]])  
 [[1, 0, 0], [0, 0, 1], [2, 0, 2]]

0 个答案:

没有答案