Python中面向对象的Tic-Tac-Toe

Python中面向对象的Tic-Tac-Toe,python,oop,typeerror,tic-tac-toe,Python,Oop,Typeerror,Tic Tac Toe,我正在为Python类编写一个程序。它必须使用OOP来创建Tic-Tac-Toe游戏。我已经完成了一些要求。最后一个要求是,电脑播放器必须是“智能”的——做一些事情,比如拦网,在可能的情况下连续播放点,等等。我的教授并没有给我们任何指导,所以我有点困惑 我现在在程序中的位置是试图提供一个检查,以确定玩家是否离通过水平排获胜还有一步之遥。这是我的代码(我知道它非常混乱和低效) 我的问题是,我收到一条错误消息: Traceback (most recent call last): File "&

我正在为Python类编写一个程序。它必须使用OOP来创建Tic-Tac-Toe游戏。我已经完成了一些要求。最后一个要求是,电脑播放器必须是“智能”的——做一些事情,比如拦网,在可能的情况下连续播放点,等等。我的教授并没有给我们任何指导,所以我有点困惑

我现在在程序中的位置是试图提供一个检查,以确定玩家是否离通过水平排获胜还有一步之遥。这是我的代码(我知道它非常混乱和低效)

我的问题是,我收到一条错误消息:

Traceback (most recent call last):
  File "<pyshell#194>", line 1, in <module>
    x.choose('x')
  File "/Users/richiehoffman/Documents/Python Programs/Tic Tac Toe.py", line 64, in choose
    self.mark((self.rowabouttowin(mark)),mark)
  File "/Users/richiehoffman/Documents/Python Programs/Tic Tac Toe.py", line 23, in mark
    x,y = pos
TypeError: 'int' object is not iterable
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
x、 选择('x')
文件“/Users/richiehoffman/Documents/Python Programs/Tic Tac Toe.py”,第64行,选择
self.mark((self.rowabouttowin(mark)),mark)
文件“/Users/richiehoffman/Documents/Python Programs/Tic Tac Toe.py”,第23行,在标记中
x、 y=位置
TypeError:“int”对象不可编辑
坦率地说,我已经超出了我的知识范围,因为这项作业远远超出了我们在课堂上花在面向对象Python上的几天时间。我确信我在choose或rowabouttowin方法中的某个点上犯了错误,该方法输出的是一个整数,而不是一些iterable数据

有什么帮助吗

def rowabouttowin(self,mark):
    [...]
    return 4
这将返回一个
int
,而不是
(int,int)
,如
self.mark()中所预期的那样


顺便说一句,我相信如果变量、方法和参数没有使用相同的名称(例如,
标记
),代码的可读性会更好。

有点离题,但如果您想实现真正聪明的IA,请查看。当然,您有时会让IA进行次优移动,以便在命名方面达到最佳效果。如上所述,您还有3个名为choose的函数。
def rowabouttowin(self,mark):
    [...]
    return 4