程序接收三个参数,M,N和p,然后生成一个M * N的矩阵,然后每个矩阵有10%的概率的部分是地雷。生成矩阵后,再计算出每一个cell周围地雷的数量。
运行结果:
image.png
边界问题:
矩阵是M * N的,如果生成一个M * N的矩阵,需要判断很多次边界,所以直接生成一个(M+2)* (N+2)的矩阵
完整代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import random
def minesweeper(m, n):
board = [[None] * (n + 2) for i in range(m + 2)] #生成一个大小为(M+2)*(N+2)的二维数组
for i in range(1, m + 1): #随机生成地雷的数组下标
r1 = random.randint(1, n )
r2 = random.randint(1, n)
board[r1][r2] = "*"
for i in range(1,m+1): #遍历[i][j]周围八个位置,寻找有没有地雷
for j in range(1,n+1):
num = 0
for ii in range(i-1,i+2):
for jj in range(j-1,j+2):
if board[ii][jj] == "*":
num +=1
if board[i][j] != "*":
board[i][j] =num
for i in range(m+2):
print board[i]
网友评论