声明: 原创不易,未经许可,不得转载
【02(游戏主角就长这样(小方块的显示,面向对象编程))】
0.前言
hello,大家好,我是带你们一起写游戏的猫姐。
今天我们接着做小朋友吃蘑菇的小游戏!在第一集代码的基础上,我们来实现一个小方块的显示,效果是这样的。
文章图片
pygame
基本框架:
文章图片
猫姐再强调一下:上面的代码虽然只有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的坐标为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()
好了,我们看到小方块已经显示出来了!下一集我们让小方块动起来!
文章图片