コード例 #1
0
ファイル: effects.py プロジェクト: Lorx92/py-vgdl-1
def slipForward(sprite, partner, game, prob=0.5):
    """ Slip forward in the direction of the current orientation, sometimes."""
    if prob > game.random_generator.random():
        tmp = sprite.lastrect
        v = unit_vector(sprite.orientation)
        sprite.physics.active_movement(sprite, v, speed=1)
        sprite.lastrect = tmp
コード例 #2
0
 def _draw(self, game):
     """ With a triangle that shows the orientation. """
     VGDLSprite._draw(self, game)
     if self.draw_arrow:
         col = (self.color[0], 255 - self.color[1], self.color[2])
         pygame.draw.polygon(
             game.screen, col,
             triPoints(self.rect, unit_vector(self.orientation)))
コード例 #3
0
ファイル: effects.py プロジェクト: Lorx92/py-vgdl-1
def windGust(sprite, partner, game):
    """ Moves the partner in target direction by some step size, but stochastically
    (step, step-1 and step+1 are equally likely) """
    s = game.random_generator.choice(
        [partner.strength, partner.strength + 1, partner.strength - 1])
    if s != 0:
        tmp = sprite.lastrect.copy()
        v = unit_vector(partner.orientation)
        sprite.physics.active_movement(sprite, v, speed=s)
        sprite.lastrect = tmp
コード例 #4
0
ファイル: effects.py プロジェクト: Lorx92/py-vgdl-1
def bounceDirection(sprite, partner, game, friction=0):
    """ The centers of the objects determine the direction"""
    stepBack(sprite, partner, game)
    inc = sprite.orientation
    snorm = unit_vector((-sprite.rect.centerx + partner.rect.centerx,
                         -sprite.rect.centery + partner.rect.centery))
    dp = snorm[0] * inc[0] + snorm[1] * inc[1]
    sprite.orientation = (-2 * dp * snorm[0] + inc[0],
                          -2 * dp * snorm[1] + inc[1])
    sprite.speed *= (1. - friction)
コード例 #5
0
 def _aim(self, game):
     action = self._read_action(game)
     if action in [UP, DOWN]:
         if action == DOWN:
             angle = self.angle_diff
         else:
             angle = -self.angle_diff
         from math import cos, sin
         self.orientation = unit_vector((self.orientation[0] * cos(angle) - self.orientation[1] * sin(angle),
                                         self.orientation[0] * sin(angle) + self.orientation[1] * cos(angle)))
コード例 #6
0
ファイル: effects.py プロジェクト: Lorx92/py-vgdl-1
def conveySprite(sprite, partner, game):
    """ Moves the partner in target direction by some step size. """
    tmp = sprite.lastrect
    v = unit_vector(partner.orientation)
    sprite.physics.active_movement(sprite, v, speed=partner.strength)
    sprite.lastrect = tmp
コード例 #7
0
ファイル: effects.py プロジェクト: Lorx92/py-vgdl-1
def bounceForward(sprite, partner, game):
    """ The partner sprite pushed, so if possible move in the opposite direction. """
    sprite.physics.active_movement(sprite, unit_vector(partner.lastdirection))
コード例 #8
0
 def _shoot_directions(self, game) -> List[Vector2]:
     u = unit_vector(self.orientation)
     return [ u ]