手を戻せる倉庫番ゲームを作る は、言語の基礎を学んだ方向けの C++ 実践プロジェクトです。プレイヤーが箱を目標へ押し、できない移動を拒否し、直前の操作全体を元に戻せるターミナルゲームを作ります。
コースは 2 個のガイド付きラボと 1 個の独立したチャレンジで構成されています。まず歩行、箱 1 個の押し出し、実際の目標達成判定を実装します。次に完全な状態の値を保存し、取り消しで復元します。最後に、同じルールを別の箱 2 個の倉庫へ適用します。各ラボは必要なファイルを個別に用意するため、前の環境のファイルや実行中のゲームを引き継ぎません。
学習内容
このコースを修了すると、次のことができるようになります。
- 固定された壁や目標と、変化するプレイヤーや箱の位置を分けて表す。
- 状態を変える前に歩行と押し出しの条件を調べ、拒否した操作では何も変えない。
- すべての箱が目標上にあるかで達成を判定し、移動や取り消し後に再計算する。
- 合法な移動についてだけ完全な状態を
vectorの履歴へ値コピーし、プレイヤーとすべての箱を安全に復元する。 - 元のレベルを保持し、異なる合法な経路で遊べる再利用可能な C++ エンジンをコンパイルして操作する。
このコースの対象者
オブジェクト、値コピー、標準コンテナを使い、明確なルールを持つ対話型プログラムを作りたい C++ 学習者を対象としています。
前提知識: 基本的なターミナル操作と、C++ のクラス、関数、文字列、vector の知識が必要です。ガイド付きラボでは、固定地形のモデル、移動条件、完全な状態のスナップショット、履歴操作を説明します。
学習環境: LabEx がブラウザ内に構成済みの Linux 環境を提供します。C++17 コンパイラ、コードのひな形、小さなレベル、動作するサンプル、Terminal が用意されています。ゲームの操作、メッセージ、コマンド出力は英語です。
よくある質問
ゲーム全体を書くのですか?
engine.cpp に移動、達成判定、取り消しの関数を実装します。レベルの読み込み、文字描画、コマンドの読み取りは準備済みです。自分のエンジンを遊べるプログラムにコンパイルするため、ローカルへのインストールやグラフィックエンジンは必要ありません。
最短手順を見つける必要がありますか?
必要ありません。異なる合法な経路を使えます。中心となるのは正しい状態変化と完全な取り消しであり、自動解法や最適手数ではありません。
クリアにつながった押し出しも取り消せますか?
はい。クリア後も操作を続けられ、取り消すと、クリア直前の状態も含めてプレイヤーとすべての箱が復元されます。履歴は現在のメモリ内のゲームに属します。プログラムを再起動すると新しいゲームが始まり、保存済みセッションを読み込むわけではありません。

