猫姐提醒:点击文章中的图片可以放大,看的更清楚哦!
# 0. 前言
hello,大家好,这里是喵星趣学堂,我是带你们一起写游戏的猫姐。
今天我们接着做小朋友吃蘑菇的小游戏!在第一集代码的基础上,我们来实现一个小方块的显示,效果是这样的。
猫姐再强调一下:上面的代码虽然只有 10 行,却是 pygame
这个框架的精髓,不管你的游戏是简单还是复杂,都是建立在这个代码的基础上,所以大家一定要认真领会这 10行
代码的意思。
# 1. 定义一个方块类
我们先来实现方块的显示,这里稍微要一点面向对象编程的知识,我们用 class
定义一个类,类名叫 Player
,在类名的括号里面,传入 pygame.sprite.Sprite
这个类,让 Player
继承精灵。然后在类里,实现我们自己的构造函数 def __init__(self)
,用 super
函数来调用精灵父类的构造函数。
class Player(pygame.sprite.Sprite): | |
def __init__(self): | |
super(Player, self).__init__() |
在构造函数里面,我们用 pygame
的 Surface
函数 生成一个宽为 60 像素,高为 30 像素的小方块,给这个小方块取个名,叫 self.image
。因为屏幕的颜色是黑色的,所以我们要给小方块填充点不一样的颜色,用 self.image.fill
函数给小方块填充白色。通过 self.image
的 get_rect
函数可以得到小方块的矩形区域,在括号里面,需要设置矩形区域的显示位置,也就是最后程序运行起来后,小方块最初在哪里显示。在这里,我们让小方块在屏幕的中心显示,所以它的左顶点即 x 的坐标为 left=WIDTH//2
, 左顶点 y 的坐标为 t op=HEIGHT//2
。
class Player(pygame.sprite.Sprite): | |
def __init__(self): | |
super(Player, self).__init__() | |
self.image = pygame.Surface((60, 30)) | |
self.image.fill("white") | |
self.rect = self.image.get_rect(left=WIDTH//2, top=HEIGHT//2) |
现在程序运行起来没有任何效果,因为没有将图片绘制到游戏窗口。接下来,我们定义一个 update
函数,将小方块绘制出来。我们调用 screen.blit
函数,括号里面传入的是要显示的图片名称 self.image
,以及图片要在哪里显示。
def update(self): | |
screen.blit(self.image, self.rect) |
# 1.1 方块的显示
我们现在将小方块显示在游戏窗口,我们在 while
循环外面,生成一个 player
对象,然后在 while
循环里面,调用 player对象的update
函数,绘制出小方块!我们运行程序看看效果!
# 实例化 Player 对象 | |
player = Player() | |
while True: | |
for event in pygame.event.get(): | |
if event.type == QUIT: | |
sys.exit() | |
player.update() | |
pygame.display.update() |
好了,我们看到小方块已经显示出来了!下一集我们让小方块动起来!