Esempio n. 1
0
    def doGamePlay(self):
        #update level data
        envImages, enemies = self._currentLevel.update(1)

        for envImage in envImages:
            SpriteLib.EnviornmentComponent(
                int(envImage.type), self._screenRect, (-100, envImage.xPos),
                (envImage.movementX, envImage.movementY))

        for enemy in enemies:
            SpriteLib.Alien(int(enemy.type), self._screenRect,
                            (-10, enemy.xPos))

        #get key state
        keystate = pygame.key.get_pressed()

        #handle player movement
        self._spaceShip.handleInput(keystate)

        #Temp - for testing
        if keystate[K_q]:
            SpriteLib.Alien(1, self._screenRect, (10, 10))
        if keystate[K_w]:
            SpriteLib.Alien(2, self._screenRect, (50, 10))
        if keystate[K_h]:
            SpriteLib.Alien(3, self._screenRect, (70, 10))
        if keystate[K_o]:
            SpriteLib.Alien(4, self._screenRect, (10, 10))
        if keystate[K_y]:
            SpriteLib.PowerUp(self._screenRect, self._screen, (0, 50), (0, 10),
                              1)
        if keystate[K_k]:
            SpriteLib.Alien(5, self._screenRect, (10, 10))

        #Collision Detection - shots vs aliens
        collision = pygame.sprite.groupcollide(self._playerShotsGroup,
                                               self._aliensGroup, False, False)
        for shot in collision.iterkeys():
            if pygame.sprite.collide_mask(shot, collision[shot][0]):
                shot.hit(collision[shot][0])
                shot.kill()

        #Collision Detection - shots vs background
        pygame.sprite.groupcollide(self._playerShotsGroup,
                                   self._backgroundGroup, True, False,
                                   pygame.sprite.collide_mask)

        #Collision Detection - player vs aliens
        for alien in pygame.sprite.spritecollide(self._spaceShip,
                                                 self._aliensGroup, False):
            if alien.hit(self._spaceShip):
                #game over - TODO, menu system
                print "Game Over!!!"
                return
            self._interface.setHitPoints(self._spaceShip.getMaxHP(),
                                         self._spaceShip.getHP())
            alien.kill()

        #Collision Detection - player vs background
        for backgroundImage in pygame.sprite.spritecollide(
                self._spaceShip, self._backgroundGroup, False):
            if pygame.sprite.collide_mask(self._spaceShip, backgroundImage):
                if backgroundImage.hit(self._spaceShip):
                    print "ouch."
                    return
                self._interface.setHitPoints(self._spaceShip.getMaxHP(),
                                             self._spaceShip.getHP())

        # clear/erase the last drawn sprites
        self._allGroup.clear(self._screen, self._background)

        #update all the sprites
        self._allGroup.update()

        #draw the scene
        dirty = self._allGroup.draw(self._screen)
        #pygame.display.update(dirty)
        pygame.display.update()