制作一个有积分的井字棋小游戏
时间: 2023-12-28 16:05:36 浏览: 24
好的,我可以为您提供一个简单的井字棋小游戏。
首先,我们需要一个计分系统来跟踪每个玩家的得分。在这里,我使用了一个简单的字典来保存每个玩家的得分。
```
scores = {
"X": 0,
"O": 0
}
```
接下来,我们需要一个函数来打印游戏板。这个函数将接受一个3x3的列表作为参数,表示当前的游戏状态。
```
def print_board(board):
for row in board:
print(row)
```
然后,我们需要一个函数来检查是否有玩家获胜。这个函数将接受一个3x3的列表作为参数,并检查是否有任何一行、一列或一条对角线上的所有格子都被同一玩家占据。
```
def check_win(board):
# 检查行
for row in board:
if row.count(row[0]) == len(row) and row[0] != " ":
return True
# 检查列
for i in range(len(board)):
col = [board[j][i] for j in range(len(board))]
if col.count(col[0]) == len(col) and col[0] != " ":
return True
# 检查对角线
diagonal1 = [board[i][i] for i in range(len(board))]
diagonal2 = [board[i][len(board)-1-i] for i in range(len(board))]
if diagonal1.count(diagonal1[0]) == len(diagonal1) and diagonal1[0] != " ":
return True
elif diagonal2.count(diagonal2[0]) == len(diagonal2) and diagonal2[0] != " ":
return True
return False
```
接下来,我们需要一个函数来检查游戏是否结束。如果所有的格子都被占据或者有一个玩家获胜,游戏就结束了。
```
def check_game_over(board):
# 检查是否有玩家获胜
if check_win(board):
return True
# 检查是否所有格子都被占据
for row in board:
if " " in row:
return False
return True
```
现在,我们可以开始编写主函数了。这个函数将使用上述函数来实现井字棋游戏的逻辑。我们将使用一个3x3的列表来表示游戏板,玩家将交替进行移动,并根据游戏结果更新计分。
```
def play_game():
board = [
[" ", " ", " "],
[" ", " ", " "],
[" ", " ", " "]
]
current_player = "X"
while not check_game_over(board):
print_board(board)
# 获取玩家输入
row = int(input("Enter row (0-2): "))
col = int(input("Enter column (0-2): "))
# 检查是否合法
if board[row][col] != " ":
print("Invalid move!")
continue
# 更新游戏板
board[row][col] = current_player
# 检查是否有玩家获胜
if check_win(board):
print(f"{current_player} wins!")
scores[current_player] += 1
break
# 切换玩家
current_player = "O" if current_player == "X" else "X"
# 打印最终游戏板和得分
print_board(board)
print(f"Score: X ({scores['X']}) - O ({scores['O']})")
```
现在,我们可以调用 `play_game()` 函数来开始游戏了。每个玩家将交替进行移动,直到有一个玩家获胜或所有格子都被占据。游戏结束后,将打印最终游戏板和得分。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)