2010-07-31 4 views
0

J'ai besoin de trouver les états qui sont à côté de mon agent pacman. L'état actuel est Tuple (3,5) qui est donné par numPos.trouver les états voisins autour de l'agent

J'ai besoin de vérifier la position autour de l'agent pacman. Je veux trouver les états voisins afin que je puisse le vérifier avec les états fantômes et s'ils correspondent, cela signifie qu'un fantôme est présent du côté voisin. Mais je ne suis pas capable de trouver les états voisins. Comme, je dois vérifier (x, y + 1), (x, y-1), (y, x + 1), (y, x-1). Comment je l'implémente. Je ne peux pas utiliser la fonction de plage ici.

+2

Il vous suffit de les coder en dur. Ce sera plus rapide et sans doute plus lisible. –

+1

Vous avez fait une erreur en échangeant les coordonnées 'x' et' y' dans les troisième et quatrième tuples dans la dernière phrase. A part ça, faites ce que dit Dominic. –

Répondre

2

Quel est le problème? Votre question (et la précédente) est assez floue. Quel est le problème avec cela.

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)] 

Qu'avez-vous essayé?

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

Si vous voulez obtenir la fantaisie, vous pouvez faire voisin tuples prêt pour toute la grille pour que le mouvement de la grille et aux murs est impossible aussi une action d'exécution est rapide car il a besoin que recherche de dictionnaire prêt voisin:

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