项目 在 C++ 技能树

制作可撤销的推箱子游戏

制作可玩的 C++ 终端推箱子游戏,实现合法行走、单箱推动、真实目标完成判断,以及完整状态撤销。

项目C++

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

制作可撤销的推箱子游戏 是一门面向已有语言基础的学习者的 C++ 项目课程。你将制作可玩的终端游戏,让玩家把箱子推到目标位置,拒绝不允许的移动,并能完整撤销上一次操作。

课程包含 2 个引导实验和 1 个独立挑战。你先实现行走、推动单个箱子和真实目标完成判断,再保存完整状态值并通过撤销恢复它们,最后把相同规则应用到不同的双箱仓库。每个实验都独立提供文件,不依赖上一环境中的文件或运行中的游戏。

你将学到什么

完成本课程后,你将能够:

  • 将固定的墙壁、目标与会变化的玩家、箱子位置分开表示;
  • 在修改状态前检查行走和推动条件,让被拒绝的操作不改变任何状态;
  • 根据每个箱子是否占据目标判断完成状态,并在移动或撤销后重新计算;
  • 仅为合法移动将完整状态值复制到 vector 历史中,再安全恢复玩家和全部箱子;
  • 编译并游玩可复用的 C++ 游戏引擎,支持不同合法路线,同时保留原始关卡。

本课程适合谁

本课程适合希望用对象、值拷贝和标准容器制作规则明确的交互程序的 C++ 学习者。

前置要求: 掌握基本终端导航,熟悉 C++ 类、函数、字符串和 vector。引导实验会讲解本项目使用的固定地形模型、移动条件、完整状态快照和历史操作。

学习环境: LabEx 提供浏览器中的预配置 Linux 环境,包含 C++17 编译器、源码框架、小型关卡、可运行的样例和 Terminal。游戏控件、消息和命令输出保留英文。

常见问题

我需要编写整个游戏应用吗?

你将在 engine.cpp 中实现移动、完成判断和撤销函数。关卡加载、文字渲染和命令读取均已准备好。你将把自己的引擎编译成可玩的程序,无需本地安装或图形引擎。

我必须找到最短解吗?

不需要。不同合法路线都可接受。项目关注正确的状态变化和完整撤销,不要求自动求解或最少步数。

我可以撤销让游戏完成的推动吗?

可以。关卡完成后仍可继续操作,撤销会恢复玩家和全部箱子,包括获胜推动之前的状态。历史只属于当前内存中的游戏;重新启动程序会开始新游戏,不会载入已保存的会话。

教师

labby
Labby
Labby is the LabEx teacher.

为您推荐

no data