找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3694

积分

0

好友

496

主题
发表于 昨天 21:47 | 查看: 6| 回复: 0

之前我用STM32+OLED+AI实现了一个贪吃蛇小游戏,具体可以看《Kimi K2.5怎么样?嵌入式应用真的强,它拯救了我在OLED上的贪食蛇小游戏》。感兴趣的朋友很多,刚好这几天不忙,再尝试一个别的游戏。

硬件还是之前的那块板子,这次准备做一个俄罗斯方块的小游戏。这个游戏对于80、90后应该不陌生,在玩具匮乏的那个年代,给我们提供了丰富的精神食粮。

实现步骤如下:

1、工程框架准备

还是做贪吃蛇时候准备的那个工程,STM32F103C8T6做主控,I2C接口的OLED驱动已经移植好,74HC165的按键检测也已经移植好。

工程文件夹列表(OLED和74HC165驱动)

2、提示词准备

我在贪吃蛇游戏提示词的基础上做了修改,适配俄罗斯方块游戏的规则,具体内容如下:

俄罗斯方块开发提示词

3、得到设计方案

我用的AI工具还是kimi code cli,内部模型已经自动更新到了k2.6,据说更强了!上面的提示词发给AI,很快就得到了设计方案:

AI生成的设计方案

它还问我最高分要不要断电保存!额,先不用了。

这里我提示了它一下,游戏相关的源文件和头文件,和驱动文件(IIC、HC165)放到一个路径下,方便管理。

4、开始写代码

这个游戏很简单,所以没有做什么需求分析、任务拆解。上面步骤进行完,就可以开始写代码了。

我趴着玩了会儿手机,不夸张的说,真的没有超过五分钟,它就写完了。

代码架构说明

相关文件创建如下,英文单词tetris,就是俄罗斯方块的意思:

tetris文件夹创建完成

5、两个错误和一个惊喜

先说错误,有两个。第一个,修改main主函数的时候,少写了一个结束的花括号,导致main后面的函数全都报错。我印象里,上次写贪吃蛇好像就出过类似问题,我觉得这是个很低级的问题,但不知道为啥,出现的概率还挺高。

而且,好像在STM32的HAL库里面,出现的概率尤其高!

第二个问题:

编译错误:符号重复定义

有一些重复的定义,告诉AI后很快就改好了。

然后是惊喜,众所周知,keil MDK里面添加了新的文件路径,一般是要手动去工程选项的这个位置去添加:

Keil工程选项-添加头文件路径

但是,kimi直接帮我改好了,省去了我手动添加的步骤,操作如图:

Kimi自动修改Keil工程配置

Keil这个工具比较旧,我还担心kimi改不了,没想到如此丝滑。必须要赞一下!

6、玩游戏

接下来,跟我一起玩游戏吧!

STM32+OLED电路板游戏实拍

游戏界面显示SCORE 100

还有动图:

游戏动态演示(方块下落)

支持左右移动、变形,下面还有虚影预显示摆放结果,向下按还能加速落下,啧啧啧!

最后,关于这个俄罗斯方块,有两个技术点我觉得值得一提:

a、GRAM显存缓冲

它没有在每次画点的时候直接操作OLED,而是先在内存里维护了一个1024字节的缓冲区(8页*128列)。所有绘制完成后,按页通过HAL_I2C_Mem_Write一次性发送128字节。这样每帧只需要8次大数据传输,而不是1024次单字节事务。在100kHz的I2C速率下,勉强能做到8fps左右,玩俄罗斯方块够用了。

如果改为DMA方式传输,速度能更快,但是当前应用够了!

b、踢墙

旋转的时候如果碰壁,它会尝试左右偏移1格或2格。这个功能虽然简单,但大大提高了操作手感,不然贴着墙的时候根本转不了。

总之,这次体验比上次写贪食蛇感觉还要好。一方面是模型确实进步了,另一方面是我自己也学乖了:先规划、再确认、然后一步一步来,不急着催它。

最后的最后,我把完整的对话记录导出了一份MD文档,放在工程根目录下。如果后面想查某个功能的实现细节,随时翻出来看。

有兴趣的同学,也可以自己动手试试。俄罗斯方块这种东西,看着复杂,其实逻辑挺清晰的。有AI帮忙,真的省不少事。

打完收工!




上一篇:Neopets复兴之路:放弃上市高管,香港小哥抢救欧美童年回忆
下一篇:HTML 比 Markdown 更适合 Agent 时代?Theo 的五大理由与 Token 之争
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-5-15 01:02 , Processed in 0.660578 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表