Devbox 支持一键起 C/C++ 环境,结合 Cursor,我们就可以很快开发 C/C++ 项目了,这里以我在大学时写的一个还算有点技术含量的小 Demo 为例给大家介绍一下。
实现效果,上班时在 IDE 中玩俄罗斯方块,老板能发现?话不多说,上号:
一键创建干净的 C/C++ 环境
我们很多时候都因为环境不干净,依赖库版本不对而构建开发环境非常累,而 Devbox 就完全没有环境问题,按照我的来绝对不会出错。
https://hzh.sealos.run 点 Devbox, 选 C++ 环境,有手就会
创建好后点 Cursor IDE,直接通过本地 IDE 连接这个环境
Clone 代码并编译
先跑个 hello world 试试水
clone 代码:
$ git clone https:
$ cd tetris/src && make
$ ./game
大功告成!
源码分析
以下如果对 C++ 感兴趣的可以看,这个小项目挺有一些有意思的东西的。比如:
- 如何在终端里打出各种颜色的色块
- 通常游戏的刷新是整个屏幕都刷新掉,而我采用的局部擦除,比如方块落下时只刷新方块那里
- 控制方块旋转
- 如何监听键盘,你要是有什么 UI 库去做很简单,裸 C++ 输入都有缓存,那就意味着你输入 a 时要按 enter 才能获取到这个值,怎么处理?
- 怎么移动光标?
小方块对象
每个方块有自己的坐标和颜色,可以设置它的位置和颜色,可以打印出这个方块点。
光标
把保存光标的位置,把光标移动到你想移动的坐标,恢复光标位置。
方块
这个矩阵就对应着 Z 字方块。
可以控制它的移动方向,旋转,坠落,设置它的位置,获取它的位置,并打印显示它。
打印 & 光标移动 & 旋转
打印色块并不神奇,用的是 printf 函数打印空格。想要擦掉那打印成黑色就行。所以可以做到局部擦除,而不需要一帧一帧刷新整个屏幕。
光标移动没错,依然是 printf,没想道 printf 这么强大吧
旋转就是一个矩阵旋转
监听键盘线程和关闭输入缓存
这样键盘你按下什么 key 就能获取什么,而不需要按 enter 之后才能获取。
main 里面创建两个线程,一个监听键盘,一个刷游戏页面。
总结
这个项目虽小,但涉及不少知识点,也比较讲工程能力,抽象能力。 主要是所有东西基本都自己裸写,很考验基本功,是个学习 C++ 的好材料,有了上机的基础,大家可以尝试去写贪吃蛇之类其他小游戏,没什么卵用,主要是学习和有趣,分享给大家~