python简易版扫雷
时间: 2023-06-21 07:05:05 浏览: 86
下面是一个简单的Python实现扫雷的示例代码:
```python
import random
# 游戏参数
ROWS = 10
COLUMNS = 10
MINES = 10
# 方格状态
UNREVEALED = -1
MINE = -2
# 创建游戏面板
board = [[UNREVEALED for _ in range(COLUMNS)] for _ in range(ROWS)]
# 随机布雷
mines = random.sample(range(ROWS * COLUMNS), MINES)
for mine in mines:
row, col = divmod(mine, COLUMNS)
board[row][col] = MINE
# 计算周围地雷数量
for row in range(ROWS):
for col in range(COLUMNS):
if board[row][col] == MINE:
continue
count = 0
for r in range(max(0, row - 1), min(row + 2, ROWS)):
for c in range(max(0, col - 1), min(col + 2, COLUMNS)):
if board[r][c] == MINE:
count += 1
board[row][col] = count
# 显示游戏面板
def print_board():
print(" ", end="")
for col in range(COLUMNS):
print(f"{col:2d}", end="")
print()
for row in range(ROWS):
print(f"{row:2d} ", end="")
for col in range(COLUMNS):
if board[row][col] == UNREVEALED:
print(" .", end="")
elif board[row][col] == MINE:
print(" *", end="")
else:
print(f" {board[row][col]}", end="")
print()
# 点击方格
def click(row, col):
if board[row][col] == MINE:
print("你踩到了地雷,游戏结束!")
return False
elif board[row][col] == UNREVEALED:
board[row][col] = 0
for r in range(max(0, row - 1), min(row + 2, ROWS)):
for c in range(max(0, col - 1), min(col + 2, COLUMNS)):
if board[r][c] == UNREVEALED:
click(r, c)
return True
else:
return True
# 开始游戏
print_board()
while True:
row = int(input("请输入行号:"))
col = int(input("请输入列号:"))
if not click(row, col):
break
print_board()
```
这个简易版扫雷游戏使用的是命令行界面,先随机生成地雷,然后根据地雷数量计算每个方格周围的地雷数量。玩家输入行号和列号来点击方格,如果踩到地雷,则游戏结束,否则会递归地展开周围未点击过的方格,直到点击到有地雷的方格或者所有非地雷方格都被点击为止。