prevent enemies from shooting themselves and added basic player
collision
This commit is contained in:
parent
bb4ff64e60
commit
8acaaed74b
1 changed files with 17 additions and 3 deletions
20
pyshoot.py
20
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)
|
||||
|
|
Loading…
Reference in a new issue