嗨,我是新來的蟒蛇,我正在創建一個連接4遊戲,我在最後一點,允許玩遊戲的播放功能。該問題似乎是我的while循環,它運行一次,詢問用戶列並在該列中輸入計數器,但是之後它只是繼續詢問要選擇哪一列而不更改電路板:Python:連接4播放
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循環是要求選擇什麼樣的列後停止運行。任何幫助,將不勝感激。
我printBoard功能是:
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
和我makeMove是:
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
你的方法返回什麼或'board2'是什麼?你有沒有嘗試打印返回值?特別是'getValidMoves()'。 – Lafexlos
您需要提供更多信息,例如'getValidMoves','makeMove'和'printBoard'函數正確運行或不運行。逐行調試器可以幫助您找出錯誤的位置。您還可以嘗試添加'print'語句,以便知道事情按照預期發生的事情。 –
你可以使用'getValidMoves','makeMove'等函數來製作[MCVE](http://stackoverflow.com/help/mcve)嗎? – Nuageux