我在一个井字塔克托4x4与minmax,算法运行,但什么都不做,我认为问题是在“def ganador”或“def juega永humano”阅读输入,我将非常感谢任何帮助,谢谢
抱歉,我的泰山英语
#the lines for win
def ganador(tablero):
lineas = [[0,1,2,3], [4,5,6,7], [8,9,10,11], [12,13,14,15], [0,4,8,12], [1,5,9,13], [2,6,10,14], [3,7,11,15], [0,5,10,15], [3,6,9,12]]
ganador = 0
for linea in lineas:
if tablero[linea[0]] == tablero[linea[1]] and tablero[linea[0]] == tablero[linea[2]] and tablero[linea[0]] == tablero[linea[3]] and tablero[linea[0]] != 0:
ganador = tablero[linea[0]]
return ganador
def ver_tablero(tablero):
for i in range(0,4):
for j in range(0,4):
if tablero[i*4+j] == MAX:
print 'X',
elif tablero[i*4+j] == MIN:
print 'O',
else:
print '.',
print ''
def juega_humano(tablero):
ok=False
while not ok:
casilla = input ("Casilla?")
# 0 to exit, 1-16 for cells defined with "range" in another place
if str(casilla) in '012345678910111213141516' and (len(str(casilla))<= 2) and tablero[casilla-1] == 0:
if casilla == 0:
sys.exit(0)
tablero[casilla-1]=MIN
ok=True
return tablero
def juega_ordenador(tablero):
global jugada_maquina
punt = minimax(tablero[:], MAX)
tablero[jugada_maquina] = MAX
return tablero
if __name__ == "__main__":
print 'Introduce casilla o 0 para terminar'
tablero = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
while (True):
ver_tablero(tablero)
tablero = juega_humano(tablero)
if game_over(tablero):
break
tablero = juega_ordenador(tablero)
if game_over(tablero):
break
我能看到的第一个问题是函数没有缩进。在每个def语句之后,应该有缩进。例如,这是错误的:
这是正确的:
^{pr2}$对你的整个代码都这样做,看看是否能解决你的问题。如果没有,看看你能不能把范围缩小一点:你刚刚发布的代码量相当大(两个全屏),而且大多数人都不想浏览整个内容。如果你能把它缩小到“好吧,这是出问题的函数”,那么更多的人会帮助你找到解决方案。在
(注意:当我说“这是正确的”时,我只指缩进。实际上我还没有研究过程序的逻辑;据我所知,
ganador
函数中可能还有一个bug。)编辑:在您的逻辑中发现一个问题。这条线并不像你想象的那样:
如果
casilla
是91,这将是真的,因为字符串“91”可以在您要检查的字符串中找到。如果要检查casilla
only是否包含有效输入,则应对照有效字符串列表进行检查,如下所示:(请注意,我省略了“16”:如果您接受“16”作为有效输入,那么在某个时刻您将有一个索引器错误。)
虽然有更好的方法来做这个检查。当你真的只想知道它是否在0到15之间时,为什么还要费心把它转换成字符串呢?只要这样做:
我以后可能会给你更多的帮助,但现在已经足够了。适当地缩进你的函数,看看你的问题是否消失了。如果没有,试着缩小范围,然后用缩小的代码发布一个新问题。在
(缩小范围的提示:将
print
语句到处粘贴,打印出代码中不同位置的值,并查看它们在您看来是对是错。一个好的调试器甚至更好,但是如果没有调试器,print
语句会让您走很长的路。)相关问题 更多 >
编程相关推荐