在Pygame中有一个名为sprite的模块,又叫做“精灵”模块。通过该模块中的Sprite类可以实现图形的绘制、移动以及碰撞检测等功能。
例如,要绘制“植物大战僵尸”中的僵尸,就可以创建一个新类,让该类继承自sprite模块中的Sprite类,代码如下所示。
class Zombie(pygame.sprite.Sprite):
在绘制僵尸图形时,需要僵尸图片以及该图片的位置。因此需要在Zombie类的__init__()函数中对这两个属性进行设置。
在Zombie类的__init__()函数中,使用image模块的load()函数导入指定的图片。
- def __init__(self, x, y):
- super().__init__()
- self.image = pygame.image.load('1.png')
可以看出,Zombie类的__init__()函数包含了三个参数,参数x和参数y分别表示僵尸图形所处的x轴位置和y轴位置。在__init__()函数中,首先调用了其父类,也就是Sprite类的__init__()函数,之后为Zombie类添加image属性,该属性即为导入的僵尸图片。
需要注意的是,此时load()函数的参数是图片文件的相对路径,也就是图片和代码文件在同一路径下,也可以为load()函数指定图片的绝对路径。
接下来,在__init__()函数中,为Zombie类添加rect、x和y三个属性,代码如下所示:
- self.rect = self.image.get_rect()
- self.rect.x = x
- self.rect.y = y
其中,rect表示图片左上角所处的坐标,rect.x表示横坐标,rect.y表示纵坐标。也就是说所,在定义Zombie类的实例时,需要指定该图片所处的位置。
定义Zombie类的draw()方法来绘制僵尸图片,代码如下所示。
- def draw(self, scree):
- screen.blit(self.image, self.rect)
其中,draw的screen参数是Surface类的实例,表示创建的屏幕。通过Surface类的blit()方法将指定的图片画到指定的位置处。
相关链接2:
定义Zombie类的update()方法将僵尸图片更新到屏幕中,代码如下所示:
- def update(self):
- pygame.display.update()
使用如下代码创建显示僵尸的屏幕。
- pygame.init()
- screen = pygame.display.set_mode((400, 500))
- screen.fill((255,255,255))
相关链接3:
使用如下代码在创建好的屏幕screen上的右上方绘制僵尸。
- z1 = Zombie(350, 80)
- z1.draw(screen)
- z1.update()
其中,z1是Zombie类的实例,坐标(350,80)表示僵尸位于屏幕右上方,之后调用Zombie类的draw()方法绘制僵尸,最后调用Zombie类的update()方法在屏幕上显示僵尸。效果如图1所示。
图1 僵尸的显示