def change_images(self, name, lookupdate=False): change = self.cur_images != name if change or lookupdate: nname = name nr = self.cur_image counter = self.anim_timer.counter if self.look < 0: nname = name + "_l" AnimatedKitten.set_images(self, self.all_images[nname]) self.cur_images = name if name == "sprinting" or name == "throwing": self.anim_timer.set_interval(3) elif name == "jump": self.anim_timer.set_interval(5) elif name == "landing": self.anim_timer.set_interval(7) else: self.anim_timer.set_interval(10) if lookupdate: self.set_image(self.images[nr]) self.cur_image = nr self.anim_timer.counter = counter
def __init__(self, thrower, cam): self.thrower = thrower self.camera = cam look = thrower.look delay = 3 #set images img_name1 = "shuri_throw" img_name2 = "shuri_fly" pos = thrower.pos if look < 0: img_name1 = img_name1 + "_l" img_name2 = img_name2 + "_l" pos = (pos[0] - 32 / 2, pos[1] + 46 / 2) else: pos = (pos[0] + 28 / 2, pos[1] + 46 / 2) self.thrown_images = GLOBALS["nanji"][img_name1] self.fly_images = GLOBALS["nanji"][img_name2] AnimatedKitten.__init__(self, self.thrown_images, delay) self.set_pos(pos) self.flying = 0 self.fly_vel = (8 * look, 0)
def set_image(self, img): #return #DELETEME top = self.rect.top bottom = self.rect.bottom left = self.rect.left right = self.rect.right vx, vy = self.vel AnimatedKitten.set_image(self, img) self.rect.size = self.image.get_size() if vy < 0: self.rect.top = top else: self.rect.bottom = bottom if self.look > 0: self.rect.left = left else: self.rect.right = right self.rect.centerx = self.colrect.centerx self.rect.bottom = self.colrect.bottom self.set_pos(self.rect.topleft)
def set_images(self, images): w1, h1 = self.image.get_size() AnimatedKitten.set_images(self, images) w2, h2 = self.image.get_size() diff_w = (w1 - w2) / 2 diff_h = (h1 - h2) / 2 self.set_pos((self.pos[0] + diff_w, self.pos[1] + diff_h))
def set_vel(self, vel): vx, vy = vel sprint, jump = 0, 0 if self.status == 2: sprint = 6 * vx if self.status == 4 and vy < 0: jump = 4 AnimatedKitten.set_vel( self, (vx * self.speed + sprint, vy * self.speed - jump))
def update(self): if self.mode == 0: #walk mode AnimatedKitten.update(self) elif self.mode == 1: pass elif self.mode == 2: self.vel = (0, 0) AnimatedKitten.update(self) if self.cur_image == len(self.images) - 1: self.kill() self.mode = 42
def __init__(self, images): #images is a dict with "stand" "move" and "pipe" images self.img_dict = images AnimatedKitten.__init__(self, self.img_dict["stand"], delay=15) self.play() self.fall_speed = 2 self.mode = 0 #0 walk mode, 1 pipe mode, 2 pipe death, 3 fall death self.coord = None #pos in pipe mode self.prev_coord = None self.falling = 0 self.set_vel((0, self.fall_speed)) r = self.rect self.move_rect = pygame.rect.Rect([(0, 0), (51, 19)]) self.stand_rect = self.rect
def update(self): if not self.flying: if not self.animate and self.thrower.cur_images == "throwing": self.play() if not self.flying and \ self.cur_image >= len(self.images)-1 and \ self.anim_timer.counter>=self.anim_timer.interval -1: self.anim_timer.set_interval(3) self.set_images(self.fly_images) self.rect.size = self.image.get_size() pos = (self.pos[0] + 3, self.pos[1] + 3) self.set_pos(pos) self.flying = 1 self.set_vel(self.fly_vel) AnimatedKitten.update(self) if self.off_screen(): self.kill()
def __init__(self, cam, images): self.all_images = images self.camera = cam AnimatedKitten.__init__(self, self.all_images["idle"], delay=10) self.colrect = pygame.Rect([0, 0, 35, 35]) self.angle = 0 #rotation angle for death animation self.shuriken = None self.idle_timer = Timer(200) self.jump_timer = Timer(20) self.shuriken_timer = Timer(20) self.invincible = 0 self.invincible_timer = Timer( 100) #on hit nanji is invincible for set time self.blink_timer = Timer(2) self.name = "" self.cur_images = "idle" self.speed = 4 self.look = 1 #1 => looking right self.statlist = [ "idle", #0 "walking", #1 "sprinting", #2 "throwing", #3 "jumping", #4 "falling", #5 "landing", #6 "ducking", #7 "dying", #8 ] self.on_ground = [0, 1, 2] self.status = 0 self.fall()
def set_pos(self, pos): AnimatedKitten.set_pos(self, pos) self.colrect.centerx = self.rect.centerx self.colrect.bottom = self.rect.bottom