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)
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)