本文的视频版本:西瓜视频B 站

猫姐提醒点击文章中的图片可以放大,看的更清楚哦!

# 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__()

在构造函数里面,我们用 pygameSurface 函数 生成一个宽为 60 像素,高为 30 像素的小方块,给这个小方块取个名,叫 self.image 。因为屏幕的颜色是黑色的,所以我们要给小方块填充点不一样的颜色,用 self.image.fill 函数给小方块填充白色。通过 self.imageget_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()

好了,我们看到小方块已经显示出来了!下一集我们让小方块动起来!
小方块显示