def shoot(self, missile_group): forward = Util.angle_to_vector(self.angle) radius = self.get_radius() missile_pos = [self.pos[0] + radius * forward[0], self.pos[1] - radius * forward[1]] missile_speed = [15 * forward[0], -15 * forward[1]] missile_vel = [self.vel[0] + missile_speed[0], self.vel[1] + missile_speed[1]] a_missile = Bullet(missile_pos, missile_vel, self.angle, 0, self.canvas) missile_group.add(a_missile)
def shoot(self): forward = Util.angle_to_vector(self.angle) center = self.get_center() missile_pos = [center[0] + self.radius * forward[0], center[1] - self.radius * forward[1]] missile_speed = [15 * forward[0], -15 * forward[1]] missile_vel = [self.vel[0] + missile_speed[0], self.vel[1] + missile_speed[1]] a_missile = Missile(missile_pos, missile_vel) return a_missile
def shoot(self, missile_group): forward = Util.angle_to_vector(self.angle) radius = self.get_radius() missile_pos = [ self.pos[0] + radius * forward[0], self.pos[1] - radius * forward[1] ] missile_speed = [15 * forward[0], -15 * forward[1]] missile_vel = [ self.vel[0] + missile_speed[0], self.vel[1] + missile_speed[1] ] a_missile = Bullet(missile_pos, missile_vel, self.angle, 0, self.canvas) missile_group.add(a_missile)
def update(self): # change image if self.thrust == False: self.image = self.image1 self.original = self.image1 else: self.image = self.image2 self.original = self.image2 # update angle self.angle += self.angle_vel self.angle %= 360 # update position # move by move_ip will move by upleft coord, # but it is not good # TODO: there are some bugs about rect.move, # the move is not smooth, make it smooth self.rect.move_ip(self.vel) # make ship in screen if self.rect.right < self.area.left: self.rect.move_ip([self.area.width, 0]) elif self.rect.left > self.area.right: self.rect.move_ip([-self.area.width, 0]) elif self.rect.bottom < self.area.top: self.rect.move_ip([0, self.area.height]) elif self.rect.top > self.area.bottom: self.rect.move_ip([0, -self.area.height]) # rotate, not smooth, bad for pygame self.rotate_img() # update velocity if self.thrust == True: acc = Util.angle_to_vector(self.angle) self.vel[0] += acc[0] * .2 self.vel[1] -= acc[1] * .2 self.vel[0] *= .99 self.vel[1] *= .99 if self.game_on == False: self.angle_vel *= 0.98
def update(self): # update angle self.angle += self.angle_vel # update position self.pos[0] = (self.pos[0] + self.vel[0]) % self.canvas.CANVAS_WIDTH self.pos[1] = (self.pos[1] + self.vel[1]) % self.canvas.CANVAS_HEIGHT # update velocity if self.thrust == True: acc = Util.angle_to_vector(self.angle) self.vel[0] += acc[0] * .2 self.vel[1] -= acc[1] * .2 self.vel[0] *= .99 self.vel[1] *= .99 if self.game_on == False: self.angle_vel *= 0.99