08: 今天终于给蘑菇披上马甲啦#python游戏#红伞伞

声明: 原创不易,未经许可,不得转载

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对象添加到精灵组里面,这里使用精灵组mushroomsadd函数,就可以把精灵添加到精灵组里面了。关于定时器,大家只要记住,每过1秒钟,这两行代码就会运行一次!
这里用到了一个新的变量mushrooms,所以我们在while循环外面,要定义一下mushrooms这个变量,这里通过pygame.sprite.Group创建一个精灵组,赋值给mushrooms。

mushrooms = pygame.sprite.Group()

这个精灵组group是个好东西,可以批量管理所有的蘑菇,大家只需要理解,mushrooms里面放了很多个蘑菇就可以了!
最后,我们还需要修改一个地方,就是方块的绘制和更新函数那里,需要把mushroom改成mushrooms。
我们运行看下效果,可以看到,每过一秒就会产生一个新的蘑菇方块。

接下来,我们要把方块换成真正的蘑菇图片了。
在image目录下,蘑菇的图片我已经准备好了。我们来改造一下MushRoom类,
所以直接把self.imageself.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")

运行程序看下效果,可以看到,蘑菇的图片就显示出来了!

红伞伞的这个游戏马上快完结了,你跟上了吗!
关注猫姐,下一集我们让小男孩来接住下落的蘑菇!

你可能感兴趣的:(pythonpygame)