我环顾四周但找不到任何人问我想要做什么:
让我给你一些背景知识:
我在python中制作游戏,玩家在网格中移动搜索宝箱,我试图在8x8网格中随机生成10个胸部位置。
我的网格是通过执行以下操作创建的:
grid = []
然后我用'subgrids'填充网格
因为我的游戏是基于网格设计的,所以这允许我将各行分开。
for i in range(8):
grid.append([])
这使我在主“网格”列表中有8个空列表。
我接下来要做的是随机生成胸部位置,并将它们映射到另一个名为“chestLocations”的列表,该列表还使用10个子网格(每个独特的胸部位置一个)。这样我就可以创建Y和X变量,它们相对于网格列表。
这是我的GenerateChestLocations()函数:
def GenerateChestLocations():
global chestY
global chestX
counter = 10
chestY = []
chestX = []
while counter > 0:
posY = random.randint(0,7)
posX = random.randint(1,8)
value = GetValue(posY,posX)
if value == gridChar:
pass
elif value == playerChar:
continue
chestY.append(posY)
chestX.append(posX)
counter -= 1
for a in range(len(chestY)):
chestLocations[a].append(chestY[a])
visitedChests[a].append(chestY[a])
for i in range(len(chestX)):
chestLocations[i].append(chestX[i])
visitedChests[i].append(chestX[i])
for subItem in range(len(visitedChests)):
visitedChests[subItem].append(0)
return
(顺便说一句,这里使用的变量是在我的程序开头定义的,如下所示:)
GetValue()函数只返回Y和X坐标的网格项的值。
visitedChests是另一个网格,需要与chestLocations完全相同,但每个“子网格”中都有一个额外的项目,用于保存用户登陆胸部的次数。
我的问题是我无法锻炼如何检测随机生成的posY和posX整数是否已经存在于chestLocations列表中。
如何创建检测,如果它已找到具有相同坐标的项目,它将“继续”再次运行整个while循环?
感谢您阅读btw;)
答案 0 :(得分:1)
使用stdlib:
import random
from itertools import product
num_bandits = 5
num_chests = 10
all_locns = list(product(range(0,8), range(1,9)))
chest_locns = random.sample(all_locns, num_chests)
unused_locns = [loc for loc in all_locns if loc not in chest_locns]
bandit_locns = random.sample(unused_locns, num_bandits)
答案 1 :(得分:0)
尝试:
({...})