Python 精灵类

小球精灵类

精灵:

在游戏开发中,在游戏中显示的图片,皆可称为精灵。通常,精灵表示游戏中所有运动的部分。
比如 :敌人,子弹,英雄,云彩等等

sprite类:
在pygame中,提供了一个精灵类Sprite,我们可以封装一个精灵继承自Sprite类,这样可以更方便的操作精灵。


# Sprite 精灵
class Ball(pygame.sprite.Sprite):

    def __init__(self, screen):
        # 这个精灵的初始化方法 必须调用
        pygame.sprite.Sprite.__init__(self)
        # 图片 注意精灵的图片对象  必须起名字为image
        self.image = pygame.image.load('./feiji/zidan.png')
        # 根据图片image获取矩形的对象  对象比如起名为rect
        self.rect = self.image.get_rect()  # rect属性:矩形
        # 小球在屏幕上的x,y坐标
        self.rect.topleft = [0, 100]  # 矩形左上角坐
        # 窗口
        self.screen = screen
        # 速度
        self.speed = 3

    def key_control(self):
        """
        按键的监听  用来移动精灵
        """
        # 监听键盘事件  键盘一直按下
        key_pressed = pygame.key.get_pressed()  # 注意这种方式是能够检测到连续按下的

        # 改变飞机坐标 512, 768
        if key_pressed[pygame.K_w] or key_pressed[pygame.K_UP]:
            self.rect.top -= self.speed
        if key_pressed[pygame.K_s] or key_pressed[pygame.K_DOWN]:
            self.rect.bottom += self.speed
        if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:
            self.rect.left -= self.speed
        if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:
            self.rect.right += self.speed
        if key_pressed[pygame.K_SPACE]:
            # 按下空格键
            print('空格')

    def update(self):
        """调用小球的更新方法,实现小球位置更新"""
        self.key_control()
        self.display()

    def display(self):
        """显示飞机到窗口"""
        self.screen.blit(self.image, self.rect)
        

# 子弹精灵
class Bullet(pygame.sprite.Sprite):
    def __init__(self, screen):
        pygame.sprite.Sprite.__init__(self)
        # 坐标
        # 图片
        self.image = pygame.image.load('./feiji/bullet_1.png')  # 9*21
        self.rect = self.image.get_rect()  # rect属性:矩形
        self.rect.topleft = [200, 200]  # 矩形左上角坐
        # 窗口
        self.screen = screen
        # 速度
        self.speed = 3

    def update(self):
        self.auto_move()
        self.display()

    def auto_move(self):
        # 修改子弹坐标
        self.rect.bottom += self.speed
        # 如果子弹移出屏幕上方,则销毁子弹对象
        if self.rect.bottom > 480:
            self.speed = -self.speed

        if self.rect.top < 0:
            self.speed = -self.speed

    def display(self):
        """显示飞机到窗口"""
        self.screen.blit(self.image, self.rect) 
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值