学生课程设计作品:用Python写了一个可以登录、积分、打Boss的“飞机大战”
上学期期末的Python课程设计中,有一组学生用Python做了飞机大战游戏开发,在演示的时候觉得还不错,拿来分享一下。
第一步:先启动数据库
这个游戏需要用到数据库,学生使用的是MySQL数据库,数据库中保存个人信息,启动游戏的时候,需要确保本地MySQL服务开着。
打开Windows的“服务”管理器,找到MySQL80,如果状态是“手动”或者没有显示“正在运行”,就点击左侧的“启动此服务”。
等进度条跑完,服务状态变成“正在运行”,游戏程序就能正常连接数据库了。这一步虽然简单,但很多人会忽略,建议把它写进项目的README里,方便别人运行你的代码。
第二步:游戏的“素材库”都需要什么?
一个完整的游戏,都需要准备不少图片和音频资源。把所有素材都按类型分好了文件夹,主要分成背景图、飞机图、子弹图、爆炸特效、道具图标、UI按钮和音效这几类。
音效部分主要分成了背景音乐和动作音效两类。game_music.ogg是整场游戏的背景音乐,其他像bullet.wav、enemy1_down.wav、get_bomb.wav、me_down.wav这些则是对应发射、击毁、拾取、受伤等动作音效。背景音乐用ogg格式压缩率更好,动作音效用wav格式响应更快,适合这种快节奏的射击游戏。
图片资源大致可以分成几类:背景图、玩家飞机、三种敌机、多级子弹、爆炸帧序列、补给道具、UI按钮和生命值图标。爆炸效果用的是多帧图片连续播放,比如enemy1_down1.png到enemy1_down4.png,敌机被击落时依次显示,就能形成简单的动画。玩家飞机有me1.png和me2.png两帧,快速切换就能做出机翼摆动的效果。
这些素材不一定要自己画,网上有很多免费资源包可以用。关键是命名要规范、尺寸要提前统一好,否则代码里加载时很容易出错。
第三步:登录系统
游戏启动后首先进入的是登录界面。背景是一张二战风格的战斗机编队图,上面有大大的“飞机大战”标题,下面两个输入框分别输入用户名和密码。
密码框旁边标注了“密码禁止输入中文”,这是为了避免编码问题。输入完成后点击“登录”按钮,程序会去MySQL里验证账号。如果是新用户,也可以自动注册。登录成功后,会跳转到游戏主菜单。
第四步:主菜单,选择你要做什么
登录成功之后,主菜单会显示“欢迎回来,user!”,背景是一片蓝天白云,和登录界面的战斗氛围形成了反差。
主菜单有五个按钮:开始游戏、排行榜、个人信息、退出登录、退出游戏。点“开始游戏”进入对战;点“排行榜”可以看到所有玩家的历史最高分;点“个人信息”可以查看自己的账号数据和战绩。加上排行榜和个人信息之后,整个项目会更像一个完整的游戏,而不只是能玩一局的demo。
第五步:进入游戏,看看界面都有哪些信息
点击“开始游戏”后,就进入了真正的对战画面。窗口标题显示的是“飞机大战 -- FishC Demo”。
游戏界面的信息很清晰:左上角Score : 1000实时显示当前分数;右上角是暂停按钮;左下角×3表示当前有3颗全屏清敌的炸弹;底部一排红色爱心是生命值。玩家飞机在屏幕下方,通过键盘控制左右移动并自动向上发射子弹。背景是一片绿色峡谷和蜿蜒的河流,色调比较清新,玩久了也不会太费眼。
第六步:玩法逐渐升级,敌机和Boss出现
游戏刚开始时敌机数量不多,主要是让玩家熟悉操作。随着分数增加,敌机种类和数量都会变多。
分数涨到8000左右,会出现体型更大、血量更厚的第二种敌机。这时候需要多接bullet_supply补给升级子弹,或者用炸弹清场。
分数达到16000左右时,会出现一个大型蓝色Boss飞机,头顶有一条绿色血条。Boss不会一击必杀,需要持续输出,游戏节奏也从“躲避清小怪”变成了“集中火力打Boss”,是整个游戏的高潮部分。
这个飞机大战虽然看起来不大,但涉及到的知识点并不少:Python基础、Pygame图形渲染、MySQL数据库连接、用户登录验证、音效播放、精灵动画、碰撞检测、分数持久化等等。对于初学Python的同学来说,是一个把零散知识串起来的好项目。
建议先从“玩家飞机+敌机+子弹”这个最小版本开始,核心玩法跑通了,再逐步加入登录、排行榜、Boss这些功能。不要一上来就想做完整版,容易半途而废。
源代码我会放在文章最后,感兴趣的同学可以直接下载运行。运行前记得先启动MySQL服务,有问题欢迎在评论区交流。
17组+飞机大战.zip