def render(self): "draw white circle with red line pointing to the current angle" center = Vect(self.radius, self.radius) end = center.add_polar(self.radius, self.angle) pygame.draw.circle(self.surf, (255, 255, 255), center, self.radius) pygame.draw.line(self.surf, (255, 0, 0), center, end) return self.surf, self._surf_coord()
def spawn_asteroid(self): "spawn asteroid at random position, not in the ship's danger zone" pos = Vect.get_random(self.width, self.height) ast = Asteroid(pos) while self.ship.in_danger_zone(ast): pos = Vect.get_random(self.width, self.height) ast = Asteroid(pos) return ast
def shoot(self): "shoot a projectile and return it, None if gun is still recharging" if (self.age - self.last_shoot_time) >= self.RECHARGE_TIME: vel = Vect(self.vel.x, self.vel.y) pos = Vect(self.pos.x, self.pos.y) pos = pos.add_polar(self.radius, self.angle) proj = Projectile(pos, vel, self.angle) self.last_shoot_time = self.age return proj
def __init__(self, pos, speed=None, angle=None): vel = Vect(0, 0) if not speed: speed = random.random() * self.MAX_SPEED if not angle: angle = utils.random_angle() vel += vel.add_polar(speed, angle) super(Asteroid, self).__init__(pos, vel, angle) self.ang_vel = random.random() * self.MAX_ANG_VEL self.ang_vel *= random.choice([1, -1]) self.image = pygame.image.load("assets/images/asteroid_blue.png") self.exp_image = pygame.image.load("assets/images/explosion.png") self.sound_explosion = pygame.mixer.Sound("assets/sounds/explode.wav") self.explosion_time = None