Pygame精灵和精灵组

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 不知不觉来东区已经两个月了,快放假了,过得真快,说实话我挺喜欢这的生活的,但总感觉少了点什么,平平淡淡,一成不变,...
    狂风舞蝶丶阅读 397评论 0 0
  • pygame图形接口 使用pygame.image模块,可以对图像进行读取和保存。 使用pygame.image....
    sssally92阅读 17,666评论 1 25
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,204评论 30 471
  • 万朵梅花已香浓,迟迟不见瑞雪来,寒风微起云遮月,一夜冬雨,暗香还在,黄花凋落,想西子湖畔踏雪寻梅,却只能在梦里。
    京城十七哥阅读 270评论 0 0
  • 楚天千里清秋 水随天去秋无际。 A thousand miles of autumn view in Tru La...
    y000惠阅读 194评论 0 0