Python - 检查二维数组

时间:2016-02-03 22:15:20

标签: python arrays

我环顾四周但找不到任何人问我想要做什么:

让我给你一些背景知识:

我在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;)

2 个答案:

答案 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)

尝试:

({...})