表格知识点
知识点类别 | 具体内容 |
数据结构 | 二维数组(列表):游戏板是一个3x3的二维列表 |
函数 | print_board(board):打印游戏板状态 |
| check_winner(board, player):检查玩家是否获胜 |
| is_board_full(board):检查游戏板是否已满 |
| tic_tac_toe():游戏主函数 |
控制结构 | 循环:使用while循环重复游戏 |
| 条件语句:使用if和elif处理不同游戏状态 |
输入和输出 | input():获取玩家输入 |
| print():显示游戏信息 |
异常处理 | 使用try和except块捕获和处理异常 |
字符串操作 | 使用join()方法打印游戏板 |
逻辑运算 | 使用all()和列表推导式检查胜利条件 |
变量作用域 | 变量(current_player, board)的作用域和用途 |
游戏逻辑 | 玩家轮流输入、检查输入有效性、更新游戏板状态、检查胜利/平局 |
如何运行这个游戏
- 确保你已经安装了Python(建议版本3.x)。
- 将上述代码复制到一个新的Python文件中,例如
tic_tac_toe.py
。 - 在命令行或终端中导航到保存该文件的目录。
- 运行该文件:
python tic_tac_toe.py
(对于Windows用户,可能需要使用py tic_tac_toe.py
,具体取决于你的Python安装和配置)。
游戏玩法
- 游戏开始时,显示一个空的3x3网格。
- 玩家轮流输入行号和列号来放置他们的标记(“X”或“O”)。
- 如果一个玩家在水平、垂直或对角线上连续放置了三个相同的标记,则他们获胜。
- 如果所有位置都被占用且没有玩家获胜,则游戏为平局。
代码
def print_board(board):
for row in board:
print("|".join(row))
print("-" * 5)
def check_winner(board, player):
# 检查行
for row in board:
if all([cell == player for cell in row]):
return True
# 检查列
for col in range(3):
if all([board[row][col] == player for row in range(3)]):
return True
# 检查对角线
if all([board[i][i] == player for i in range(3)]) or all([board[i][2-i] == player for i in range(3)]):
return True
return False
def is_board_full(board):
return all([cell != ' ' for row in board for cell in row])
def tic_tac_toe():
board = [[' ' for _ in range(3)] for _ in range(3)]
current_player = 'X'
while True:
print_board(board)
try:
row = int(input(f"玩家 {current_player},请输入你要放置 {current_player} 的行号 (0, 1, 2): "))
col = int(input(f"玩家 {current_player},请输入你要放置 {current_player} 的列号 (0, 1, 2): "))
if board[row][col] != ' ':
print("这个位置已经被占用,请选择另一个位置。")
continue
board[row][col] = current_player
if check_winner(board, current_player):
print_board(board)
print(f"玩家 {current_player} 获胜!")
break
if is_board_full(board):
print_board(board)
print("平局!")
break
current_player = 'O' if current_player == 'X' else 'X'
except (ValueError, IndexError):
print("无效输入,请输入0, 1, 或2作为行号或列号。")
if __name__ == "__main__":
tic_tac_toe()
标签:current,游戏,Python,井字棋,player,小游戏,board,print,row From: https://blog.csdn.net/cxh666888_/article/details/142905884