【Python】pygame-项目实战(11)-精灵和精灵组

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情

派生精灵子类代码实现

本案例需求的类图如下所示:三个属性,两个方法

本文所要开发的游戏精灵,是继承自pygame的精灵子类

GameSprite
image rect speed
init(self, image_name, speed = 1): update(self):

实现思路:

想实现游戏精灵这个子类代码。首先,让游戏精灵继承自pygame的精灵类,在初始化方法中,我们先调用了一下父类的初始化方法。然后,按照需求,依次定义了三个属性,分别是图像(image),位置(rect),以及速度(speed)。并且,重写了一下父类的update方法,在update方法中,我们对rect的y值做了一个修改,让y值加上速度speed,这样,我们就可以让游戏精灵按照垂直方向进行移动了。

扩展补充

注意:在我们开发子类的时候,如果子类的父类不是object这个基类,我们在初始化方法中,需要主动调用一下父类的初始化方法。因为,不主动调用父类的初始化方法,我们就没办法享受到父类中已经封装好的初始化方法。

代码演示

按照需求所完成的具体代码演示如下所示:

  • 先给类起了个名字GameSprite,在括号中指定一下游戏精灵的父类pygame.sprite.Sprite。
  • 初始化方法中,增加两个形参,image_name和speed。使用super调用父类的初始化方法。
  • 初始化方法中定义三个属性(图像、位置、速度)
  • image调用get.rect方法返回图像大小
  • 定义speed,把形参的speed加载进来
  • 定义update方法
  • update方法中,使精灵在屏幕的垂直方向移动,移动距离为1
import pygame


class GameSprite(pygame.sprite.Sprite):
    """飞机大战游戏精灵"""

    def __init__(self, image_name, speed=1):
        # 调用父类的初始化方法
        super().__init__()
        # 定义对象的属性
        self.image = pygame.image.load(image_name)
        self.rect = self.image.get_rect()
        self.speed = speed
        pass

    def update(self):
        # 在屏幕的垂直方向上移动
        self.rect.y += self.speed
复制代码

猜你喜欢

转载自juejin.im/post/7132482679139762206