代码说明:
print_board(board): 打印当前棋盘的状态。
check_winner(board, player): 检查是否有玩家获胜。通过检查所有可能的胜利条件(行、列、对角线)来判断。
check_draw(board): 检查是否平局,即棋盘上所有位置都已被填充。
make_move(board, row, col, player): 在指定的位置放置玩家的标记("X" 或 "O"),并返回是否成功。
main(): 游戏的主逻辑,控制游戏的进行,包括用户输入、回合切换、胜负判断等。
游戏运行:
运行代码后,玩家可以依次输入行和列的坐标来进行游戏。
游戏会自动判断胜负或平局,并显示结果。
def print_board(board):
for row in board:
print(" | ".join(row))
print("-" * 5)
def check_winner(board, player):
# Check rows, columns and diagonals
win_conditions = [
[board[0][0], board[0][1], board[0][2]],
[board[1][0], board[1][1], board[1][2]],
[board[2][0], board[2][1], board[2][2]],
[board[0][0], board[1][0], board[2][0]],
[board[0][1], board[1][1], board[2][1]],
[board[0][2], board[1][2], board[2][2]],
[board[0][0], board[1][1], board[2][2]],
[board[2][0], board[1][1], board[0][2]],
]
return [player, player, player] in win_conditions
def check_draw(board):
return all(cell != " " for row in board for cell in row)
def make_move(board, row, col, player):
if board[row][col] == " ":
board[row][col] = player
return True
return False
def main():
board = [[" " for _ in range(3)] for _ in range(3)]
players = ["X", "O"]
turn = 0
print("欢迎来到攒小人游戏!")
print_board(board)
while True:
player = players[turn % 2]
print(f"玩家 {player} 的回合")
while True:
try:
row = int(input("输入行 (0, 1, 2): "))
col = int(input("输入列 (0, 1, 2): "))
if row in [0, 1, 2] and col in [0, 1, 2]:
if make_move(board, row, col, player):
break
else:
print("这个位置已经被占用,请选择其他位置。")
else:
print("无效的输入,请输入 0、1 或 2。")
except ValueError:
print("无效的输入,请输入数字。")
print_board(board)
if check_winner(board, player):
print(f"玩家 {player} 胜利!")
break
if check_draw(board):
print("平局!")
break
turn += 1
if __name__ == "__main__":
main()