HomeTortue graphiqueGPanelRobotique WebTigerPython
 Python - Online
verfolgung
Deutsch   English   Français   

7. POURSUITE

 

 

TU APPRENDRAS ICI...

 

comment les personnages peuvent se déplacer dans une grille, c'est-à-dire de cellule en cellule, pour poursuivre un objet.

 

 

EXAMPLES

 

 

Example: Un requin poursuit Nemo
 

Nemo nage horizontalement d'un côté à l'autre et est poursuivi par un requin. Le requin se déplace de cellule en cellule, toujours en direction de la position actuelle de Nemo.

À chaque déplacement, le requin peut choisir l'une des 8 cellules voisines. La direction optimale est déterminée à l'aide de la méthode
getCompassDirectionTo().

 

Cette méthode reçoit comme paramètre la position de l'objet poursuivi. Pour éviter que le requin n'attrape Nemo immédiatement, nous ne déplaçons le requin que tous les cinq cycles de simulation.

Programme:

# Gg7.py
from gamegrid import *

# --------------------- class Fish ---------------------
class Fish(Actor):
    def __init__(self):
        Actor.__init__(self, "sprites/snemo.gif")
 
    def act(self):
        self.move()
        if self.getX() == 9:
            self.turn(180)
            self.setHorzMirror(True)
        if self.getX() == 0:
            self.turn(180)
            self.setHorzMirror(False)

# --------------------- class Shark ---------------------
class Shark(Actor):
    def __init__(self):
        Actor.__init__(self, True, "sprites/shark.gif")
 
    def act(self):
        if self.nbCycles % 5 == 0 and not nemo.isRemoved():
            self.setDirection(self.getLocation().
                  getCompassDirectionTo(nemo.getLocation()))
            self.move()
        aNemo = getOneActorAt(self.getLocation(), Fish)
        if aNemo != None:
            aNemo.removeSelf()


makeGameGrid(10, 10, 60, Color.red, "sprites/reef.gif", False)
nemo = Fish()
addActor(nemo, Location(0, 1))
shark = Shark()
addActor(shark, Location(7, 9))
show()
doRun()
► Copy to clipboard

 

 

À RETENIR...

 

À chaque déplacement, le poursuivant peut choisir l'une des 8 cellules voisines. La direction optimale est déterminée à l'aide de la méthode getCompassDirectionTo(). Pour ralentir le poursuivant, tu peux programmer sa méthode act() de manière à ce qu'il ne se déplace que tous les cinq cycles de simulation.

 

 

À FAIRE PAR TOI-MÊME

 

1.

Une grenouille poursuit une mouche
Crée un Actor Fly() avec le sprite fly.gif, qui peut être déplacé à l'aide des touches fléchées. La mouche est poursuivie par un Actor Frog() avec le sprite frog.gif. Crée un terrain de jeu comportant 20 cellules horizontales et 20 cellules verticales, chacune d'une taille de 30 pixels, avec des lignes de grille grises.

Pour programmer la poursuite, tu peux utiliser le code de l'exemple 1 comme modèle. Lorsque la grenouille atteint la cellule dans laquelle se trouve la mouche, celle-ci est mangée.