Beispiel #1
0
    def update(self, shift=0.0):
        self.rect.normalize()
        self.norm_angle()
        self.x -= shift  # forvard, back
        self.y += self.g_force   # up, down
        self.base_rect.center = (self.x, self.y + self.dy / 2)

        Machine.update(self)
Beispiel #2
0
    def update(self, shift=0.0):
        """This Method describe movement of airplane and
        other actions have in every iteration"""
        self.rect.normalize()
        self.norm_angle()

        # movements
        self.step = self.sh_step(self.step)
        self.step = self.sh_step0(self.step)

        speed_to_go = self.step_func(self.step)
        self.assel = self.assel_func(self.step)
        if speed_to_go < self.speed:
            self.speed -= (self.assel_func(10) - self.assel / 3)
        elif speed_to_go > self.speed:
            self.speed += self.assel

        rad_angle = math.radians(self.angle)

        sin, cos = math.sin(rad_angle), math.cos(rad_angle)
        speed_x = self.speed * cos
        speed_y = self.speed * sin

        self.up_force = self.up_force_val(self.speed)

        if self.up_force > self.g_force:
            self.up_force = self.g_force

        self.x += speed_x - shift  # forvard, back
        self.y -= (speed_y + self.up_force - self.g_force)   # up, down

        Machine.update(self)

        if self.up_force < 0.9 * self.g_force or self.step == 0:  # TODO: make rotate dependent by speed
            if self.direction == 'right':
                if self.angle < 90 or self.angle > 290:
                    self.rotate(-1, rotate_angle=0.5)
                elif 250 > self.angle > 90:
                    self.rotate(1, rotate_angle=0.5)
            elif self.direction == 'left':
                if 250 > self.angle > 90:
                    self.rotate(1, rotate_angle=0.5)
                elif self.angle < 90 or self.angle > 290:
                    self.rotate(-1, rotate_angle=0.5)