Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 Tic Tac Toe check win功能不工作_Python_Python 3.x - Fatal编程技术网

Python Tic Tac Toe check win功能不工作

Python Tic Tac Toe check win功能不工作,python,python-3.x,Python,Python 3.x,所以我正在做一个tic-tac-toe程序,check-win函数不起作用,看起来它只是跳过了它,即使它是真的 这是我写的一种新方式,它不起作用 row_1 = board[0] == board[1] == board[2] != "-" row_2 = board[3] == board[4] == board[5] != "-" row_3 = board[6] == board[7] == board[8] != "-" if

所以我正在做一个tic-tac-toe程序,check-win函数不起作用,看起来它只是跳过了它,即使它是真的

这是我写的一种新方式,它不起作用

row_1 = board[0] == board[1] == board[2] != "-"
row_2 = board[3] == board[4] == board[5] != "-"
row_3 = board[6] == board[7] == board[8] != "-"

if row_1 or row_2 or row_3:
    if row_1 or row_2 or row_3 == char:
        status = True
        check = True
    elif row_1 or row_2 or row_3 == ai_char:
        status2 = True
        check = False
if board[0] == board[3] == board[6] == char:
    status = True
    check = True
if board[1] == board[4] == board[7] == char:
    status = True
    check = True
if board[2] == board[5] == board[8] == char:
    status = True
    check = True

if board[0] == board[3] == board[6] == ai_char:
    status2 = True
    check = False
if board[1] == board[4] == board[7] == ai_char:
    status2 = True
    check = False
if board[2] == board[5] == board[8] == ai_char:
    status2 = True
    check = False
这是我的老办法它不起作用

row_1 = board[0] == board[1] == board[2] != "-"
row_2 = board[3] == board[4] == board[5] != "-"
row_3 = board[6] == board[7] == board[8] != "-"

if row_1 or row_2 or row_3:
    if row_1 or row_2 or row_3 == char:
        status = True
        check = True
    elif row_1 or row_2 or row_3 == ai_char:
        status2 = True
        check = False
if board[0] == board[3] == board[6] == char:
    status = True
    check = True
if board[1] == board[4] == board[7] == char:
    status = True
    check = True
if board[2] == board[5] == board[8] == char:
    status = True
    check = True

if board[0] == board[3] == board[6] == ai_char:
    status2 = True
    check = False
if board[1] == board[4] == board[7] == ai_char:
    status2 = True
    check = False
if board[2] == board[5] == board[8] == ai_char:
    status2 = True
    check = False
这两种方法看起来都应该奏效,但都不行


这就是全部代码

为什么不把它作为一个选项来简化呢

row1 = all(board[i] != '-' for i in [0,3,6])
您也可以尝试使用

row1 = all(board[i] != '-' for i in range(0,7,3))
上述代码的工作原理如下:

if board[0] != '-' and board[3] != '-' and board[6] != '-': 
    row1 = True
else:
    row1 = False
row_1_same = all(board[i] == board[i+1] for i in range(0,2))
row_2_same = all(board[i] == board[i+1] for i in range(3,5))
row_3_same = all(board[i] == board[i+1] for i in range(6,8))
在这种情况下,如果电路板[0]、电路板[3]、电路板[6]中的任何值等于“-”,则将导致False else True

在代码中,您正在检查整行。当您从0到8,其中行1=0,1,2,行2=3,4,5,行3=6,7,8时,这要容易得多

如果要检查每行中的值是否不是“-”,则此代码将起作用:

row_1_dash = all(board[i] != '-' for i in range(0,3))
row_2_dash = all(board[i] != '-' for i in range(3,6))
row_3_dash = all(board[i] != '-' for i in range(6,9))
如果要检查行中的每个值是否相同,则可以进行如下检查:

if board[0] != '-' and board[3] != '-' and board[6] != '-': 
    row1 = True
else:
    row1 = False
row_1_same = all(board[i] == board[i+1] for i in range(0,2))
row_2_same = all(board[i] == board[i+1] for i in range(3,5))
row_3_same = all(board[i] == board[i+1] for i in range(6,8))
您还可以使用以下方法检查值是否相同,是否不等于“-”:

row_1_win = all(board[i] == board[i+1] and board[i] != '-' for i in range(0,2))
row_2_win = all(board[i] == board[i+1] and board[i] != '-' for i in range(3,5))
row_3_win = all(board[i] == board[i+1] and board[i] != '-' for i in range(6,8))
使用这些选项,您可能可以减少代码,以确定玩家是否获胜


如果您想了解完整的实现,请告诉我。这可能有助于您查看实施解决方案的选项。

如果问题已得到解决,您可能希望了解当有人回答您的问题时该怎么办。