Snake/
│
├── main.c # 主程序入口
├── snake.h # 头文件,包含结构体定义和函数声明
└── snake.c # 游戏核心逻辑实现
-
蛇身采用单向链表实现:
SnakeNode: 存储蛇身每个节点的坐标Snake: 包含蛇的整体信息(头节点、方向、状态等)
-
游戏状态:
- 使用枚举类型表示蛇的移动方向和游戏状态
- 使用二维数组
SnakeMap记录地图信息
-
初始化
- 初始化控制台窗口和游戏参数
- 随机生成墙壁
- 初始化蛇的位置和长度
-
移动机制
- 通过键盘方向键控制蛇的移动方向
- 使用链表操作实现蛇的移动
- 在头部添加新节点,尾部删除节点
-
食物系统
- 随机生成食物位置
- 不同食物具有不同分值
- 吃到食物后增加蛇的长度
-
碰撞检测
- 检测是否撞墙
- 检测是否撞到自身
- 根据碰撞结果更新游戏状态
-
分数系统
- 记录当前得分
- 保存历史最高分
- 显示分数排行榜
- ↑↓←→ 方向键控制蛇的移动
- 空格键暂停游戏
- ESC键退出游戏
- Windows操作系统
- C语言编译器(如GCC)
- 支持Unicode字符显示
- 游戏仅支持Windows平台
- 需要控制台支持Unicode字符显示
- 游戏界面使用了Windows API进行控制台操作
- 吃到超过10分的食物后,蛇尾部增加的节点可能会与蛇身脱节
- 结束游戏后可能会自动重新开始,自动重新开始前一局的积分会被自动放在积分榜的最后一个位置而不是参与排名
- 结束游戏后出现的
重新开始(y/n)的提示的后面,会有前几次游戏结束后出现的重新开始(y/n)的提示的字符残留