Appearance
第13回 新作プロジェクトとゲームの土台
ここからは、左右へ進み、ジャンプで足場を渡るプラットフォーマーを作ります。シューティングで使った入力・更新・描画の考え方を、新しい作品へ応用します。
配布プロジェクト
第13回の開始用プロジェクトを別のフォルダへ展開し、PlatformerGame2D.sln をVisual Studio 2026で開きます。DXライブラリの設定と素材を利用して、背景とプレイヤーの静止表示を作成します。
配布ファイル一覧
| ファイル | 役割 |
|---|---|
Source/Config/ApplicationConfig.h | 画面サイズと更新間隔の設定 |
Source/main.cpp | DXライブラリの初期化と終了 |
Assets/Images | 使用する画像素材 |
Assets/Maps | 後の回で使用するマップデータ |
Assets/Sounds | 後の回で使用する音声素材 |
この回のゴール
640×480の画面に背景とプレイヤーを表示し、Escape で終了できる状態を作ります。Player クラスはこの回から用意し、次回以降に移動・重力・ジャンプを順に追加していきます。
今回のポイント
Game クラスが入力と描画の順序を統括し、Player クラスが自身の位置を保持します。ImageManager は画像の読み込みと解放を管理します。画像の幅と高さも保持し、第20回のスプライト切り出しに利用します。
本プロジェクトの入力判定メソッドは、押し続けが IsHeld()、押した瞬間が IsPressed() です。シューティング教材の IsDown() が本教材の IsHeld() に対応します。操作の種類を表す列挙型は Input::Action から Input::Key へ名称が変わりますが、入力状態を Game から Player へ渡す設計思想は共通です。
作業の準備
第13回は配布された初期状態から始めます。今回の新規ファイルは、本文を進めながら追加します。ファイルの登録方法や変更の引き継ぎ手順は、配布ファイルの手順で確認できます。
| 作業 | 対象 |
|---|---|
| 新規作成 | Source/DxGame/Rect.h、Source/DxGame/Vector2.h、Source/Platformer/Game.cpp、Source/Platformer/Game.h、Source/Platformer/ImageManager.cpp、Source/Platformer/ImageManager.h、Source/Platformer/Input.cpp、Source/Platformer/Input.h、Source/Platformer/Player.cpp、Source/Platformer/Player.h |
| 既存ファイルへ追記・編集 | Source/main.cpp |
| 重点的に実装・確認する処理 | Game::Initialize、Game::MainLoop、Game::Draw |
ヘッダーの宣言、#include、登録テーブル、エラー処理などは、最終ステップの参考実装を参照できます。重点関数は各ステップで処理の流れを確認しながら記述します。関数を変更する際は、宣言・定義・呼び出し元の整合性を保ちます。
今回は ApplicationConfig.h の起動設定を利用します。GameTuning.h は第14回で追加します。素材はプロジェクト直下の Assets/ フォルダを編集します。
第13回の目次
1 / 4プロジェクトの境界と名前空間の分離新作プロジェクトにおいて、汎用数学型、アプリケーション設定、作品固有コードの置き場所を明確に分離し、名前空間による安全な境界を設計します。2 / 4DXライブラリのライフタイムとスコープ制御
main.cpp におけるDXライブラリの初期化と終了処理の対応関係を正しく構築し、RAIIを用いてリソース解放の順序を安全に制御します。3 / 4画像リソース管理と解像度情報の保持画像ハンドルとファイルパスを ImageManager に集約し、スプライトシート切り出しを見据えて元画像の寸法(幅・高さ)を合わせて保持する設計を学びます。4 / 4背景とプレイヤーを表示するGameが入力を確認し、背景とプレイヤーを繰り返し描画します。動作確認
- 背景の手前にプレイヤーが表示される
- Escape でゲームが正常に終了する
- 入力、描画、画面反転、待機の処理順序を説明できる
次回は、このPlayerに左右移動と、表示範囲・命中範囲を加えます。