def __init__(self, pos, vel, mass): super(Clod, self).__init__() self.mass = mass self.radius = Home.mass_to_radius(mass) self.body, self.shape = physics.clod_body(self.radius, pos, vel, mass) self.shape.SetUserData(self) self.image = Media.media.clod self.rect = self.image.get_rect() state().clods.add(self) Home.instance.mass -= mass
def __init__(self): super(Snake, self).__init__() state().snakes.add(self) Snake.all.append(self) spawn_angle = math.pi * random.uniform(0, 2) speed = -random.uniform(1, 2) vel = polar_vec(speed, spawn_angle / random.uniform(-0.5, 0.5)) # pos = polar_vec(params.dragon.spawn_distance, spawn_angle) pos = vec(10, -10) self.body, self.shape = physics.snake_body(pos, vel) self.shape.SetUserData(self) self.is_hit = False self.image = Media.media.snake self.rect = self.image.get_rect()
def update(self): self.doGravity() r = self.pos.Length() if(r + self.radius < Home.instance.radius): Home.instance.mass += self.mass world.DestroyBody(self.body) state().clods.remove(self) self.shape.ClearUserData() del self elif(r > params.game.max_distance): world.DestroyBody(self.body) state().clods.remove(self) self.shape.ClearUserData() del self else: self.rect.center = self.screen_coords
def __init__(self, home): super(Home.Ent, self).__init__() self.home = home #Cooldown for allowing the player to fire SOILORBS self.shot_cool = 20 #shot_angle |[-90, 90]| self.shot_angle = 0.0 self.start_angle = 0.0 self.cw = True Home.Ent.image = self.image = Media.media.cannon[1] self.c_front = Media.media.cannon[2] self.rect = self.image.get_rect() state().cannon_group.add(self)
def __init__(self): super(Dragon, self).__init__() state().dragons.add(self) Dragon.all.append(self) spawn_angle = math.pi * random.uniform(0, 2) speed = -random.uniform(1, 2) vel = polar_vec(speed, spawn_angle / random.uniform(-0.5, 0.5)) # pos = polar_vec(params.dragon.spawn_distance, spawn_angle) pos = vec(10, -10) self.bodies, self.shapes = physics.dragon_body(pos, vel) self.body = self.bodies[0] for s in self.shapes: s.SetUserData(self) self.is_hit = False print "\nDragon spawned!\nangle: {init_angle}\nvelocity: {init_velocity}".format( init_angle = spawn_angle, init_velocity = vel, )
def draw(self, screen): for i in range(0, len(self.bodies)-1): b = self.bodies[i] pos = state().toScreen(b.GetPosition()) ang = b.GetAngle() img = Media.media.dragon[params.dragon.order[i]] rect = pygame.Rect((0,0), img.get_size()) rect.center = pos screen.blit(img, rect) pygame.draw.rect(screen, (255,0,255), rect, 1) ja = params.dragon.joint_attachments[params.dragon.order[i]] if(ja[0] is not None): a = vec(rect.topleft) a += vec(ja[0]) a = (int(a.x), int(a.y)) pygame.draw.circle(screen, (255,0,0), a, 5) if(ja[1] is not None): b = vec(rect.topleft) b += vec(ja[1]) b = (int(b.x), int(b.y)) pygame.draw.circle(screen, (255,255,0), b, 5)