
C言語入門|STEP5:敵キャラクターとAI-ランダムエンカウントと敵の行動ロジック
はじめに:敵がいてこそRPGは成立する
STEP4では、味方キャラクターの魔法とスキルを実装しました。
STEP5では、いよいよ 戦う相手である「敵キャラクター」 を作っていきます。
RPGにおいて敵は、
- 倒すための存在
- 成長を実感させる存在
- 戦略を考えさせる存在
という、とても重要な役割を担っています。
このSTEPでは、
- 敵キャラクターの定義方法
- ランダムで敵が出現する仕組み
- 敵が自分で行動を選ぶAI
について、全体像を理解していきましょう。

今回のRPGにおける敵の基本ルール
まずは、今回のRPGに登場する敵の特徴を整理します。
| 項目 | 内容 |
|---|---|
| 出現方法 | マップ上の E に触れる |
| 種類 | 複数の通常敵 |
| 行動 | 攻撃または魔法 |
| 魔法 | 敵専用の4種類 |
| 経験値 | 倒すと獲得 |
敵も味方と同じように、
HP・MP・攻撃力・魔力 といったステータスを持っています。
敵キャラクターも構造体で表現する
味方キャラクターと同様に、
敵も 構造体 を使って表現します。
敵が持つ情報は次のとおりです。
| 項目 | 内容 |
|---|---|
| 名前 | 敵の表示名 |
| HP / MP | 現在値と最大値 |
| 攻撃力 | 通常攻撃の強さ |
| 魔力 | 魔法ダメージ用 |
| 経験値 | 倒したときの報酬 |
| ボス判定 | ラスボスかどうか |
| 防御状態 | 被ダメ軽減フラグ |
| 魔法 | 敵専用の魔法 |
「敵もキャラクターの一種」と考えると、
設計がとても理解しやすくなります。
敵専用の魔法が必要な理由
敵は味方と同じ魔法を使う必要はありません。
そのため今回のRPGでは、
- 敵専用の魔法タイプ
- 敵専用の魔法構造体
を用意しています。
敵魔法の役割
| 種類 | 役割 |
|---|---|
| ダメージ | 味方に攻撃 |
| 回復 | 自分を回復 |
| 攻撃力強化 | ATKアップ |
| 防御 | 被ダメ軽減 |
これにより、
- 敵らしい行動
- 単調にならない戦闘
を実現しています。
敵テンプレートという考え方
今回のRPGでは、
敵を直接その場で作るのではなく、テンプレートを用意 しています。
敵テンプレートとは、
- スライム
- ゴブリン
- スケルトン
- オーク
- ダークメイジ
- ワイバーン
といった、敵の設計図 のようなものです。
テンプレートを使うメリット
敵テンプレートを使うことで、次のような利点があります。
| メリット | 内容 |
|---|---|
| 再利用 | 同じ敵を何度でも作れる。 |
| 調整簡単 | 数値を1か所で変更 |
| 拡張容易 | 新しい敵を追加しやすい。 |
RPG制作では、
「テンプレート化」 がとても重要な考え方です。
ランダムエンカウントの仕組み
マップ上で E に触れると、
ランダムな敵が1体生成されて戦闘が始まります。
このとき行っている処理はシンプルです。
- 敵テンプレートをランダムで選ぶ
- テンプレートの内容をコピー
- 敵専用構造体に代入
これだけで、
「毎回違う敵と戦っている感覚」を演出できます。
敵AIの考え方(難しく考えすぎない)
「AI」と聞くと難しそうに感じますが、
今回のRPGの敵AIは とてもシンプル です。
考え方はこうです。
- たまに魔法を使う。
- MPがなければ使わない。
- HPが減っていたら回復を優先する。
これだけでも、
十分RPGらしい動き になります。
敵が魔法を使うかどうかの判断
敵は毎ターン、次のように判断します。
| 条件 | 行動 |
|---|---|
| MPがある | 魔法を使う可能性あり。 |
| MPがない | 通常攻撃 |
| HPが少ない | 回復魔法を優先 |
| それ以外 | ランダム |
このような条件分岐を入れることで、
- 毎回同じ行動にならない
- 「賢そうな敵」に見える
という効果があります。
敵の攻撃対象の決め方
敵の攻撃対象は、
生きている味方の中からランダム に選ばれます。
これにより、
- 特定キャラばかり狙われない。
- パーティ全体の管理が重要になる。
といった、バランスの良い戦闘になります。
敵の防御・強化行動の扱い方
敵も味方と同じように、
- 攻撃力アップ
- 防御状態
といった行動を取ります。
防御状態は、
- 次に受けるダメージを1回だけ半減
というシンプルな設計です。
複雑にしすぎないことで、
処理の見通しとゲームの分かりやすさ を両立しています。
ボス敵との違いを意識する
通常敵とボス敵の最大の違いは、
- HPが多い。
- 魔法が強力
- 勝利条件がエンディングにつながる。
という点です。
ただし、
基本的な構造体や処理は同じ なので、
「ボス専用の特別な作り」にしていません。
この設計は、
プログラムの再利用性という点でもとても優秀です。
STEP5で理解しておきたいポイントまとめ
STEP5で押さえておきたいポイントはこちらです。
- 敵も構造体で表現すると分かりやすい。
- 敵テンプレートを使うと管理が楽
- ランダムエンカウントはテンプレート生成で実現
- 敵AIはシンプルな条件分岐で十分
- 防御や強化で戦闘に変化を出せる。
ここまで来ると、
バトルがかなり本格的なRPGになってきた のを感じられるはずです 👍
