Skip to content

第10回 C++実践 独自ゲームの制作 1 / 企画とクラス設計

前回: 第09回 ポインター入門 / メモリアドレスとオブジェクトの寿命 / 次回: 第11回 C++実践 独自ゲームの制作 2 / 基本動作の実装

前回の振り返り

ポインターとオブジェクトの寿命に触れました

  • ポインターは、値ではなく場所を持つ変数です
  • nullptr は、何も指していない状態を表します
  • オブジェクトには寿命があり、使えなくなった場所を参照すると危険です
  • 今回からは、これまでの要素を使って独自ゲーム制作に入ります

今回の目的

作るゲームの形を決める

  • 小さく完成できるゲーム案を決める
  • 必要な画面、操作、ルールを明確にする
  • 登場するオブジェクトを洗い出す
  • クラスや構造体に分ける候補を作る

今回の授業内容

C++実践 独自ゲームの制作 1 / 企画とクラス設計

  • 作品の最小完成形を決める
  • 操作方法と勝敗条件を決める
  • 必要なデータを洗い出す
  • クラス設計の下書きを作る
  • 次回すぐ実装に入れる状態まで準備する

独自ゲーム制作

小さく作って 最後まで持っていきます

欲張りすぎ注意

最小完成形を決める

完成させる範囲を小さくする

  • 操作できる

  • 目的がある

  • 成功または失敗がある

  • 結果が表示される

  • もう一度遊べる見通しがある

  • 最初から要素を増やしすぎると、完成まで届きにくくなります

企画メモの項目

コードに必要な情報まで書く

  • タイトル
  • ジャンル
  • プレイヤーの操作
  • ゲームの目的
  • クリア条件またはスコア条件
  • ゲームオーバー条件
  • 使う画像、音、エフェクト

企画の例

小さな避けゲーム

  • プレイヤーを左右に動かす

  • 上から落ちてくる障害物を避ける

  • 一定時間生き残るとクリア

  • 障害物に当たるとゲームオーバー

  • スコアは生存時間で増える

  • これくらいの範囲なら、今までの内容で実装できます

オブジェクトを洗い出す

画面に出るものを単位にする

| 要素 | 役割 | 数 |
|
|
|
😐
| Player | 操作するキャラクター | 1 |
| Obstacle | 避ける対象 | 複数 |
| Effect | 当たったときの反応 | 複数 |
| GameState | ゲーム全体の状態 | 1 |

  • 画面に出るもの、状態だけを持つものを分けて考えます

持つ情報を考える

値として必要なものを決める

| 要素 | 持つ情報 |
|
|
|
| Player | 位置、大きさ、速度 |
| Obstacle | 位置、大きさ、落下速度、使用中か |
| Effect | 位置、半径、残り時間、使用中か |
| Game | 状態、スコア、タイマー |

  • 先に情報を決めると、構造体やクラスを作りやすくなります

処理を分ける

更新、判定、描画を分けて考える

  • 更新: 位置や状態を変える

  • 判定: 当たったか、条件を満たしたかを調べる

  • 描画: 画面に表示する

  • 入力: キーやボタンの状態を処理へつなげる

  • どの処理がどの要素に関係するかをメモします

クラス設計の下書き

最初は細かくしすぎない

cpp
class Player;
struct Obstacle;
struct Effect;

enum GameState
{
    Playing,
    GameOver,
    GameClear
};
  • プレイヤーは操作と描画を持つため、クラスにしやすいです
  • 複数出る障害物やエフェクトは、構造体と配列から始めても構いません

実装順を決める

画面に出るものから積み上げる

  1. プレイヤーを表示する
  2. プレイヤーを動かす
  3. 障害物を表示する
  4. 障害物を動かす
  5. 衝突判定を入れる
  6. スコアや状態管理を入れる
  7. 音やエフェクトを足す
  • 途中で動かせる状態を保つと、原因を追いやすくなります

企画で避けたいこと

今回は完成を優先する

  • 広いマップを作る

  • 複雑なAIを入れる

  • 大量のステージを作る

  • ネットワーク通信を入れる

  • 3D表現へ広げる

  • 面白さは、小さなルールでも作れます

実習1: 企画メモを作る

小さく完成する案にする

  1. タイトルを書く
  2. 操作方法を書く
  3. 目的を書く
  4. クリア条件またはスコア条件を書く
  5. ゲームオーバー条件を書く
  • 1文で説明できない場合は、少し小さくします

実習2: オブジェクト一覧を作る

登場する要素を分ける

  1. 画面に出るものをすべて書く
  2. それぞれが1つだけか複数かを決める
  3. 持つ情報をメモする
  4. 更新、判定、描画のどれが必要かを書く

実習3: 実装順を決める

次回の作業に入れる形にする

  1. 最初に表示するものを決める
  2. 最初に操作できるものを決める
  3. 最初に判定するものを決める
  4. 今回中に作る範囲、次回以降に回す範囲を分ける

今回のまとめ

今日のポイント

  • 独自制作では、最小完成形を決めることが重要です
  • 画面に出るものを洗い出すと、必要なデータが見えます
  • 更新、判定、描画に分けると、実装順を決めやすくなります
  • 次回は基本動作を実装し、遊べる土台を作ります

おつかれさまでした!

次回予告 第11回 独自ゲーム制作 2

企画をコードに 変えていきます