我需要帮助在lis中找到不同的价值

2024-06-17 11:31:47 发布

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

我正在尝试制作一个迷宫生成器,我正在尝试均匀地展开对象而不让它们重叠。我已经做了一个函数,可以将坐标捕捉到网格上。此时栅格捕捉为50。我遇到的问题是尽量使我的坐标不重叠。如果我已经有一个对象在(100,100),我不想另一个对象去(100,100)。如果你想要整个文件,我可以给你,但堆栈溢出不允许。由于某些原因包含的代码不起作用,但它确实像它应该的那样。你知道吗

objectXLst = []
objectYLst = []
objectXYLst = [(1, 1)]

def check_list(listToCheck, valToCheck):
        objectX = valToCheck[0]
        objectY = valToCheck[1]
        objectXY = valToCheck
        for i in range(len(listToCheck)):
            while listToCheck[i] == objectXY:
                resultForCheck = True
                objectX = divisible_random(0, screenWidth, gridSnapVal)
                objectY = divisible_random(0, screenHeight, gridSnapVal)
                objectXY = (objectX, objectY)
                print("{}, {}, checking".format((objectX, objectY), valToCheck), listToCheck[i])
            else:
                break
        return objectX, objectY
for i in range(int((screenWidth*screenHeight)/gridSnapVal**2)):
        index = 0
        objectX = divisible_random(0, screenWidth, gridSnapVal)
        objectY = divisible_random(0, screenHeight, gridSnapVal)
        counter = 0
        goThru = True
        val = check_list(objectXYLst, (objectX, objectY))
        objectX, objectY = check_list(objectXYLst, (objectX, objectY))
        counter = 0
        if remove1st is True:
            objectXYLst.remove((1, 1))
            remove1st = False
        print(objectX, objectY)
        objectXLst.append(objectX)
        objectYLst.append(objectY)
        objectXYLst.append((objectX, objectY))
        gameObjectsList.append(gameObjects)

Tags: 对象truecheckrandomlistappendscreenwidthdivisible
1条回答
网友
1楼 · 发布于 2024-06-17 11:31:47

尽管上面Ethan的评论有助于我们给出更好的答案,但通过使用Pythonsets并测试这些代码的成员身份,您的代码的第一部分似乎可以变得更简单。这比手动遍历列表快得多,也容易得多。你知道吗

例如

#set with all the coordinates already used:
>>> s = {(1,1), (2,1), (3,4)}
# test different coordinates for membership of s
>>> (1,1) in s
True
>>> (4,5) in s
False

相关问题 更多 >