• Pygame中Sprite类的使用1


    Pygame中有一个名为sprite的模块,又叫做“精灵”模块。通过该模块中的Sprite类可以实现图形的绘制、移动以及碰撞检测等功能。

    1 Sprite类的编写

    例如,要绘制“植物大战僵尸”中的僵尸,就可以创建一个新类,让该类继承自sprite模块中的Sprite类,代码如下所示。

    class Zombie(pygame.sprite.Sprite):

    在绘制僵尸图形时,需要僵尸图片以及该图片的位置。因此需要在Zombie类的__init__()函数中对这两个属性进行设置。

    1.1 __init__()函数

    1.1.1 设置僵尸图片

    在Zombie类的__init__()函数中,使用image模块的load()函数导入指定的图片。

    1. def __init__(self, x, y):
    2.         super().__init__()
    3.         self.image = pygame.image.load('1.png')

    可以看出,Zombie类的__init__()函数包含了三个参数,参数x和参数y分别表示僵尸图形所处的x轴位置和y轴位置。在__init__()函数中,首先调用了其父类,也就是Sprite类的__init__()函数,之后为Zombie类添加image属性,该属性即为导入的僵尸图片。

    需要注意的是,此时load()函数的参数是图片文件的相对路径,也就是图片和代码文件在同一路径下,也可以为load()函数指定图片的绝对路径。

    1.1.2 设置僵尸图片的位置

    接下来,在__init__()函数中,为Zombie类添加rect、x和y三个属性,代码如下所示:

    1. self.rect = self.image.get_rect()
    2. self.rect.x = x
    3. self.rect.y = y

    其中,rect表示图片左上角所处的坐标,rect.x表示横坐标,rect.y表示纵坐标。也就是说所,在定义Zombie类的实例时,需要指定该图片所处的位置。

    1.2 绘制僵尸图片

    定义Zombie类的draw()方法来绘制僵尸图片,代码如下所示。

    1. def draw(self, scree):
    2.      screen.blit(self.image, self.rect)

    其中,draw的screen参数是Surface类的实例,表示创建的屏幕。通过Surface类的blit()方法将指定的图片画到指定的位置处。

    相关链接2:

    Pygame显示文字_棉猴的博客-CSDN博客

    1.3 僵尸图片的更新

    定义Zombie类的update()方法将僵尸图片更新到屏幕中,代码如下所示:

    1. def update(self):
    2.    pygame.display.update()

    2 屏幕的创建

    使用如下代码创建显示僵尸的屏幕。

    1. pygame.init()
    2. screen = pygame.display.set_mode((400, 500))
    3. screen.fill((255,255,255))

    相关链接3:

    Pygame显示文字_棉猴的博客-CSDN博客

    3 在屏幕右上方绘制僵尸

    使用如下代码在创建好的屏幕screen上的右上方绘制僵尸。

    1. z1 = Zombie(350, 80)
    2. z1.draw(screen)
    3. z1.update()

    其中,z1是Zombie类的实例,坐标(350,80)表示僵尸位于屏幕右上方,之后调用Zombie类的draw()方法绘制僵尸,最后调用Zombie类的update()方法在屏幕上显示僵尸。效果如图1所示。

    图1 僵尸的显示

  • 相关阅读:
    贪心算法之过河问题
    Docker与Docker-Compose详解
    论文解读(GRCCA)《 Graph Representation Learning via Contrasting Cluster Assignments》
    IdentityServer4实战详解(HyBrid混合模式篇)
    树和二叉树基础
    【670. 最大交换】
    凯撒密码用c语言实现
    Tomcat10的坑
    红帽认证笔记2
    你不知道的自然语言处理应用场景和挑战
  • 原文地址:https://blog.csdn.net/hou09tian/article/details/132793953