写一个扫雷小游戏的代码
时间: 2024-01-26 21:02:49 浏览: 37
下面是一个简单的扫雷小游戏的 Python 代码:
```python
import random
# 游戏初始化
def init_board(board_size, num_mines):
# 初始化一个二维列表
board = [[0 for _ in range(board_size)] for _ in range(board_size)]
# 随机放置地雷
for _ in range(num_mines):
row, col = random.randint(0, board_size - 1), random.randint(0, board_size - 1)
# 如果该位置已经有地雷,则重新选择位置
while board[row][col] == '*':
row, col = random.randint(0, board_size - 1), random.randint(0, board_size - 1)
board[row][col] = '*'
# 计算每个格子周围地雷数目
for row in range(board_size):
for col in range(board_size):
if board[row][col] != '*':
count = 0
for r in range(max(0, row - 1), min(board_size - 1, row + 1) + 1):
for c in range(max(0, col - 1), min(board_size - 1, col + 1) + 1):
if board[r][c] == '*':
count += 1
board[row][col] = count
return board
# 打印游戏界面
def print_board(board):
board_size = len(board)
print(" ", end="")
for col in range(board_size):
print(col, end=" ")
print()
for row in range(board_size):
print(row, end=" ")
for col in range(board_size):
print(board[row][col], end=" ")
print()
# 检查游戏是否结束
def check_win(board, revealed):
board_size = len(board)
for row in range(board_size):
for col in range(board_size):
if board[row][col] != '*' and not revealed[row][col]:
return False
return True
# 显示游戏结束信息
def game_over(board):
print("游戏结束!")
print_board(board)
# 主函数
def main():
board_size = 10
num_mines = 10
board = init_board(board_size, num_mines)
revealed = [[False for _ in range(board_size)] for _ in range(board_size)]
while True:
print_board(revealed)
row = int(input("请输入行号:"))
col = int(input("请输入列号:"))
if board[row][col] == '*':
game_over(board)
break
else:
revealed[row][col] = True
if check_win(board, revealed):
print("你赢了!")
print_board(board)
break
if __name__ == '__main__':
main()
```
该代码通过 `init_board()` 函数初始化游戏界面,通过 `print_board()` 函数打印游戏界面,通过 `check_win()` 函数检查游戏是否结束,通过 `game_over()` 函数显示游戏结束信息,最后在 `main()` 函数中实现游戏循环。在游戏循环中,用户输入行号和列号,程序根据用户输入的位置进行判断,如果该位置是地雷则游戏结束,否则将该位置标记为已揭示并检查游戏是否结束。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)