C言語入門|STEP1:はじめてのバトルRPG-ゲーム概要と rpg1.c 全体の設計を理解しよう

はじめに:この章で作るバトルRPGについて

12章では、C言語だけで動作するバトルRPGゲームを作成します。
外部ライブラリや複数ファイルは使わず、単一ファイル 「rpg1.c」 だけで完結するRPGです。

この章は「いきなり完成品を分解する」のではなく、
STEP1〜STEP21の21記事に分けて、少しずつゲームを完成させていく構成になっています。
STEP1~STEP10でバトルRPGの定義を作成し、STEP11~STEP21でバトルRPGのプログラムを実装していきます。

STEP1ではまず、

  • どんなRPGなのか
  • どうやって遊ぶのか
  • プログラム全体はどんな構造になっているのか

といった 全体像をつかむこと を目的にします。

このバトルRPGでできること

今回作成するゲームは、昔ながらの コマンド選択型バトルRPG です。
完成すると、次のような要素をすべて備えています。

要素内容
パーティ勇者・戦士・魔法使いの3人
戦闘ターン制・コマンド選択式
魔法攻撃・回復・強化魔法
フィールド25×25マスの2Dマップ
イベント敵、宝箱、宿、教会
成長レベルアップと能力上昇
セーブファイルへの保存と復元
目標ラスボス「マスタードラゴン」討伐

C言語の基礎文法だけで、ここまでのゲームが作れる
というのが、この章の一番のポイントです。

ゲームの遊び方(プレイヤー視点)

まずは、プレイヤーとしての視点でゲームの流れを見てみましょう。

基本操作

操作内容
4左に移動
6右に移動
8上に移動
2下に移動
sセーブ
lロード
qゲーム終了

テンキーを使った 昔ながらの移動操作 なので、とても分かりやすいです。

マップ記号の意味

マップ上には、次のような記号が表示されます。

記号意味
@プレイヤー
E
T宝箱
I宿(HP/MP全回復)
C教会(戦闘不能キャラ復活)
Bラストボス

これらの記号を見ただけで、
今どんなイベントが起こるのかが直感的に分かる設計になっています。

プログラム全体の流れ(大枠)

ここからは、プログラム制作者の視点で見ていきましょう。

このゲームの流れを大きく分けると、次のようになります。

  1. タイトル画面を表示
  2. マップを初期化
  3. プレイヤー入力を受け付ける
  4. 移動先のマスに応じてイベント発生
  5. 戦闘・回復・宝箱などを処理
  6. ラスボス撃破でエンディング

この流れを 1つの while ループ の中で制御しています。

rpg1.c の全体構造を俯瞰する

rpg1.c はとても大きなプログラムですが、
実は役割ごとにきれいに分割されています。

主な構成ブロック

区分役割
定数定義マップサイズ、最大レベルなど
列挙型職業、アイテム、魔法タイプ
構造体キャラクター、敵、ゲーム状態
初期化処理キャラ・魔法・マップ
入力補助安全な数値・文字入力
バトル処理戦闘ロジック
マップ処理描画・移動・イベント
セーブ処理ゲーム状態の保存
main関数全体の制御

STEP1では 中身を細かく理解する必要はありません
「このゲームは、こういう部品でできているんだな」と
全体像をつかめればOKです。

ゲーム状態をまとめて管理する考え方

このRPGの設計でとても重要なのが、
ゲーム全体の状態を1つの構造体で管理している点です。

ゲーム状態が持つ情報

情報内容
プレイヤー位置px, py
マップ25×25の文字配列
パーティ3人分のキャラクター
アイテム所持数
クリア状態ボス撃破フラグ

これらをひとまとめにすることで、

  • セーブが簡単
  • 関数に渡す引数が少なくなる。
  • プログラムの見通しが良くなる。

というメリットがあります。

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

STEP1では、次の点を押さえておきましょう。

  • この章では 単一ファイルでRPGを完成させる
  • ゲームは マップ探索+ターン制バトル
  • プログラムは 役割ごとに整理されている
  • まずは 全体像を理解することが最優先

次のSTEPから、いよいよ
構造体・列挙型・キャラクター定義 といった
C言語らしい実装に入っていきます。