Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:connect 4播放_Python - Fatal编程技术网

Python:connect 4播放

Python:connect 4播放,python,Python,大家好,我是python新手,我正在创建一个connect 4游戏,我在最后一位,即允许玩游戏的play函数。问题似乎是我的while循环,它运行一次,要求用户输入一列并在该列中输入计数器,但之后它只继续询问要选择哪一列,而不更改线路板: who = game['who'] while who != 'computer': x = int(input("Which column to select? ")) game['board'] = board2

大家好,我是python新手,我正在创建一个connect 4游戏,我在最后一位,即允许玩游戏的play函数。问题似乎是我的while循环,它运行一次,要求用户输入一列并在该列中输入计数器,但之后它只继续询问要选择哪一列,而不更改线路板:

who = game['who']
    while who != 'computer':
        x = int(input("Which column to select? "))
        game['board'] = board2
        l = getValidMoves(game['board'])
        if x in l:
            game['board'] = makeMove(board2, x, who)
            printBoard(game['board'])            
            board = game['board']
            if hasWon(game['board'], who) == True:                        
                print("{who} has won.")
                sys.exit()
当我运行此代码时,您可以看到:

Which column to select? 1
|1|2|3|4|5|6|7|
---------------
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| |X| | | | | |

Which column to select? 2

Which column to select?
我认为问题在于while循环在询问要选择哪个列后停止运行。任何帮助都将不胜感激

我的打印板功能是:

print("|1|2|3|4|5|6|7|")
    print("---------------")        
    for j in range(6):
        for i in range(7):
            if board[j][i] == 1:
                board[j][i] = "X"
            elif board[j][i] == 2:
                board[j][i] = "O"
            elif board[j][i] == 0:
                board[j][i] = " "                           
    for j in range(6):
        print("|"+"|".join(str(board[j][i]) for i in range(7))+"|")   
    return None
我的getValidMoves是:

l = list()
for i in range(7):
    if board[0][i] == 0:
        l.append(i)   
return l
enter code here
我的行动是:

if who == 1:
    for i in [5,4,3,2,1,0]:
        if board[i][move] == 0:
            break
    board[i][move] = 1

elif who == 2:
    for i in [5,4,3,2,1,0]:
        if board[i][move] ==  0:
            break
    board[i][move] = 2              
return board

只要
who
不等于“computer”,循环就会继续。但是循环中的任何内容都不会改变
,因此它永远不会等于“计算机”,循环也永远不会完成。

您的方法返回什么或是
board2
?您是否尝试过打印返回值?尤其是
getValidMoves()
。您需要提供更多信息,如
getValidMoves
makeMove
printBoard
功能是否正常运行。逐行调试程序可以帮助您找出错误所在。您还可以尝试添加
print
语句,以便知道事情按预期进行到什么程度。您是否可以使用
getValidMoves
makeMove
等函数进行调整?您的while循环不会停止,因为它会继续请求输入。我想问题可能是在更新电路板或打印更新后的电路板,这就是为什么其他评论要求澄清这些方法是完全正确的。请检查如何创建一个。目前我们无法重现您的问题。(例如,
game
board2
未定义)啊,对了,那么我可以添加这样的内容吗,如果who==1:who2=2 elif who==2:who2=1?