如何解决如何在tictactoe游戏中检查相邻的音调键?
我一直在阅读无聊的东西自动化,并且我已经创建了这个tictactoe游戏。我想知道是否可以使用字典连续检查三个。我知道我可以每次比较董事会状态以设置值,但对我来说这似乎效率很低。这是我的代码:
theBoard = {"top-L": "","top-M":"","top-R":"","mid-L": "","mid-M": "","mid-R": "","low-L": "","low-M": "","low-R": ""}
def printBoard(board):
print(board["top-L"] + "|" + board["top-M"] + "|" + board["top-R"])
print("-+-+-")
print(board["mid-L"] + "|" + board["mid-M"] + "|" + board["mid-R"])
print("-+-+-")
print(board["low-L"] + "|" + board["low-M"] + "|" + board["low-R"])
turn = "X"
for i in range(9):
printBoard(theBoard)
print("Turn for " + turn + "player. Move on which space?")
move = input()
theBoard[move] = turn
if turn == "X":
turn = "O"
else:
turn = "X"
printBoard(theBoard)
解决方法
很显然,在这种情况下,dict不是合适的数据类型,而是一点点的辛苦工作,没有任何技巧,而且可以正常工作。您可以这样做:
def check_three_in_row(board):
all_lines = [[],[],[]]
for key,value in board.items():
if key.startswith("top"):
all_lines[0].append(value)
if key.startswith("mid"):
all_lines[1].append(value)
if key.startswith("low"):
all_lines[2].append(value)
if key.endswith("R"):
all_lines[3].append(value)
if key.endswith("M"):
all_lines[4].append(value)
if key.endswith("L"):
all_lines[5].append(value)
if key == "top-L" or key == "mid-M" or key == "low-R":
all_lines[6].append(value)
if key == "top-R" or key == "mid-M" or key == "low-L":
all_lines[7].append(value)
for line in all_lines:
if len(set(line)) == 1 and len(line) == 3 and line[0] != '':
return line[0]
return None
theBoard = {"top-L": "","top-M":"","top-R":"","mid-L": "","mid-M": "","mid-R": "","low-L": "","low-M": "","low-R": ""}
def printBoard(board):
print(board["top-L"] + "|" + board["top-M"] + "|" + board["top-R"])
print("-+-+-")
print(board["mid-L"] + "|" + board["mid-M"] + "|" + board["mid-R"])
print("-+-+-")
print(board["low-L"] + "|" + board["low-M"] + "|" + board["low-R"])
turn = "X"
for i in range(9):
printBoard(theBoard)
winner = check_three_in_row(theBoard)
if winner != '' and winner is not None:
print(f'The winner is {winner}')
print("Turn for " + turn + "player. Move on which space?")
move = input()
theBoard[move] = turn
if turn == "X":
turn = "O"
else:
turn = "X"
printBoard(theBoard)
输出的最后一部分:
Turn for Xplayer. Move on which space?
low-M
|X|O
-+-+-
|X|O
-+-+-
|X|
The winner is X
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。