02(游戏主角就长这样(小方块的显示,面向对象编程))

声明: 原创不易,未经许可,不得转载
【02(游戏主角就长这样(小方块的显示,面向对象编程))】
0.前言 hello,大家好,我是带你们一起写游戏的猫姐。
今天我们接着做小朋友吃蘑菇的小游戏!在第一集代码的基础上,我们来实现一个小方块的显示,效果是这样的。
02(游戏主角就长这样(小方块的显示,面向对象编程))
文章图片

pygame基本框架:
02(游戏主角就长这样(小方块的显示,面向对象编程))
文章图片

猫姐再强调一下:上面的代码虽然只有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的坐标为top=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()

好了,我们看到小方块已经显示出来了!下一集我们让小方块动起来!
02(游戏主角就长这样(小方块的显示,面向对象编程))
文章图片

    推荐阅读