声明:原创不易,未经允许不得转载0.前言朋友们好!我还是那个带你一起写游戏的猫姐。今天是这个游戏的第8集!上期节目,我们认识了蘑菇的前身——小蘑菇方块。在这一集中,我们使用定时器技术来生成大量的下落蘑菇!好的,让我们从代码开始。1、定时器的使用现在,我们使用定时器每1000ms,即1秒产生一个区块。在pygame中使用定时器非常简单,只需3行代码:我们首先定义一个事件,使用pygame.USEREVENT+1,并将其赋值给ADDENEMY变量。#定义一个事件ADDENEMY=pygame.USEREVENT+1pygame.time.set_timer(ADDENEMY,1000)然后,我们把这个事件加入到定时器中,也就是每隔1000ms,ADDENEMY事件就会被激活一次,这里使用的是pygame.time.set_timer函数添加一个计时事件,括号中传入ADDENEMY事件和时间。接下来,我们要处理当计时事件被激活时要做什么,也就是每一秒,需要产生一个新的蘑菇!在while循环中,这里写elifevent.type==ADDENEMY,新建一个蘑菇对象:elifevent.type==ADDENEMY:mushroom=MushRoom()mushrooms.add(mushroom)然后把生成的蘑菇对象添加进去精灵组,这里使用精灵组蘑菇的添加功能,可以将精灵添加到精灵组中。关于定时器,你只需要记住这两行代码每秒运行一次即可!这里使用了一个新的变量mushrooms,所以我们需要在while循环外定义变量mushrooms。这里通过pygame.sprite.Group创建精灵组,并赋值给蘑菇。mushrooms=pygame.sprite.Group()这个精灵组是个好东西。它可以批量管理所有蘑菇。你只需要明白,蘑菇里有很多蘑菇!最后,我们还需要修改一个地方,就是在正方形的绘制和更新函数中,我们需要将mushroom改为mushrooms。我们运行一下看看效果,可以看到每秒都会生成一个新的蘑菇块。接下来,我们要用真正的蘑菇图片替换方块。在图像目录中,我准备了蘑菇的图片。我们修改一下MushRoom类,所以直接注释掉self.image和self.image.fill这两行代码,然后使用Pygame.image.load函数导入蘑菇的图片,蘑菇图片的路径在括号中传递,将其分配给self.image。类MushRoom(pygame.sprite.Sprite):def__init__(self):super(MushRoom,self).__init__()#self.image=pygame.Surface((30,30))#self.image.fill("red")self.image=pygame.image.load("./image/red_mushroom.png")运行程序看看效果,可以看到显示的是蘑菇的图片!这场红雨伞游戏马上就要结束了,你赶上了吗!关注猫姐,下一期我们就让小男孩接住掉落的蘑菇!
