我将这些函数放在下面,我将字母“b”放在矩阵内的某个位置。 (我正在制作扫雷,这些“b”代表炸弹在矩阵中的位置)。我必须把“z”炸弹放入这个功能中,但放置炸弹的地方不能超过一次。我知道如何将它们放在函数中,但发现它们是否重复是我无法弄清楚的
from random import*
mat1 = []
mat2 = []
def makemat(x):
for y in range(x):
list1 = []
list2 = []
for z in range(x):
list1.append(0)
list2.append("-")
mat1.append(list1)
mat2.append(list2)
makemat(2)
def printmat(mat):
for a in range(len(mat)):
for b in range(len(mat)):
print(str(mat[a][b]) + "\t",end="")
print("\t")
def addmines(z):
for a in range(z):
x = randrange(0,len(mat1))
y = randrange(0,len(mat1))
mat1[y][x] = "b"
addmines(4)
由于
答案 0 :(得分:1)
也许我不明白这个问题,但为什么不检查“b”是否已经存在?
def addmines(z):
for a in range(z):
x = randrange(0,len(mat1))
y = randrange(0,len(mat1))
if mat1[y][x] == "b":
addmines(1)
else:
mat1[y][x] = "b"
addmines(4)
答案 1 :(得分:0)
您要做的是无需更换的样品。尝试使用random.sample
import random
...
def addmines(countMines):
countRows = len(mat1)
countCols = len(mat1[0])
countCells = countRows * countCols
indices = random.sample(range(countCells), countMines)
rowColIndices = [(i // countRows, i % countRows) for i in indices]
for rowIndex, colIndex in rowColIndices:
mat1[rowIndex][colIndex] = 'b'