Skip to content

Latest commit

 

History

History
86 lines (54 loc) · 3.17 KB

File metadata and controls

86 lines (54 loc) · 3.17 KB

🌯 沙威玛传奇 (Shawarma Legend) - 控制台模拟经营版

这是一个基于 C++ 和 Windows API 开发的控制台模拟经营类游戏。玩家将扮演一名沙威玛店主,在有限的时间内完成订单、管理库存、升级店铺,最终成为沙威玛大师。


🌟 项目亮点 (Technical Highlights)

本项目不仅仅是一个简单的文字游戏,它在技术实现上具有以下特点,非常适合作为 C++ 练手项目:

  1. 高性能控制台渲染
  • 摒弃了传统的 system("cls") 刷新方式,采用 Windows API 的 WriteConsoleOutputW 实现双缓冲渲染,彻底解决了控制台闪烁问题。
  • 自定义 Renderer 类,支持文本绘制、矩形填充及进度条渲染。
  1. 游戏逻辑架构
  • 采用典型的 游戏循环 (Game Loop) 模式,固定帧率(约 24 FPS)处理。
  • 使用 状态机 (State Machine) 管理沙威玛的制作流程(空闲 -> 展开 -> 已卷 -> 烤制 -> 完成)。
  • 运用 STL 容器(std::vector, std::deque)高效管理顾客队列和工作站槽位。
  1. 实时输入处理
  • 利用 PeekConsoleInput 捕获异步键盘输入,保证游戏逻辑更新与玩家操作互不干扰。
  1. 模拟经营要素
  • 包含库存管理、顾客耐心系统、随机订单生成以及店铺升级系统(自动切肉机、店面扩张等)。

🎮 游戏玩法

核心流程

  1. 放置面饼:按 B 键开始制作。
  2. 添加食材:按 I 键循环添加(肉、黄瓜、薯条、番茄酱、沙司)。
  3. 包装与烤制:按 R 卷起,G 送入烤盘,等进度条走满后按 T 取下。
  4. 服务顾客:根据顾客需求准备好卷饼、薯条或可乐,按 S 提交订单赚取金币。
  5. 店铺升级:在关卡结算后的入口界面,使用金币购买升级项,提升经营效率。

操作快捷键

按键 功能 按键 功能
B 放置面饼 I 添加食材/装填小吃
R 卷起面饼 G 上烤盘
T 取下烤好的饼 S 上菜(完成订单)
P 循环补充库存 M/D/J 切肉/切土豆/炸薯条
F/C 拿取薯条盒/可乐杯 Q 退出/结束当天

🛠️ 如何编译运行

环境要求

  • 操作系统: Windows (使用了 Windows 独有的 API)
  • 编译器: 支持 C++17 或更高标准的编译器 (如 GCC/MinGW, MSVC)

编译命令 (以 GCC 为例)

g++ -O3 main.cpp -o ShawarmaLegend.exe -luser32 -lgdi32

📂 项目结构

  • Renderer: 核心渲染引擎,负责控制台双缓冲显示。
  • GameState: 存储游戏全局状态(金币、天数、升级项)。
  • SceneEntrance: 入口与升级界面逻辑。
  • SceneMain: 核心游戏关卡逻辑,处理食材、订单和时间。
  • structs: 定义了 Shawarma, Customer, Inventory 等核心数据模型。

🚀 后续优化方向

  • 增加更丰富的音效(通过 PlaySound API)。
  • 引入更多种类的顾客和特殊事件。
  • 实现存档功能(读写 JSON 或二进制文件)。
  • 增加多语言支持。