Python扫雷器值索引

2024-09-27 00:17:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个程序可以生成一个“扫雷板”值列表。从现在起,列表中的每一项都是字符串“0”或“BOMB”。你知道吗

我一直在努力提高程序效率、抽象和分解、递归等。显然,我可以加入for循环,然后从那里开始(我已经做了lol),但我希望这能够在(半)巨大的规模上工作。你知道吗

我怎样才能从给定的列表中有效地计算出一个牢房里的炸弹数量?你知道吗

class Sweeper:
    '''
    Sweeper(xin, yin) : xin = far right x int, yin = bottom y int
    0 
     |
    y|_____ 
      0   x 
    '''

    def __init__(self, xin, yin):
        '''generates values, number of mines and starts gears'''
        self.values = list("0" * xin * yin)
        #self.mines =  int(yin * xin ** 1.11 - yin * xin)
        self.genmines(self.mines)#Start Generation

    def genmines(self, amt):
        '''Generates Mines'''
        for ite in range(amt):
            self.values[random.randint(0, len(self.values) - 1)] = 'BOMB' 
    def getvalues(self):
        ######
Sweeper(9, 9).getvalues()

将输出:

['0', '0', '0', '0', 'BOMB', '0', '0', '0', '0', '0', '0', 'BOMB', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'BOMB', '0', 'BOMB', '0', '0', '0', '0', '0', '0', 'BOMB', '0', 'BOMB', '0', 'BOMB', '0', 'BOMB', '0', '0', '0', 'BOMB', '0', '0', 'BOMB', '0', '0', '0', 'BOMB', 'BOMB', 'BOMB', '0', 'BOMB', '0', '0', 'BOMB', '0', '0', '0', '0', '0', '0', '0', '0', 'BOMB', '0', '0', '0', '0', 'BOMB', '0', '0', '0', 'BOMB', 'BOMB', '0', '0', 'BOMB', '0', '0']

我有一些使用(x)变量的等式的想法,但我不知道如何有效地实现它们。如果在评论中有提示的话,我会详细说明,因为我觉得他们会把帖子塞住。谢谢!你知道吗


Tags: self程序列表fordefsweeperintvalues
2条回答
def findValue(x, y):
    valueOfSpot = 0
    for xa in range(cols):
        for ya in range(rows):
            if abs(minelist[xa] - (x*10)) < 2 and abs(minelist[ya] - (y*10)) < 2:
                valueOfSpot += 1
    minelist[x][y] = valueOfSpot

这可能会使过程更快。你知道吗

for xb in range(cols):
    for yb in range(rows):
        findValue(xb, yb)
from random import randint
minelist = []
cols = 20
rows = 20
chanceofbomb = 10
for x in range(cols):
    xlist = []
    for y in range(rows):
        isBomb = randint(0,chanceofbomb)
        if isBomb == 0:
            xlist.append("Bomb!")
        else:
            xlist.append('0')
    minelist.append(xlist)

这将为您创建一个地图。 您可以使用

minelist[requiredx][requiredy]

示例

canvas = Canvas(self.tk,width=400,height=400,bg="white")
canvas.pack()
color = "red"
for x in range(cols):
    for y in range(rows):
        if minelist[x][y] == "Bomb!":
            ##Place bomb. Going to place it in a Tkinter format
            canvas.create_rectangle(x*10,y*10,(x*10)+10,(y*10)+10,fill=color,width=0)
##Continue with code

相关问题 更多 >

    热门问题