Pygame精灵和精灵组

Pygame 提供了两个类

pygame.sprite.Sprite —— 存储 图像数据 image 和 位置 rect 的 对象

pygame.sprite.Group

精灵

在游戏开发中,通常把 显示图像的对象 叫做精灵 Sprite

精灵 需要 有 两个重要的属性

image 要显示的图像

rect 图像要显示在屏幕的位置

默认的 update() 方法什么事情也没做

子类可以重写此方法,在每次刷新屏幕时,更新精灵位置

注意:pygame.sprite.Sprite 并没有提供 image 和 rect 两个属性

需要程序员从 pygame.sprite.Sprite 派生子类

并在 子类 的 初始化方法 中,设置 image 和 rect 属性

精灵组

一个 精灵组 可以包含多个 精灵 对象

调用 精灵组 对象的 update() 方法

可以 自动 调用 组内每一个精灵 的 update() 方法

调用 精灵组 对象的 draw(屏幕对象) 方法

可以将 组内每一个精灵 的 image 绘制在 rect 位置

注意:仍然需要调用 pygame.display.update() 才能在屏幕看到最终结果

派生精灵子类

新建 plane_sprites.py 文件

定义 GameSprite 继承自 pygame.sprite.Sprite

注意

如果一个类的 父类 不是 object

在重写 初始化方法 时,一定要 先 super() 一下父类的 init 方法

保证父类中实现的 init 代码能够被正常执行

代码:

#导pygame的包

import pygame

#定义一个游戏精灵基类

class Gamesprite(pygame.sprite.Sprite):

#初始化方法 参数(图片路径,英雄飞机移动速度)

    def __init__(self,image_name,speed):

#调用父类的初始化方法

        super().__init__()

#加载图像

       self.image = pygame.image.load(image_name)

提示

image 的 get_rect() 方法,可以返回 pygame.Rect(0, 0, 图像宽, 图像高) 的对象

#记录尺寸

self.rect = self.image.get_rect()

#记录速度

self.speed = speed

#重写update方法

    def update(self,*args):

#默认在垂直方向移动

        self.rect.y+=self.speed

作者:9196cc24a96c
链接:https://www.jianshu.com/p/dab04db88dfc
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值