如何检查python中的邻居状态

时间:2010-07-31 06:36:02

标签: python

newPos给了我pacman代理的位置(如(3,5))。

newPos = successorGameState.getPacmanPosition()

老食物以格子的形式为我提供了剩余的食物。我们可以通过列表访问网格,如果我们想知道食物是否可用(3,4),那么我们

 oldFood = currentGameState.getFood()
    if oldFood[x][y] == true....


newGhostStates = successorGameState.getGhostStates()

这将为我提供存在的幽灵列表。

我需要找到周围的幽灵,即newPos旁边的幽灵。我该怎么办?我无法实现它。我在谷歌上获得了一个解决方案,但我不想使用这种方法。在这里,使用半径,我不知道为什么?

def surroundingGhosts(gList,(x,y), radius=1):
      allGhosts = {}
      sGhosts = []
      for g in gList:
      ### map ghosts positions to ghost obj
        allGhosts[g.getPosition()] = g

      checkPos = []
      for xx in range(x-radius,x+radius+1):
        if xx == x:
          for yy in range(y-radius, y+radius+1):
            checkPos += [(xx,yy)]
        else:
          checkPos += [(xx,y)]
      for p in checkPos:
        if p[0] and p[1] >= 0:
          if p in allGhosts:
            sGhosts += [allGhosts[p]]

      return sGhosts
基本上,我需要找到与我当前位置相关的周边位置。然后我将检查这些位置与gjost位置,如果匹配,那么就有一个幽灵。

1 个答案:

答案 0 :(得分:2)

好吧,想象一下:

...
.P.
.G.
P是Pacman,G是幽灵。用“radius = 1”检查是与pacman相邻的鬼魂。这个检查会找到幽灵。但是:

....
.P.G
....
....

但是这里找不到半径为1的幽灵,因此需要半径为2。