CLASSIC ARCADE MACHINE

C++ OOP 经典贪吃蛇街机厅

大一 C++ 面向对象程序设计结课高分作品的现代 Canvas 像素重铸版

Map Grid

GameStats HUD

Machine ID: PK-0000-0000
当前得分
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)
NOMADIC FLIGHT // 随信风起航麦穗与星野之间 · 随风而行