初始想法
开始的想法是使用PyGame来做个简单的RPG游戏,游戏中,主人公“皮皮”将会在一个秘密宫殿中寻找“宝箱”,再经过一系列神秘的关卡、回答了一些“数学”和“音乐”问题后,皮皮终于找到了宫殿最里层的“大宝箱”,打开宝箱,屏幕会放出烟花,并打出“皮皮,生日快乐!”
原因是:
- 皮爸之前也是一个游戏爱好者,曾经很喜欢RPG类型游戏
- 皮皮最近一年也很迷“寻宝记”这个儿童系列探险丛书
想法落地受阻
想法虽好,不过是否可以落地主要还要看皮爸是否能在github上找到类似项目。
啥?有了想法不是应该马上打开IDE开始开发吗?
不要着急动手,先分析一下现实情况:
- 虽然皮爸编程多年,但是Python用的还不是很多,而且从没有编写过游戏
- 皮爸平时工作也很忙,找不到时间来从头编写一个游戏,能利用的时间只有本周六晚上
所以,需要借助一个神奇的网站“github”来寻找一个类似项目,把它改成适合皮皮生日的。
不过搜索了一会,发现PyGame的RPG虽然有,不过没有找到比较合适的。能有项目介绍的,一般都是那种“巨型项目”,估计能看懂代码就需要一两天完整的时间。
想象很美好,现实很骨感。不过不要气馁,办法总比困难多。那我是不是能换个主题,搜索一下“Python” + “Happy Birthday”呢。于是:
发现可行项目
通过搜索,发现了一个很匹配的项目: https://github.com/borninfreedom/HappyBirthday 《用python制作的送给女票的生日礼物》。 其原始演示视频:https://www.bilibili.com/video/BV1R7411C7A1
哇,感觉可行:
- 代码简单
- 项目主要使用 python 的 turtle库来绘制生日蛋糕和最后的小人,而皮皮之前也用turtle做过一些图形,皮皮应该对这个库比较感兴趣。
这个项目的程序运行后,会分为3个部分:
- 部分一:在照片上逐行打印几句煽情的话。
- 部分二:绘制生日蛋糕和烟花
- 部分三:绘制一下小人
开始修改代码
于是开始修改代码,修改后,仍为3部分
- 部分一:仍然是照片上打印上几句话的形式。但是替换为类似PPT的方式,就是每打印一句话,背景换为皮皮不同年龄的照片。
- 部分二:基本保持不变,修改一下文案,稍微替换了一下背景色
- 部分三:绘制的小人还是挺有意思的,修改了一下文案,其它保持不变
另外替换了一下各个部分的背景音乐,第一部分换成了“You are my sunshine”,后面选了两种不同风格的“生日快乐”歌。
期间也遇到了一些问题,比如:Mac下的PyGame播放不了 mp3 格式的背景乐, tutle不能使用PNG或JPEG格式的图片作为背景。
- 经过网上搜索,发现Mac下Python 3.8安装的版本, PyGame只能播放 .wav 格式的音乐,而 turtle 则只能读取 .gif 格式的图片
- 于是,使用Mac下的 VLC 把网上下载的MP3文件转为WAV文件
- 使用Mac下的 PicGIF 软件把 PNG图片转为了GIF图片文件
最终、终于利用周六完成了程序。效果片段如下(去掉了部分一,并对程序进行了加速):