Python井字棋程序对角线胜利检测逻辑错误求助
井字棋对角线胜利检测误判问题求助
我用Python开发井字棋游戏,横竖方向的胜利检测功能正常,但对角线胜利检测会出现误判情况。
程序中用二维列表filled存储棋盘状态,初始值为:
filled = [['n','n','n'], ['n','n','n'], ['n','n','n']]
用户落子后会更新为X或O,例如:
filled= [['X','X','n'], ['n','O','O'], ['n','n','n']]
我的对角线检测函数Dcheck如下:
def Dcheck(filled): global win global winner global turn dxcount = docount = 0 # Negative Diagonal (1,5,9) x = 0 for row in filled: if row[x] == 'X': dxcount+=1 elif row[x] == 'O': docount +=1 x+=1 if dxcount == 3: win,winner,turn = True,'X',0 elif docount == 3: win,winner,turn = True,'O',0 dxcount = docount = 0 # Positive Diagonal (3,5,7) x = 2 for row in filled: if row[x] == 'X': dxcount+= 1 elif row[x] == 'O': docount += 1 x -= 1 if dxcount == 3: win,winner,turn = True,'X',0 elif docount == 3: win,winner,turn = True,'O',0 return [win,winner,turn,dxcount,docount]
当棋盘状态为:
filled = [['X','O','O'], ['X','X','n'], ['n','n','n']]
时,程序错误判定X获胜,反向布局时也会出现类似误判,我无法定位问题所在,恳请帮助。
内容的提问来源于stack exchange,提问作者DarthKitten
相关产品推荐
相关产品推荐

