예제 #1
0
    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)
예제 #3
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)
예제 #4
0
    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))
예제 #5
0
 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))
예제 #6
0
 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
예제 #7
0
    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()
예제 #9
0
    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()
예제 #10
0
 def set_pos(self, pos):
     AnimatedKitten.set_pos(self, pos)
     self.colrect.centerx = self.rect.centerx
     self.colrect.bottom = self.rect.bottom