2010-07-31 43 views
0

我需要找到我的pacman代理旁边的状态。当前状态是由numPos给出的元组(3,5)。找到代理周围的邻居

我需要检查围绕pacman代理的位置。我想找到邻近的州,以便我可以检查它与幽灵国家,如果他们匹配,这意味着,幽灵出现在邻居。但我无法找到邻近的州。就像我需要检查(x,y + 1),(x,y-1),(y,x + 1),(y,x-1)。我如何实现它。我不能在这里使用范围函数。

+2

只需硬编码它们。它会更快,可以说它更具可读性。 – 2010-07-31 07:57:02

+1

您在最后一句中的第三和第四个元组中交换了“x”和“y”的元组,这是错误的。除此之外,请按照多米尼克所说的去做。 – 2010-07-31 09:34:36

回答

2

是什么问题?你的问题(和以前的)很不清楚。 这有什么问题。

x,y = numPos 
positions_to_search = [ (x-1, y), 
         (x-1, y-1), 
         (x, y-1), 
         (x+1, y-1), 
         (x+1, y), 
         (x+1, y+1), 
         (x, y+1), 
         (x-1, y+1)] 

你有什么试过的?

2
for dx,dy in ((1,0),(0,1),(-1,0),(0,-1)): 
    search_position(x+dx, y+dy) 
1

如果你想获得看上你可以让邻居元组准备全网使运动了电网和墙壁也不可能运行时动作快,因为它需要从准备好邻居字典只查询:

neighbourghosts = [(nx,ny) 
        for nx,ny in neighbours_of[numPos] 
        if (nx,ny) in ghostplaces]