Le nouveauPos me donne la position d'agent pacman (comme (3,5)). L'ancien aliment me donne la nourriture restante disponible pour pacman sous forme de grille. Nous pouvons accéder au réseau via la liste comme si nous voulons savoir si la nourriture est disponible à (3,4), alors nouscomment vérifier les états voisins en python
oldFood = currentGameState.getFood()
if oldFood[x][y] == true....
newGhostStates = successorGameState.getGhostStates()
Cela me donnera la liste des fantômes qui sont présents.
J'ai besoin de trouver les fantômes environnants, c'est-à-dire les fantômes qui sont à côté de newPos. Comment ferais-je cela? Je ne suis pas capable de l'implémenter. J'ai obtenu une requête sur google mais je ne veux pas utiliser cette méthode. Ici, le rayon est utilisé, je ne sais pas pourquoi?
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
fondamentalement, j'ai besoin de trouver les positions environnantes liées à ma position actuelle. Ensuite, je vais vérifier ces positions avec les positions gjost, si elles correspondent, puis il y a un fantôme.
Y at-il une autre méthode par laquelle je peux le faire? sans utiliser le rayon? – Shilpa
fondamentalement, j'ai besoin de trouver les positions environnantes liées à ma position actuelle. Ensuite, je vais vérifier ces positions avec les positions gjost, si elles correspondent, puis il y a un fantôme. – Shilpa
@Shilpa: si vous avez seulement besoin des positions adjacentes (c'est-à-dire "juste à côté" du Pacman), vérifiez "x, y + 1", "x, y-1", "x + 1, y", 1, y' et vous avez terminé. Cela peut être étendu à des plages plus longues avec du code qui est probablement un peu plus simple que ce que vous avez collé ci-dessus. –