红帽子AI游戏开发系列3:《贪吃蛇》
发表于 2024-11-04 11:23:24

        大家好,我是你们的InsCode老师红帽子先生,今天我将继续带领大家感受AI游戏开发的神奇之旅,希望在这一系列的游戏开发课程中,能够让大家认识到InsCode AI编程的魅力。

        我发现许多推荐AI开发工具的UP主都喜欢把《贪吃蛇》作为一个演示案例,除了《贪吃蛇》本身逻辑简单,容易展示之外,还有就是《贪吃蛇》操作起来,紧张刺激,容易激起玩家的兴趣。今天我们也来做一做《贪吃蛇》,希望大家能喜欢!

一、基本框架

        首先我们先创建好Python工程“Snake”,然后在main.py中删除所有代码,按下CTRL+J,输入基本需求:“基于pygame开发一个贪吃蛇游戏。”

        回车后AI就会开始进行代码编写,并很快生成一个可以执行的最简单的贪吃蛇游戏,画面上有两点小方块,一个小方块代表贪吃蛇,另一个小方块代表食物,用键盘上、下、左、右操作就可以让贪吃蛇移动起来。

        当贪吃蛇吃到另一个小方块时,贪吃蛇的尾巴会增加一个小方块,当贪吃蛇碰到窗口时,游戏结束,显示一些文字。

        有时我们会看到如图中所示的乱码,这是因为代码使用了汉字,但pygame的字体不支持汉字造成的,我们稍后会来讲解如何处理字体显示的问题。

二、强化游戏画面

        我们都知道,游戏画面很重要,首先我们来先改进一下游戏画面,老规矩,红帽子老师已经给大家准备好了资源图片。这里我们用到三张图片,分别是游戏背景图bg.jpg,蛇的身体body.png和蛇头head.png。

                

        我们全选代码,然后CTRL+J与AI进行对话,输入:“设置窗口大小为800x600,设置bg.jpg为背景图,设置游戏中的蛇以head.png为蛇头,以body.png为蛇身,图片大小设为20x20像素,修改食物用一个大小和碰撞范围为48x48像素的随机颜色小圆点表示。”

        AI对代码修改完成后,点击运行,这时我们可以看到游戏场景变成了一片草地,上面有一个蛇头和一个代表食物的圆形小点。

        当我们按下左右移动时,蛇头就会向相应位置移动,但是没有跟移动方向转向,这就需要对代码进一步提出需求:“修改代码,让贪吃蛇移动时,头部默认向上的图片跟随方向转动保持一致。同时要让蛇身体跟随蛇头前进时每一个body.png都随着前进的方向调整旋转方向。”

        接受生成的代码,这时当我们改变运动方向时,可以看到蛇头也会跟据转向了。但当贪吃蛇吃到食物时,身后增加的body.png会显示在蛇头的前面,而不是身后,画面如下:

       这时,如果我们不太好描述修改提示词,也可以来尝试对代码进行一些修改,作为一个新手,我们要一下子看懂所有的代码,还是需要一些注释的,这时我们可以CTRL+J全选代码,然后在代码下面弹出的选项按钮栏中点击“注释”,这时AI就会启动对代码的逐行生成注释。

     在注释生成完后,我们可以通过阅读注释找到对应的处理函数,比如在老师这里有一个our_snake函数,用于显示蛇头和蛇身。

        我们可以根据错误的效果来改动函数,确保蛇身和蛇头绘制的顺序正确。

        完成修改后,再次运行,贪吃蛇的显示就正确啦!

三、音乐与效果

        想要提升游戏的动态效果,音乐音效不可少,红帽子老师已经为大家准备了bg.mp3,eat.wav,failed.wav三个文件作为背景音乐,吃豆时播放的音效文件和失败时播放的音效文件,我们要做的是使用提示语“设置循环播放bg.mp3为背景音乐、设置蛇吃到食物圆形时播放eat.wav音效,失败时播放failed.wav。”对代码进行修改。

        果然,接受后马上就有音乐音效了,配合着有趣的操作,咱们的游戏越来越好玩了!

四、分数与计时

        贪吃蛇好玩之处在于紧张刺激的动作操作,许多同学们也喜欢一次次的挑战之前的成绩,所以分数与计时的显示不可少,赶快使用“修改代码,在顶部显示游戏计时和吃到食物的数量,在游戏结束时停止下落并显示“游戏结束,按空格键重新开始!”,按下空格键重新开始。”加上分数与计时显示吧。

        但运行时我们发现显示文字是乱码,这是为什么呢?

        原因其实是因为pygame中game.font.SysFont使用的字体不支持中文,这时我们该怎么办呢?

        遇到这种情况,我们可以使用TrueType字体,首先我们先找到一个TTF或OTF字体文件放置在当前的工程目录下,这里我们使用阿里巴巴的普惠体Alibaba-PuHuiTi-Regular.otf,然后输入提示词:“修改代码中的文字显示,使用Alibaba-PuHuiTi-Regular.otf”来修改代码。可以看到在创建字体的位置,AI使用了我们指定的otf来创建字体。

        再次运行项目,这时中文文字的显示就正确啦!大家学到了吗?

五、注意事项

        在开发游戏的过程中,如果遇到有时AI生成的代码与我们期望不一样,比如蛇身与蛇头的显示问题,这就需要小伙伴们在编程时也提高自已的Python算法能力,对常见的循环处理有所了解,只有在掌握Python开发的基础上,才能在遇到问题时不慌,更好的解决问题。

        最后、感兴趣的小伙伴可以加用户群、和红帽子先生一起讨论游戏开发啦!

        

CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
微博关注
【免责声明:CSDN本栏目发布信息,目的在于传播更多信息,丰富网络文化,稿件仅代表作者个人观点,与CSDN无关。其原创性以及文中陈述文字和文字内容未经本网证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本网不做任何保证或者承诺,请读者仅作参考,并请自行核实相关内容。您若对该稿件有任何怀疑或质疑,请立即与CSDN联系,我们将迅速给您回应并做处理。】