明月几时有,难得的中秋假期,很多兄弟经历疫情后终于有机会和家人团聚,也有很多码农兄弟因为各种原因在他乡度过假期。无论是怎样的情感,程序员总有自己特别的表达方式。今天就让我们花上几分钟时间用Python写一个小游戏,给中秋假期增加一点不一样的趣味。
首先来看看最终的效果:
游戏所需的所有素材都帮大家整理好了,公众号后台回复“乌鸦”领取。
这次我们要用到pygame
这个库,这种简单的玩法用其他语言实现起来也很容易,但大多都需要一些框架的辅助,有一定的学习成本,而pygame就是为这种场景设计的,使用门槛很薄,相信每个人只要看完这篇文章,都能学会如何写一个自己的玩法。
首先我们引入资源,完成初始化,之后就可以开始Coding啦。
1 |
|
我们的玩法设计是移动鼠标操作屏幕下方的嫦娥接住月饼,所以首先定义同屏中月饼的数量: 这里设计为x轴坐标随机,y轴坐标按规律值间隔,以免大量月饼黏在一起出现。
1 |
|
然后开始定义游戏的主循环。主循环是在游戏运行的整个过程中一直运行的循环,所有的监听,判断和处理都应当编写进去。
1 |
|
这里需要注意的是,pygame中的坐标轴是以左上角为原点,X轴向左递增,Y轴向下递增的,这点可能和习惯性认知不太一样,切记不要闹出乌龙,否则会找不到月饼在哪儿。
然后是运动的处理部分,这里首先要监听鼠标的移动,然后让人物跟随鼠标X轴运动,并加上窗口边界的判断。
1 |
|
然后是游戏中最重要的部分——接到月饼的判断了,这里首先使用最开始创建的月饼位置,通过Y轴坐标值的增加,实现下落的过程。
这里注意,之前创建月饼位置的时候,为了方便数值处理,原本的Y轴值减掉窗口高度后,才是月饼在Y轴的实际坐标,这里大家可以根据自己的习惯修改。
当月饼的xy轴左边均在人物的坐标范围内,或者月饼掉落出屏幕,即没有被接到时,重置Y轴坐标到窗口顶部,并重新随机x轴坐标,通过这种方式使得月饼不断出现。
1 |
|
做到这里,游戏的基本玩法已经完成了————但这样还称不上一个游戏,因为没有限制也没有挑战,所以我们还需要给游戏加入一些其他的元素。
比如除了月饼之外,给玩家增加树枝的掉落,需要在抢月饼的同时躲避:同时增加生命值限制,如果多次碰到树枝则游戏结束:
1 |
|
仅仅是躲避树很容易让人感到厌倦,所以我们可以加入一个难度变化,让节奏不断变快。 随着分数的增加,下落的速度会越来越快。
1 |
|
至此游戏的整体玩法已经成型了,最后再在结束页面加一个分数展示,整个流程就比较的完整了~
1 |
|
至此这个抢月饼的游戏就完成了,文章篇幅有限,我已经将完整的源码和游戏素材上传,大家可以在公众号后台回复“乌鸦”获取下载链接,直接在本地运行体验。
我自己试玩了几次,到后面还是需要一点眼疾手快的,拿到了这样的分数~你们拿到了多少分呢?
最后祝大家中秋假期愉快,生活幸福美满~!