Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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 2.7中的简单Tic Tac Toe_Python_Python 2.7_Tic Tac Toe - Fatal编程技术网

python 2.7中的简单Tic Tac Toe

python 2.7中的简单Tic Tac Toe,python,python-2.7,tic-tac-toe,Python,Python 2.7,Tic Tac Toe,我试图为一个类项目创建一个简单的tic-tac-toe游戏,但我不确定如何完成其余的代码。我真的很感激任何关于如何完成剩下的工作的见解或意见。目前,该代码在技术上是可行的,但它所做的只是显示一个充满none和“游戏打成平局”的棋盘 你的第一个问题是你的板满了错了。对于每一行,检查的不是检查,而是None not in board。这总是正确的board是一个包含三个列表的列表,因此None将永远不会在其中。你要检查每一行,而不是整个电路板。但只要如果行中没有任何一行不正确,那么在任何行(而不是所

我试图为一个类项目创建一个简单的tic-tac-toe游戏,但我不确定如何完成其余的代码。我真的很感激任何关于如何完成剩下的工作的见解或意见。目前,该代码在技术上是可行的,但它所做的只是显示一个充满
none
和“游戏打成平局”的棋盘


你的第一个问题是你的
板满了
错了。对于每一行,检查的不是检查,而是
None not in board
。这总是正确的
board
是一个包含三个列表的列表,因此
None
将永远不会在其中。你要检查每一行,而不是整个电路板。但只要
如果行中没有任何一行
不正确,那么在任何行(而不是所有行)都已满时,也会出现这种情况。因此,当您找到一个非整行时,您希望返回
False
,如果您在结尾没有找到任何行,则返回
True
。你自己应该能做到

下一个问题是您还没有实现
player\u turn
。对于一个非常粗糙的实现,您只需使用
返回输入('row,col:')
。除非你能理解它为什么起作用,否则你不应该把它作为你的家庭作业(如果你确实理解它为什么起作用,你就不会想用它)。而且,它对用户不是很友好,它不会告诉你该轮到谁了,也不会给你看黑板,或者其他任何东西。您可以将这些内容作为参数,以便使用它们。不管怎么说,这一行已经足够好了,现在可以让你进入下一个问题,所以你可以稍后再来

您的下一个问题是
player\u turn
返回一对数字,而您只是将这对数字分配给
。你不能那样做。你想要的是这样的:

row, col = player_turn(board, PLAYERS[current_player])
board[row][col] = PLAYERS[current_player]
即使有人已经赢了,游戏也会让你一直玩到棋盘满为止。但实际上,如果董事会已满,或者有赢家,你就想结束比赛。(事实上,理想情况下,你希望在不可能获胜的情况下尽快结束,但这有点复杂。你只需将前一句话翻译成
while
语句的替代品,就可以完成简单的事情。)


这应该会让你找到任何其他小错误,编写一个适当的
player\u turn
函数,寻找简化现有代码的方法,等等。

作为旁注,
board[0][0:3]
board[0]是一样的
当每行有3个成员时。请不要编辑您的代码以删除您最初询问的所有问题。这使得这个问题和答案对任何其他发现它的人来说都是无用的。同时,如果你有一个新问题,接受一个答案,或者写下并接受你自己的答案,然后为这个新问题创建一个新问题(粘贴两个问题之间的链接,这样人们就可以知道他们有联系)。不要老是把这个问题变成原来问题的后续问题。作为补充说明,在您试图发布的新代码中,
如果“”不在board[0]和board[1]和board[2]:
并不代表您的想法或任何有用的东西。特别是,它并不意味着
如果(“'not-In-board[0])和('not-In-board[1])以及('not-In-board[2]):
。你要么明确地写出来,要么在理解中使用
any
all
函数,要么使用循环语句。我编写了更多的代码,我现在唯一的问题是,如果用户输入的坐标超出电路板的范围,如何设置一个循环来不断提示用户?@user2843355:这应该是一个新问题。但是作为一个提示:你的
player\u turn
函数可以有一个
while True
,在循环中,获取输入,然后
如果它有效,
返回它。
row, col = player_turn(board, PLAYERS[current_player])
board[row][col] = PLAYERS[current_player]