声明: 原创不易,未经许可,不得转载
0.前言
hello,小伙伴们!我还是带你们一起写游戏的猫姐。
今天是这个游戏的,第8集了!上一集,我们实现了蘑菇的前身-蘑菇小方块,这一集,我们用定时器这个技术,产生很多下落的蘑菇!
好了,我们代码搞起。
1.定时器的使用
现在,我们用定时器,每过1000ms
,也就是1秒钟,产生一个方块。在pygame
里使用定时器,超简单,3行代码就搞定了:
我们先定义一个事件,使用pygame.USEREVENT + 1
,赋值给ADDENEMY变量。
# 定义一个事件
ADDENEMY = pygame.USEREVENT + 1
pygame.time.set_timer(ADDENEMY, 1000)
然后,我们把这个事件添加到定时器里,也就是,每过1000ms,
ADDENEMY
这个事件 就会被激活一次,这里使用pygame.time.set_timer
函数添加定时事件,括号里面传入的是ADDENEMY
事件以及时间。接下来,我们要处理,定时事件被激活时,要做的事情,也就是每经过1秒钟,需要生成一下新的蘑菇!
在
while
循环里面,在这里,写上elif event.type == ADDENEMY
,创建一个新蘑菇对象:elif event.type == ADDENEMY:
mushroom = MushRoom()
mushrooms.add(mushroom)
然后再把生成的
mushroom
对象添加到精灵组里面,这里使用精灵组mushrooms
的add函数
,就可以把精灵添加到精灵组里面了。关于定时器,大家只要记住,每过1秒钟,这两行代码就会运行一次!这里用到了一个新的变量
mushrooms
,所以我们在while循环外面,要定义一下mushrooms这个变量,这里通过pygame.sprite.Group创建一个精灵组,赋值给mushrooms。mushrooms = pygame.sprite.Group()
这个精灵组group是个好东西,可以批量管理所有的蘑菇,大家只需要理解,mushrooms里面放了很多个蘑菇就可以了!
最后,我们还需要修改一个地方,就是方块的绘制和更新函数那里,需要把mushroom改成mushrooms。
我们运行看下效果,可以看到,每过一秒就会产生一个新的蘑菇方块。
接下来,我们要把方块换成真正的蘑菇图片了。
在image目录下,蘑菇的图片我已经准备好了。我们来改造一下MushRoom类,
所以直接把
self.image
和self.image.fill
这两行代码注释掉,然后通过Pygame.image.load
函数来导入蘑菇的图片,括号里面传入的是蘑菇图片的路径,把它赋值给self.image。class 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")
运行程序看下效果,可以看到,蘑菇的图片就显示出来了!
【08( 今天终于给蘑菇披上马甲啦#python游戏#红伞伞)】红伞伞的这个游戏马上快完结了,你跟上了吗!
关注猫姐,下一集我们让小男孩来接住下落的蘑菇!