blog
blog copied to clipboard
整理:10年前C语言写的几个Windows字符界面经典小游戏(贪吃蛇、迷宫、俄罗斯方块)
最近整理了下10年前用C语言写的几个经典小游戏,都是基于 Windows 的 Win-Api
实现的 字符界面展示,感觉还是挺有意思的,现在回看代码很多都已经忘记了。
有兴趣的可以去下载体验一下(需要 Windows 机器),每个项目的 /bin/release
文件夹下载下来都是编译好可运行的程序。
游戏引擎
所谓游戏“引擎”也是自己实现的,其实就是一个简单的 定时器,不停的轮询,每隔一小段时间就去检测一下数据状态,通过数据的改变不停的刷新页面的展示。
游戏开发核心思想
这类小游戏的开发,有几个核心概念:定时器、状态数据、控制器、图形渲染
- 定时器:loop(数据 => 界面展示)
- 状态数据:有限状态机、数据
- 控制器:接收外部输入(键盘、鼠标、手柄等),改变数据和游戏状态(不用管界面展示)
- 图形渲染:不同的平台和终端,会有不同的渲染引擎(比如这个例子都是基于
Windows Win-Api
实现的字符界面展示)
一、贪吃蛇
![snake](https://github.com/diamont1001/C_snake/blob/master/docs/Kapture%202021-08-02%20at%2014.37.11.gif?raw=true)
贪吃蛇H5版
之前在学习前端开发的时候,也把贪吃蛇改编成 H5 版本 的,点击打开可玩。
![h5 snake](https://user-images.githubusercontent.com/7159888/127929428-785711a3-0d82-43ed-b0f1-ed43ae6e028e.png)
二、迷宫小游戏
迷宫地图的生成算法是参考 “图的深度优先算法” 自己写的。
![maze](https://raw.githubusercontent.com/diamont1001/C_maze/master/docs/1.gif)
![maze](https://raw.githubusercontent.com/diamont1001/C_maze/master/docs/2.gif)
三、俄罗斯方块
![tetris](https://raw.githubusercontent.com/diamont1001/C_tetris/master/docs/1.gif)