4连胜游戏
4 in a row game
在学校的 python 课程中开始编程,对 python 来说还很陌生。我制作了一个基本的 4 连胜游戏,游戏区域为 4x4。但我不明白我的垂直制胜系统如何或为什么没有按我的预期工作。
如果 X 和 O 在任何一行中彼此相邻,它当前会打印 win。请不要评论太复杂。感谢任何改进。
. | . | . | .
. | . | . | .
. | . | . | .
X | O | . | .
import os
def cls():
os.system('cls')
def rows():
cls()
print(*row4, sep=" | ")
print(*row3, sep=" | ")
print(*row2, sep=" | ")
print(*row1, sep=" | ")
def check_ver():
for x in range(4):
for j in range(4):
if ("X" in row1[j][x]) & ("X" in row2[j][x]) & ("X" in row3[j][x]) & ("X" in row4[j][x]):
print("X, Win")
break
else:
print("Fel igen!")
row1 = ['.', '.', '.', '.']
row2 = ['.', '.', '.', '.']
row3 = ['.', '.', '.', '.']
row4 = ['.', '.', '.', '.']
while True:
rows()
check_ver()
col = int(input('X, which column? '))
cls()
if col == "":
break
elif col >= 5 or col < 1:
print("Error")
continue
else:
col = col - 1
if row1[col] == '.':
row1[col] = 'X'
rows()
else:
if row2[col] == '.':
row2[col] = 'X'
rows()
else:
if row3[col] == '.':
row3[col] = 'X'
rows()
else:
if row4[col] == '.':
row4[col] = 'X'
rows()
col = int(input('O, which column? '))
if col >= 5 or col < 1:
print("Error")
continue
else:
col = col - 1
if row1[col] == '.':
row1[col] = 'O'
rows()
else:
if row2[col] == '.':
row2[col] = 'O'
rows()
else:
if row3[col] == '.':
row3[col] = 'O'
rows()
else:
if row4[col] == '.':
row4[col] = 'O'
rows()
问题是您将列表视为二维列表,但事实并非如此。您正在使用 4 个不同的列表。所以你一般不需要 j
。你应该使用这样的东西。
def check_ver():
for x in range(4):
if ("X" in row1[x]) & ("X" in row2[x]) & ("X" in row3[x]) & ("X" in row4[x]):
print("X, Win")
break
else:
print("Fel igen!")
row1 = ['X', '.', '.', '.']
row2 = ['X', '.', '.', '.']
row3 = ['X', '.', '.', '.']
row4 = ['X', '.', '.', '.']
提示,使用 ==
运算符而不是 in
运算符
def check_ver():
for x in range(4):
if (row1[x] == "X") & (row2[x] == "X") & (row3[x] == "X") & (row4[x] == "X"):
print("X, Win")
break
else:
print("Fel igen!")
row1 = ['X', '.', '.', '.']
row2 = ['X', '.', '.', '.']
row3 = ['X', '.', '.', '.']
row4 = ['X', '.', '.', '.']
这是一个二维列表的例子
def check_ver():
for x in range(4):
xCounter = 0
for y in range(4):
if (grid[y][x] == "X"):
xCounter += 1
if xCounter == 4:
print("X, Win")
break
else:
print("Fel igen!")
grid = [['.', 'X', '.', '.'],
['.', 'X', '.', '.'],
['.', 'X', '.', '.'],
['.', 'X', '.', '.']]
在学校的 python 课程中开始编程,对 python 来说还很陌生。我制作了一个基本的 4 连胜游戏,游戏区域为 4x4。但我不明白我的垂直制胜系统如何或为什么没有按我的预期工作。
如果 X 和 O 在任何一行中彼此相邻,它当前会打印 win。请不要评论太复杂。感谢任何改进。
. | . | . | .
. | . | . | .
. | . | . | .
X | O | . | .
import os
def cls():
os.system('cls')
def rows():
cls()
print(*row4, sep=" | ")
print(*row3, sep=" | ")
print(*row2, sep=" | ")
print(*row1, sep=" | ")
def check_ver():
for x in range(4):
for j in range(4):
if ("X" in row1[j][x]) & ("X" in row2[j][x]) & ("X" in row3[j][x]) & ("X" in row4[j][x]):
print("X, Win")
break
else:
print("Fel igen!")
row1 = ['.', '.', '.', '.']
row2 = ['.', '.', '.', '.']
row3 = ['.', '.', '.', '.']
row4 = ['.', '.', '.', '.']
while True:
rows()
check_ver()
col = int(input('X, which column? '))
cls()
if col == "":
break
elif col >= 5 or col < 1:
print("Error")
continue
else:
col = col - 1
if row1[col] == '.':
row1[col] = 'X'
rows()
else:
if row2[col] == '.':
row2[col] = 'X'
rows()
else:
if row3[col] == '.':
row3[col] = 'X'
rows()
else:
if row4[col] == '.':
row4[col] = 'X'
rows()
col = int(input('O, which column? '))
if col >= 5 or col < 1:
print("Error")
continue
else:
col = col - 1
if row1[col] == '.':
row1[col] = 'O'
rows()
else:
if row2[col] == '.':
row2[col] = 'O'
rows()
else:
if row3[col] == '.':
row3[col] = 'O'
rows()
else:
if row4[col] == '.':
row4[col] = 'O'
rows()
问题是您将列表视为二维列表,但事实并非如此。您正在使用 4 个不同的列表。所以你一般不需要 j
。你应该使用这样的东西。
def check_ver():
for x in range(4):
if ("X" in row1[x]) & ("X" in row2[x]) & ("X" in row3[x]) & ("X" in row4[x]):
print("X, Win")
break
else:
print("Fel igen!")
row1 = ['X', '.', '.', '.']
row2 = ['X', '.', '.', '.']
row3 = ['X', '.', '.', '.']
row4 = ['X', '.', '.', '.']
提示,使用 ==
运算符而不是 in
运算符
def check_ver():
for x in range(4):
if (row1[x] == "X") & (row2[x] == "X") & (row3[x] == "X") & (row4[x] == "X"):
print("X, Win")
break
else:
print("Fel igen!")
row1 = ['X', '.', '.', '.']
row2 = ['X', '.', '.', '.']
row3 = ['X', '.', '.', '.']
row4 = ['X', '.', '.', '.']
这是一个二维列表的例子
def check_ver():
for x in range(4):
xCounter = 0
for y in range(4):
if (grid[y][x] == "X"):
xCounter += 1
if xCounter == 4:
print("X, Win")
break
else:
print("Fel igen!")
grid = [['.', 'X', '.', '.'],
['.', 'X', '.', '.'],
['.', 'X', '.', '.'],
['.', 'X', '.', '.']]