我试图创建一个连接四个游戏,但我不知道如何打印棋盘上的棋盘。我需要它在用户输入的列中的最低可用位置打印X。每次我运行程序,我得到相同的空白6乘7板。请帮帮忙。谢谢!
#ConnectFour
numRows=6
numCols=7
numPlayers=2
board=[]
checkers=['X','O']
turn=0
win = False
for row in range(numRows):
tempList=[]
for col in range(numCols):
tempList.append('.')
board.append(tempList)
while not win:
turn = (turn+1)%numPlayers
userCol = input ("Player"+str(turn+1)+"please enter your col: ")
while not userCol.isdigit() or not int(userCol) in range(numCols):
userCol = input ("Player"+str(turn+1)+"please enter your col: ")
for row in range(numRows):
for col in range(numCols):
print(board[row][col], end='')
print()
for repeat in range(numRows-2):
for row in range(numRows,-1,-1):
for col in range(numCols):
if board[row][int(userCol)]==".":
board[row+1][int(userCol)]="X"
print
break
#print board
for row in range(numRows):
for col in range(numCols):
print(board[row+1][userCol],end=' ')
print()
print ("Player", checkers[turn],"has won the game.")发布于 2016-02-28 20:49:27
我注意到的是:
range(numRows - 1, -1, -1)或reversed(range(numRows))来代替。board[row][int(userCol)] = 'X'代替row+1应该是row.另外,userCol应该只是col吗?否则,它将只打印一列,而不是整个最终板。一般性评论:
通常,您可以通过避免for i in range(x): do_something(mylist[i])反模式,而使用python风格的迭代:for item in mylist: do_something(item)来实现更简洁和更易读的python代码。
我会重写第29-35行。但是在你这么做之前,问问自己这些台词应该做些什么。如果我正确理解了任务,那么您应该只需要一个for循环。
Ninja编辑:同样,一旦生效,不要忘记处理播放机输入了一个有效的列号的情况,但是该列已完全填充,在这种情况下,您可能想要求同一播放器选择一个新的列。
https://stackoverflow.com/questions/35687806
复制相似问题