Skip to content

第13回 新作プロジェクトとゲームの土台 ​

ここからは、左右へ進み、ジャンプで足場を渡るプラットフォーマーを作ります。入力・更新・描画を分担し、独立したプロジェクトとして組み立てます。

始める前に ​

変数・条件・繰り返し・関数と、クラスのメンバーへのアクセスを確認してください。入力・更新・描画の順序は本文で確認します。確認したい場合は、クラスとゲームループを参照してください。

前の回の受講や完成物は必須ではありません。下の開始用プロジェクトを使い、配布済みの処理と今回追加する処理を確認してから進めます。

配布プロジェクト ​

第13回の開始用プロジェクトを別のフォルダへ展開し、PlatformerGame2D.sln をVisual Studio 2026で開きます。DXライブラリの設定と素材を利用して、背景とプレイヤーの静止表示を作成します。

配布ファイル一覧
ファイル役割
Source/Config/ApplicationConfig.h画面サイズと更新間隔の設定
Source/main.cppDXライブラリの初期化と終了
Assets/Images使用する画像素材
Assets/Maps後の回で使用するマップデータ
Assets/Sounds後の回で使用する音声素材

この回のゴール ​

640×480の画面に背景とプレイヤーを表示し、Escape で終了できる状態を作ります。Player クラスはこの回から用意し、次回以降に移動・重力・ジャンプを順に追加していきます。

今回のポイント ​

Game クラスが入力と描画の順序を統括し、Player クラスが自身の位置を保持します。ImageManager は画像の読み込みと解放を管理します。画像の幅と高さも保持し、第20回のスプライト切り出しに利用します。

本プロジェクトの入力判定メソッドは、押し続けが IsHeld()、押した瞬間が IsPressed() です。操作の種類を表す列挙型には Input::Key を使い、入力状態を Game から Player へ渡します。

シューティング教材との対応

シューティング教材の IsDown() は本教材の IsHeld() に、Input::Action は Input::Key に対応します。ほかの教材のコードを参照する場合に確認してください。

作業の準備 ​

第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回の目次 ​

動作確認 ​

  • 背景の手前にプレイヤーが表示される
  • Escape でゲームが正常に終了する
  • 入力、描画、画面反転、待機の処理順序を説明できる

次回は、このPlayerに左右移動と、表示範囲・命中範囲を加えます。

ゲームプログラミング実践