美文网首页
Pygame精灵和精灵组

Pygame精灵和精灵组

作者: 9196cc24a96c | 来源:发表于2018-03-09 13:52 被阅读0次

    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

    相关文章

      网友评论

          本文标题:Pygame精灵和精灵组

          本文链接:https://www.haomeiwen.com/subject/iivpfftx.html