C言語入門|STEP5:敵キャラクターとAI-ランダムエンカウントと敵の行動ロジック

はじめに:敵がいてこそRPGは成立する

STEP4では、味方キャラクターの魔法とスキルを実装しました。
STEP5では、いよいよ 戦う相手である「敵キャラクター」 を作っていきます。

RPGにおいて敵は、

  • 倒すための存在
  • 成長を実感させる存在
  • 戦略を考えさせる存在

という、とても重要な役割を担っています。

このSTEPでは、

  • 敵キャラクターの定義方法
  • ランダムで敵が出現する仕組み
  • 敵が自分で行動を選ぶAI

について、全体像を理解していきましょう。

今回のRPGにおける敵の基本ルール

まずは、今回のRPGに登場する敵の特徴を整理します。

項目内容
出現方法マップ上の E に触れる
種類複数の通常敵
行動攻撃または魔法
魔法敵専用の4種類
経験値倒すと獲得

敵も味方と同じように、
HP・MP・攻撃力・魔力 といったステータスを持っています。

敵キャラクターも構造体で表現する

味方キャラクターと同様に、
敵も 構造体 を使って表現します。

敵が持つ情報は次のとおりです。

項目内容
名前敵の表示名
HP / MP現在値と最大値
攻撃力通常攻撃の強さ
魔力魔法ダメージ用
経験値倒したときの報酬
ボス判定ラスボスかどうか
防御状態被ダメ軽減フラグ
魔法敵専用の魔法

「敵もキャラクターの一種」と考えると、
設計がとても理解しやすくなります。

敵専用の魔法が必要な理由

敵は味方と同じ魔法を使う必要はありません。

そのため今回のRPGでは、

  • 敵専用の魔法タイプ
  • 敵専用の魔法構造体

を用意しています。

敵魔法の役割

種類役割
ダメージ味方に攻撃
回復自分を回復
攻撃力強化ATKアップ
防御被ダメ軽減

これにより、

  • 敵らしい行動
  • 単調にならない戦闘

を実現しています。

敵テンプレートという考え方

今回のRPGでは、
敵を直接その場で作るのではなく、テンプレートを用意 しています。

敵テンプレートとは、

  • スライム
  • ゴブリン
  • スケルトン
  • オーク
  • ダークメイジ
  • ワイバーン

といった、敵の設計図 のようなものです。

テンプレートを使うメリット

敵テンプレートを使うことで、次のような利点があります。

メリット内容
再利用同じ敵を何度でも作れる。
調整簡単数値を1か所で変更
拡張容易新しい敵を追加しやすい。

RPG制作では、
「テンプレート化」 がとても重要な考え方です。

ランダムエンカウントの仕組み

マップ上で E に触れると、
ランダムな敵が1体生成されて戦闘が始まります

このとき行っている処理はシンプルです。

  1. 敵テンプレートをランダムで選ぶ
  2. テンプレートの内容をコピー
  3. 敵専用構造体に代入

これだけで、
「毎回違う敵と戦っている感覚」を演出できます。

敵AIの考え方(難しく考えすぎない)

「AI」と聞くと難しそうに感じますが、
今回のRPGの敵AIは とてもシンプル です。

考え方はこうです。

  • たまに魔法を使う。
  • MPがなければ使わない。
  • HPが減っていたら回復を優先する。

これだけでも、
十分RPGらしい動き になります。

敵が魔法を使うかどうかの判断

敵は毎ターン、次のように判断します。

条件行動
MPがある魔法を使う可能性あり。
MPがない通常攻撃
HPが少ない回復魔法を優先
それ以外ランダム

このような条件分岐を入れることで、

  • 毎回同じ行動にならない
  • 「賢そうな敵」に見える

という効果があります。

敵の攻撃対象の決め方

敵の攻撃対象は、
生きている味方の中からランダム に選ばれます。

これにより、

  • 特定キャラばかり狙われない。
  • パーティ全体の管理が重要になる。

といった、バランスの良い戦闘になります。

敵の防御・強化行動の扱い方

敵も味方と同じように、

  • 攻撃力アップ
  • 防御状態

といった行動を取ります。

防御状態は、

  • 次に受けるダメージを1回だけ半減

というシンプルな設計です。

複雑にしすぎないことで、
処理の見通しとゲームの分かりやすさ を両立しています。

ボス敵との違いを意識する

通常敵とボス敵の最大の違いは、

  • HPが多い。
  • 魔法が強力
  • 勝利条件がエンディングにつながる。

という点です。

ただし、
基本的な構造体や処理は同じ なので、
「ボス専用の特別な作り」にしていません。

この設計は、
プログラムの再利用性という点でもとても優秀です。

STEP5で理解しておきたいポイントまとめ

STEP5で押さえておきたいポイントはこちらです。

  • 敵も構造体で表現すると分かりやすい。
  • 敵テンプレートを使うと管理が楽
  • ランダムエンカウントはテンプレート生成で実現
  • 敵AIはシンプルな条件分岐で十分
  • 防御や強化で戦闘に変化を出せる。

ここまで来ると、
バトルがかなり本格的なRPGになってきた のを感じられるはずです 👍