Skip to content

第01回 プレイヤーの表示と操作 ​

全12回を通して、C++とDXライブラリで縦スクロールシューティングゲームを段階的に制作します。
プレイヤーを操作して弾を撃ち、画面上端から迫る敵や敵弾をかわして得点を重ねます。最後には、クリアとゲームオーバーまで遊べるゲームに仕上げます。

第01回では、ゲームの基本構造となるゲームループを理解し、画面上にプレイヤーの画像を表示してキーボード操作で動かせるようにします。

入力を調べ、座標を更新し、その座標で描く処理を、複数のクラスで分担します。

最初にGameからPlayer::UpdateとPlayer::Drawを呼ぶ場所を探してください。入力・更新・描画の順序を確認します。

始める前に ​

変数・条件・繰り返しと、関数の引数・戻り値を確認してください。クラスによる役割分担は本文で説明します。確認したい場合は、引数と戻り値を参照してください。

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

配布プロジェクト ​

制作の開始点となるVisual Studioプロジェクトを配布します。
第01回のプロジェクトを展開し、ShootingGame2D.slnをVisual Studio 2026で開いてください。
配布プロジェクトには、DXライブラリの初期化、キー入力の受け付け、ゲームループの基本処理が実装されています。起動すると、何も描かれていない黒いウィンドウが表示されます。

配布ファイル一覧
ファイル役割
Source/Shooting/Game.cppゲーム全体の進行とループ処理
Source/Shooting/Player.hプレイヤークラスの定義
Source/Shooting/Player.cppプレイヤーの初期化、表示、入力に応じた位置更新
Source/Shooting/Tuning/GameTuning.h移動速度や開始位置などの調整パラメータ
Source/Shooting/Input.hゲーム内の操作を表すアクションの定義
Assets/Images/Player.pngプレイヤー用の機体画像

この回のゴール ​

黒いウィンドウのみが表示される初期状態から、プレイヤーの画像を表示してキーボード操作で上下左右・斜めへ自由に移動できる状態までを実装します。

  • プレイヤー画像を読み込み、画面下部の開始位置へ正しく表示できる
  • 矢印キーまたはWASDキーの入力に応じて、プレイヤーを上下左右および斜めへ移動させることができる
  • ゲームループ(入力 → 更新 → 描画)の仕組みと処理順序を理解する
  • GameTuning.hのパラメータを変更し、移動速度の変化を確認・調整できる
操作キー動作内容
左右キー またはA・Dプレイヤーが左右へ水平移動する
上下キー またはW・Sプレイヤーが上下へ垂直移動する
Escapeゲームを終了する

今回のポイント ​

リアルタイムゲームでは、入力を受け取り、ゲーム内の状態を更新し、最新の状態を画面へ描く処理を毎フレーム繰り返します。この繰り返しをゲームループと呼びます。

ゲームループでは処理の順序が重要です。入力を受け取る前に移動を計算したり、更新する前に描画したりすると、操作の遅延や表示の不整合が生じます。

ゲーム全体の進行はGame、自機の状態はPlayerで管理します。Gameでは毎フレームの処理順序を決め、移動や表示はPlayerで行います。役割を分けると、後で敵や弾が増えても、処理を整理してゲームループへ組み込めます。

ゲームループと責務の分離
Windows入力
キー入力を取得
Game
Game
入力情報と経過時間を渡してUpdateを依頼
Player
Player
入力に応じて現在位置を更新
Player
Game
描画機能(ImageManager)を渡してDrawを依頼
Player
Player
最新位置に機体画像を描画
画面

作業の準備 ​

第01回は配布された初期状態から始めます。今回の新規ファイルは、本文を進めながら追加します。ファイルの登録方法や変更の引き継ぎ手順は、配布ファイルの手順で確認できます。

作業対象
新規作成なし
既存ファイルへ追記・編集Source/Shooting/Player.cpp、Source/Shooting/Tuning/GameTuning.h
重点的に実装・確認する処理Player::Update

ヘッダーの宣言、#include、登録テーブル、エラー処理などは、最終ステップの参考実装を参照できます。重点関数は各ステップで処理の流れを確認しながら記述します。関数を変更する際は、宣言・定義・呼び出し元の整合性を保ちます。

GameTuning.hには今回必要な定数を追記し、自身で調整した値を管理します。

第01回の目次 ​