Пример #1
0
class Enemy(pygame.sprite.Sprite):
    def __init__(self, x, y, speed):
        pygame.sprite.Sprite.__init__(self)
        # (x, y) represents bottom center
        self.x = x
        self.y = y
        self.time = 0
        self.speed = speed
        self.interval = z_walk.animSpeed / abs(self.speed)
        self.dead = False
        self.deadShot = False
        self.size = 25
        self.animSprite = AnimatedSprite(ZOMBIE_SPRITE_SHEET,
                                         [z_walk, z_hit, z_die], 'walk')
        self.animSprite.loadImages()
        self.rect = pygame.rect.Rect(
            (self.x - self.size / 2, self.y - self.size, self.size, self.size))
        self.image = pygame.Surface((self.size, self.size))
        self.hp = 100

    def updateHit(self):
        iw = self.image.get_width()
        ih = self.image.get_height()
        self.rect = pygame.rect.Rect((self.x - iw / 2, self.y - ih, iw, ih))

    def update(self):
        self.updateHit()
        self.image = self.animSprite.getImage(
            True if self.speed < 0 else False)
        if not self.dead and self.time % self.interval == 0:
            self.x += self.speed * self.interval
        self.time += 1 * abs(self.speed)

    def hItYoUrSeLf(self):
        if not self.dead:
            self.animSprite.clearStack()
            self.animSprite.addAnimation('hit')
            self.hp -= 25
            if self.hp <= 0:
                self.die()

    def die(self):
        self.animSprite.addAnimation('die')
        self.dead = True

    def draw(self, surf):
        surf.blit(self.image, (self.x - self.image.get_width() / 2,
                               self.y - self.image.get_height()))

    def collidePoint(self, x, y):
        return self.rect.collidepoint(x, y)
Пример #2
0
        kirbImage = kirb.getImage(not kirb_right)
        kw = kirbImage.get_width()
        kh = kirbImage.get_height()

        kirb_x = constrain(kirb_x, 0, WIDTH - kw)
        kirb_y = constrain(kirb_y, UI_SIZE, HEIGHT - UI_SIZE - kh)

        if kp:
            if keyid >= 48 and keyid <= 58:
                action = keyid - 48
                kirb.addAnimationById(action)
            else:
                action = KEY_MAP[keyid]
                if action is not None:
                    kirb.addAnimation(action)
                    if action == 'shoot':
                        bs = bullet_speed if bully == 0 or bullx == 0 else half_speed
                        if bully == 0 and bullx == 0:
                            bullx = 1 if kirb_right else -1
                        bullets.append(
                            Bullet(kirb_x + kw / 2, kirb_y + kh / 2,
                                   bs * bullx, bs * bully))

        zomb_test = ex_zomb.getImage()
        zw = zomb_test.get_width()
        zh = zomb_test.get_height()

        SCREEN.fill((70, 100, 70))
        SCREEN.blit(kirbImage, (kirb_x, kirb_y))