CLASSIC ARCADE MACHINE
C++ OOP 经典贪吃蛇街机厅
大一 C++ 面向对象程序设计结课高分作品的现代 Canvas 像素重铸版
Map Grid
GameStats HUD
当前得分
0
累计步数
0
历史最高分0
最高步数0
总游玩局数0
操控说明
方向键 / WASD 移动;空格暂停。蛇可以穿过地图边缘从对侧穿出;注意避开生成的石质障碍物和自身!
原版 C++ 架构与工程设计
本项目严格遵循面向对象设计原则,模块化拆分为 Game、Map、Snake、Food 与 GameStats 类,无全局变量耦合。
Game (game.h / game.cpp)
核心状态机控制器
负责主循环(60FPS 节拍)、难度映射、按键单帧队列锁步与状态机(MENU, PLAYING, PAUSED, GAME_OVER)流转。
Map (map.h / map.cpp)
地图与动态拓扑障碍物生成器
根据难度(简单10组/中等15组/困难25组)程序化放置直线、L形、T形与方形石块,并开辟蛇头前方 5 格安全区。
Snake (snake.h / snake.cpp)
蛇身双向端点与穿墙传送
维护 Point 向量,处理蛇头移动、边缘无缝穿墙跃迁、自咬检测与转向防倒推校验。
Food (food.h / food.cpp)
排他随机食物调度器
避开障碍物与蛇身已有坐标,使用候选空白网格洗牌索引保证 100% 出现可达食物。
GameStats (game_stats.h / game_stats.cpp)
二进制数据持久化管理
记录全难度历史最高分、最高步数与游玩总局数,在 C++ 原版中落盘为 snake_stats.dat,本站中由硬件指纹同步。
// C++ Header Dependency Topology (Level 0 to 5)
main.cpp
└──> Game (game.h)
├──> game_constants.h (Level 0: Window, Cell Size, Points, Enums)
├──> Map (map.h) (Level 1: Procedural Obstacles & Boundaries)
├──> Snake (snake.h) (Level 2: Head/Body Vector, Collision, Wrap)
├──> Food (food.h) (Level 3: Safe Coordinates Dispatcher)
└──> GameStats (Level 1: Binary Disk I/O snake_stats.dat)