import random
# 创建扫雷游戏的棋盘
def create_board(rows, cols, num_mines):
board = [['0' for _ in range(cols)] for _ in range(rows)]
mines = random.sample(range(rows * cols), num_mines)
for mine in mines:
row = mine // cols
col = mine % cols
board[row][col] = 'X'
return board
# 统计周围的地雷数量
def count_mines(board, row, col):
count = 0
for i in range(row - 1, row + 2):
for j in range(col - 1, col + 2):
if i >= 0 and i < len(board) and j >= 0 and j < len(board[0]):
if board[i][j] == 'X':
count += 1
return count
# 展开扫雷棋盘,显示地雷数量
def expand_board(board):
for i in range(len(board)):
for j in range(len(board[0])):
if board[i][j] != 'X':
count = count_mines(board, i, j)
board[i][j] = str(count)
return board
# 显示扫雷棋盘
def display_board(board):
for row in board:
print(' '.join(row))
# 打开指定位置的方块
def open_square(board, row, col, visited):
if row < 0 or row >= len(board) or col < 0 or col >= len(board[0]):
return
if (row, col) in visited:
return
visited.add((row, col))
if board[row][col] == '0':
board[row][col] = '#'
for i in range(row - 1, row + 2):
for j in range(col - 1, col + 2):
open_square(board, i, j, visited)
# 主函数
def main():
rows = int(input("请输入行数:"))
cols = int(input("请输入列数:"))
num_mines = int(input("请输入地雷数量:"))
board = create_board(rows, cols, num_mines)
display_board(board)
while True:
row = int(input("请输入要打开的行号:"))
col = int(input("请输入要打开的列号:"))
if board[row][col] == 'X':
print("踩到地雷,游戏结束!")
break
elif board[row][col] == '0':
visited = set()
open_square(board, row, col, visited)
display_board(board)
main()
这个代码实现了一个简单的扫雷游戏。首先,它通过create_board
函数创建了一个指定大小和地雷数量的扫雷棋盘,然后使用expand_board
函数计算每个方块周围的地雷数量,接着使用display_board
函数显示扫雷棋盘。
在主函数中,它要求用户输入要打开的方块的行号和列号,然后根据用户输入的方块内容进行相应的操作,如果踩到地雷则游戏结束,如果打开的方块为空则展开周围的方块。最后,使用display_board
函数显示更新后的扫雷棋盘。
请注意:这只是一个简单的示例,还有一些扩展和功能可以添加到游戏中,比如计时器、计分板、标记地雷等等。