第04回 キャラクターの追加
第03回で作成したプレイヤー操作の青いロボットに加え、2体目のキャラクターとしてオレンジ色のロボット(Walker)を画面に配置します。2体目の座標を独立した別の変数で管理することで、互いに干渉することなく同時に存在できる仕組みを学びます。
さらに、オレンジ色のロボットに「毎フレーム自動で移動し、左右の画面端に衝突すると向きを反転して往復し続ける」自律動作(敵キャラクターの初歩)を実装します。符号付きの「速度変数」を用いた移動制御と、重なり順(描画順)の前後関係を理解しましょう。
この回のゴール
青いロボットと左右に往復するオレンジ色のロボットを表示した画面
- 2体のキャラクターがそれぞれ独立した座標変数と画像ハンドルを持っていることをコードから読み取れる
- 速度変数の正負(符号)を反転させることで、壁での跳ね返り往復移動を実装できる
- 描画関数の呼び出し順序が、画面上のキャラクターの重なり順(前後関係)を決定する仕組みを説明できる
始める前に
座標の変数、条件分岐、ゲームループでの更新を確認してください。確認したい場合は、繰り返しと移動/キー入力を参照してください。
前の回の受講や完成物は必須ではありません。下の開始用プロジェクトを使い、配布済みの処理と今回追加する処理を確認してから進めます。
配布プロジェクト
第04回の開始用プロジェクトをダウンロードしてすべて展開し、展開先にある CppBasics.sln をVisual Studio 2026で開きます。
ウィンドウ上部のツールバーで、ビルド構成が Debug、プラットフォームが x64 に設定されていることを確認してください。ここには第03回終了時点(青いロボットの四方向移動と画面端制限が完了した状態)のコードが含まれています。
編集するソースファイルは、引き続き Source/main.cpp です。第03回で作成した自身のプロジェクトを継続して使用しても構いません。
配布ファイル一覧
| ファイル | 役割 |
|---|---|
| Source/main.cpp | 今回の開始時点のコード |
| CppBasics.sln | プロジェクトをVisual Studioで開くためのファイル |
| Robot.png | 幅48・高さ48ピクセルの青いロボット画像 |
| Walker.png | 幅48・高さ48ピクセルのオレンジ色のロボット画像(今回使用) |
表のリンクから個別ファイルの内容を確認できますが、実習を行う際は必ず上記のZIPを一括展開して使用してください。
今回のポイント
画面上では2体のキャラクターが同時に動いているように見えますが、プログラム内部ではメインループの中で「青いロボットの更新 → オレンジ色のロボットの更新 → 青いロボットの描画 → オレンジ色のロボットの描画」と1つずつ順番に処理されています。
自律移動するキャラクターには、位置だけでなく「速度(向きと大きさ)」を変数として持たせます。端に達したときに speed = -speed; によって符号を反転させるプログラミングパターンを習得しましょう。
第04回の目次
speed = -speed; で進む向きを反転する処理を組み合わせます。3 / 3パラメーターの変更と動作の分離2体のキャラクターの位置や移動速度を調整し、どの変数がどの挙動を決定しているかを特定します。値や描画順序を一つずつ変え、もう一方のキャラクターへの影響も確認します。