Lo que haremos a continuación es enseñar a comer a nuestro pacman. La regla será que pacman se comerá todos los objetos (sprites) comestibles con los que se encuentre. Un sprite será comestible si tiene el atributo "comestible" y éste tiene valor "True" y pacman se lo comerá si colisiona con él.
Para ver los sprites con los que va colisionando nuestro pacman vamos a emplear la función "pygame.sprite.spritecollide". Esta función dado un sprite X y una lista de sprites devuelve los sprites de esta lista que colisiona con el sprite X. El tercer parámetro de esta función, que tenemos a False, indica si queremos que se eliminen automáticamente de la lista todos aquellos sprites con los que colisiona.
sprites_choque = pygame.sprite.spritecollide(spriteX,
sprites,
False)
Así quedará nuestra función "update" de Pacman. Para facilitar su lectura no la incluyo entera pero la puedes ver en el código que te adjunto
class Pacman ( MiSprite ):
...
def update (self):
...
MiSprite.update(self)
global sprites
sprites_choque = pygame.sprite.spritecollide(self,
sprites,
False)
for sprite in sprites_choque:
if sprite != self:
if hasattr ( sprite, "comestible" ):
if sprite.comestible:
sprite.kill() #destruimos el sprite
Por si no sabes mucho de Python, la función "hasattr" te permite comprobar si un objeto tiene definido un determinado atributo.
Destruimos un sprite llamando a su método "kill" que lo destruye eliminándolo de todas aquellas listas que lo contienen.
Para hacer que las cerezas y las bolitas sean comestibles basta con indicarlo a través del nuevo atributo "comestible".
sprite = MiSprite ("fruta.gif", [0, 100], [0,0])En la próxima entrega veremos còmo crear paredes dentro de nuestro juego de tal forma que sean infranqueables.
sprite.comestible = True
sprites.add ( sprite )
sprite = MiSprite ("bola.gif", [100, 100], [0,0] )
sprite.comestible = True
sprites.add ( sprite )
No hay comentarios:
Publicar un comentario