【发布时间】:2019-10-01 05:15:01
【问题描述】:
编写游戏井字游戏。该游戏涉及两名玩家,每个玩家轮流在二维网格中放置 X 或 O(取决于玩家)。 x 和 y 坐标位于 [0-2](包括)范围内。如果玩家(X 或 O)在一行、一列或对角线上有 3 个,则可以获胜。
程序几乎是正确的,当“X”或“O”获胜时,程序给出正确的输出,在“X 获胜!”之前不打印一个空行!或'O wins',但是,程序在绘制时在打印'Draw'之前打印一个空行,预期的输出不应该在打印'Draw'之前打印一个空行。我不知道如何解决它。
def print_matric(eri):
for j in range(0,3):
for i in range(0,3):
if eri[i][j]==-1:
print(" ",end="")
if eri[i][j]==0:
print("O",end="");
if eri[i][j]==1:
print("X",end="");
if not i==2:
print("|",end="");
print()
# prints ("_ _ _") two times only not third time
if not j==2:
print("-----",end="")
print()
def compute(eri):
if eri[0][0]== eri[0][1] and eri[0][1] == eri[0][2] and eri[0][0] != -1:
return eri[0][0]
if eri[1][0]== eri[1][1] and eri[1][1] == eri[1][2] and eri[1][0] != -1:
return eri[1][0]
if eri[2][0]== eri[2][1] and eri[2][1] == eri[2][2] and eri[2][0] != -1:
return eri[2][0]
if eri[0][0]== eri[1][0] and eri[1][0] == eri[2][0] and eri[0][0] != -1:
return eri[0][0]
if eri[0][1]== eri[1][1] and eri[1][1] == eri[2][1] and eri[0][1] != -1:
return eri[0][1]
if eri[0][2]== eri[1][2] and eri[1][2] == eri[2][2] and eri[0][2] != -1:
return eri[0][2]
if eri[0][0]== eri[1][1] and eri[1][1] == eri[2][2] and eri[0][0] != -1:
return eri[0][0]
if eri[0][2]== eri[1][1] and eri[1][1] == eri[2][0] and eri[0][2] != -1:
return eri[0][2]
return -1
def find_whether_empty(eri):
for j in range(0,3):
for i in range(0,3):
if eri[j][i]==-1:
return 1
return 0
eri = [[-1,-1,-1],[-1,-1,-1],[-1,-1,-1]]
count=0
while True:
a,b = input().split()
a=int(a)
b=int(b)
if a<0 or a>2 or b<0 or b>2:
print("\ncheck your coordinates and enter again")
continue
if not eri[a][b]==-1:
print("\nposition already occupied, please enter again")
continue
if count%2==0:
eri[a][b]=1
else:
eri[a][b]=0
count=count+1
if compute(eri)==-1:
print()
x=compute(eri)
if not x==-1:
if x==0:
print("O wins!\n")
else:
print("X wins!\n")
if not find_whether_empty(eri):
print("Draw\n")
print_matric(eri)
break
print_matric(eri)
if not x==-1:
break
预期输出:
0 0
X| |
-----
| |
-----
| |
1 1
X| |
-----
|O|
-----
| |
1 0
X|X|
-----
|O|
-----
| |
2 0
X|X|O
-----
|O|
-----
| |
0 2
X|X|O
-----
|O|
-----
X| |
0 1
X|X|O
-----
O|O|
-----
X| |
2 1
X|X|O
-----
O|O|X
-----
X| |
2 2
X|X|O
-----
O|O|X
-----
X| |O
1 2
Draw
X|X|O
-----
O|O|X
-----
X|X|O
实际输出:
0 0
X| |
-----
| |
-----
| |
1 1
X| |
-----
|O|
-----
| |
1 0
X|X|
-----
|O|
-----
| |
2 0
X|X|O
-----
|O|
-----
| |
0 2
X|X|O
-----
|O|
-----
X| |
0 1
X|X|O
-----
O|O|
-----
X| |
2 1
X|X|O
-----
O|O|X
-----
X| |
2 2
X|X|O
-----
O|O|X
-----
X| |O
1 2
Draw
X|X|O
-----
O|O|X
-----
X|X|O
【问题讨论】:
标签: python python-3.x