board = [[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]
wins = [
((0, 0), (0, 1), (0, 2)),
((1, 0), (1, 1), (1, 2)),
((2, 0), (2, 1), (2, 2)),
((0, 0), (1, 0), (2, 0)),
((0, 1), (1, 1), (2, 1)),
((0, 2), (1, 2), (2, 2)),
((0, 0), (1, 1), (2, 2)),
((2, 0), (1, 1), (0, 2))]
def print_board():
for i in board:
print("|", end="")
for l in i:
if l == 0:
print("-", end="|")
elif l == 1:
print("X", end="|")
elif l == 2:
print("O", end="|")
elif l == 3:
print("E", end="|")
elif l == 4:
print("p", end="|")
elif l == 5:
print("c", end="|")
print()
def is_victory():
ones = 0
twos = 0
for row in board:
for elem in row:
if elem == 1:
ones += 1
elif elem == 2:
twos += 1
if ones + twos >= 5:
for i in wins:
o, t, tr = i
o1, o2 = o
t1, t2 = t
tr1, tr2 = tr
if board[o2][o1] == board[t2][t1] == board[tr2][tr1] == 1:
board[o2][o1], board[t2][t1], board[tr2][tr1] = 4
return True, "X"
elif board[o2][o1] == board[t2][t1] == board[tr2][tr1] == 2:
board[o2][o1], board[t2][t1], board[tr2][tr1] = 5
return True, "O"
return False
def is_draw():
empty_spaces = 0
for row in board:
if 0 in row:
empty_spaces += row.count(0)
set1 = empty_spaces < 5
set2 = None
set3 = None
for i in wins:
o, t, tr = i
o1, o2 = o
t1, t2 = t
tr1, tr2 = tr
if board[o2][o1] == board[t2][t1] == 1 or board[t2][t1] == board[tr2][tr1] == 1 or board[o2][o1] == board[tr2][tr1] == 1 or board[o2][o1] == board[t2][t1] == 2 or board[t2][t1] == board[tr2][tr1] == 2 or board[o2][o1] == board[tr2][tr1] == 2:
set3 = True
for i in wins:
o, t, tr = i
o1, o2 = o
t1, t2 = t
tr1, tr2 = tr
if (board[o2][o1] == board[t2][t1] == board[tr2][tr1] == 0):
set2 = True
for i in wins:
o, t, tr = i
o1, o2 = o
t1, t2 = t
tr1, tr2 = tr
if set1 and set2 and set3:
return True
return False
while True:
posxx = int(input("Enter xx position: "))
posxy = int(input("Enter xy position: "))
board[posxy][posxx] = 1
if is_draw():
print_board()
print("Draw/Tie")
break
elif is_victory() == (True, "X"):
print_board()
print("X Wins!")
break
else:
print_board()
posox = int(input("Enter ox position: "))
posoy = int(input("Enter oy position: "))
board[posoy][posox] = 2
if is_draw():
print_board()
print("Draw/Tie")
break
elif is_victory() == (True, "O"):
print_board()
print("O Wins!")
break
else:
print_board()
在行中“if board[o2][o1] == board[t2][t1] == 1 or board[t2][t1] == board[tr2][tr1] == 1 or board[o2][ o1] == 板[tr2][tr1] == 1 或板[o2][o1] == 板[t2][t1] == 2 或板[t2][t1] == 板[tr2][tr1 ] == 2 或 board[o2][o1] == board[tr2][tr1] == 2:" 我想将变量 set3 设置为 True,即使只有一个条件为真,比如 board[o2][o1] == board[t2][t1] == 1 我认为我的代码应该这样做但它没有发生 Look :
Enter xx position: 0
Enter xy position: 0
|X|-|-|
|-|-|-|
|-|-|-|
Enter ox position: 0
Enter oy position: 1
|X|-|-|
|O|-|-|
|-|-|-|
Enter xx position: 0
Enter xy position: 2
|X|-|-|
|O|-|-|
|X|-|-|
Enter ox position: 1
Enter oy position: 1
|X|-|-|
|O|O|-|
|X|-|-|
Enter xx position: 1
Enter xy position: 0
|X|X|-|
|O|O|-|
|X|-|-|
Draw/Tie
board[o2][o1] == board[t2][t1] == 1 应该触发没有?
对不起,如果我的代码非常糟糕,我将其作为一个学习项目来做,并且不希望在没有赢家且棋盘已满时才使用绘制功能