diff --git a/pyshoot.py b/pyshoot.py index 0c5817a..1df0e72 100755 --- a/pyshoot.py +++ b/pyshoot.py @@ -24,11 +24,13 @@ class Globals: self.die = False self.moving_objects = pygame.sprite.RenderUpdates() self.bullets_list = pygame.sprite.RenderUpdates() + self.bullets_list_player = pygame.sprite.RenderUpdates() self.bullet_factory = BulletFactory() self.enemies_list = pygame.sprite.RenderUpdates() self.enemies_active_list = pygame.sprite.RenderUpdates() self.enemy_factory = EnemyFactory() self.player = None + self.players_list = pygame.sprite.RenderUpdates() class Event_Spawn: def __init__(self, enemy_type, pos): @@ -146,7 +148,7 @@ class Player(Object): self.shoot_wavepos = 0 self.shooting = False - globals.bullets_list.add(bullet) + globals.bullets_list_player.add(bullet) def start_move(self, vector): """ initiate moving sequence """ @@ -390,7 +392,13 @@ def handle_enemies_collisions(collisions): if enemies != []: for e in enemies: e.die() - globals.bullets_list.remove(bullet) + globals.bullets_list_player.remove(bullet) + +def handle_player_collisions(collisions): + """ take the returned dictionnary from pygame.sprite.groupcollide()""" + for bullet, enemies in collisions.iteritems(): + # show some player reaction ;-) + globals.bullets_list.remove(bullet) ## # Main @@ -409,6 +417,7 @@ level = Level() # create_player player = Player(['player1_1.bmp', 'player1_2.bmp'], (50, 50), (0, 0)) globals.player = player +globals.players_list.add(player) # background globals.background = pygame.image.load(os.path.join('data', 'background1.bmp')).convert() @@ -422,16 +431,20 @@ while not globals.die: # erase previously moved objects globals.moving_objects.clear(globals.screen, globals.background) globals.bullets_list.clear(globals.screen, globals.background) + globals.bullets_list_player.clear(globals.screen, globals.background) globals.enemies_list.clear(globals.screen, globals.background) # update game logic globals.moving_objects.update() globals.bullets_list.update() + globals.bullets_list_player.update() globals.enemies_list.update() # collisions - ret = pygame.sprite.groupcollide(globals.bullets_list, globals.enemies_active_list, False, False) + ret = pygame.sprite.groupcollide(globals.bullets_list_player, globals.enemies_active_list, False, False) handle_enemies_collisions(ret) + ret = pygame.sprite.groupcollide(globals.bullets_list, globals.players_list, False, False) + handle_player_collisions(ret) # add player (if it's not already in the group). ugly, but ok for now. @@ -440,6 +453,7 @@ while not globals.die: # drawing rectlist = globals.moving_objects.draw(globals.screen) rectlist.extend(globals.bullets_list.draw(globals.screen)) + rectlist.extend(globals.bullets_list_player.draw(globals.screen)) rectlist.extend(globals.enemies_list.draw(globals.screen)) pygame.display.update(rectlist)