Pygame精灵和精灵组

2018-03-09  本文已影响0人  9196cc24a96c

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

上一篇下一篇

猜你喜欢

热点阅读