这是一个基于 C++ 和 Windows API 开发的控制台模拟经营类游戏。玩家将扮演一名沙威玛店主,在有限的时间内完成订单、管理库存、升级店铺,最终成为沙威玛大师。
本项目不仅仅是一个简单的文字游戏,它在技术实现上具有以下特点,非常适合作为 C++ 练手项目:
- 高性能控制台渲染:
- 摒弃了传统的
system("cls")刷新方式,采用 Windows API 的WriteConsoleOutputW实现双缓冲渲染,彻底解决了控制台闪烁问题。 - 自定义
Renderer类,支持文本绘制、矩形填充及进度条渲染。
- 游戏逻辑架构:
- 采用典型的 游戏循环 (Game Loop) 模式,固定帧率(约 24 FPS)处理。
- 使用 状态机 (State Machine) 管理沙威玛的制作流程(空闲 -> 展开 -> 已卷 -> 烤制 -> 完成)。
- 运用 STL 容器(
std::vector,std::deque)高效管理顾客队列和工作站槽位。
- 实时输入处理:
- 利用
PeekConsoleInput捕获异步键盘输入,保证游戏逻辑更新与玩家操作互不干扰。
- 模拟经营要素:
- 包含库存管理、顾客耐心系统、随机订单生成以及店铺升级系统(自动切肉机、店面扩张等)。
- 放置面饼:按
B键开始制作。 - 添加食材:按
I键循环添加(肉、黄瓜、薯条、番茄酱、沙司)。 - 包装与烤制:按
R卷起,G送入烤盘,等进度条走满后按T取下。 - 服务顾客:根据顾客需求准备好卷饼、薯条或可乐,按
S提交订单赚取金币。 - 店铺升级:在关卡结算后的入口界面,使用金币购买升级项,提升经营效率。
| 按键 | 功能 | 按键 | 功能 |
|---|---|---|---|
| B | 放置面饼 | I | 添加食材/装填小吃 |
| R | 卷起面饼 | G | 上烤盘 |
| T | 取下烤好的饼 | S | 上菜(完成订单) |
| P | 循环补充库存 | M/D/J | 切肉/切土豆/炸薯条 |
| F/C | 拿取薯条盒/可乐杯 | Q | 退出/结束当天 |
- 操作系统: Windows (使用了 Windows 独有的 API)
- 编译器: 支持 C++17 或更高标准的编译器 (如 GCC/MinGW, MSVC)
g++ -O3 main.cpp -o ShawarmaLegend.exe -luser32 -lgdi32
Renderer: 核心渲染引擎,负责控制台双缓冲显示。GameState: 存储游戏全局状态(金币、天数、升级项)。SceneEntrance: 入口与升级界面逻辑。SceneMain: 核心游戏关卡逻辑,处理食材、订单和时间。structs: 定义了Shawarma,Customer,Inventory等核心数据模型。
- 增加更丰富的音效(通过
PlaySoundAPI)。 - 引入更多种类的顾客和特殊事件。
- 实现存档功能(读写 JSON 或二进制文件)。
- 增加多语言支持。