
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つの while ループ の中で制御しています。
rpg1.c の全体構造を俯瞰する
rpg1.c はとても大きなプログラムですが、
実は役割ごとにきれいに分割されています。
主な構成ブロック
| 区分 | 役割 |
|---|---|
| 定数定義 | マップサイズ、最大レベルなど |
| 列挙型 | 職業、アイテム、魔法タイプ |
| 構造体 | キャラクター、敵、ゲーム状態 |
| 初期化処理 | キャラ・魔法・マップ |
| 入力補助 | 安全な数値・文字入力 |
| バトル処理 | 戦闘ロジック |
| マップ処理 | 描画・移動・イベント |
| セーブ処理 | ゲーム状態の保存 |
| main関数 | 全体の制御 |
STEP1では 中身を細かく理解する必要はありません。
「このゲームは、こういう部品でできているんだな」と
全体像をつかめればOKです。
ゲーム状態をまとめて管理する考え方
このRPGの設計でとても重要なのが、
ゲーム全体の状態を1つの構造体で管理している点です。
ゲーム状態が持つ情報
| 情報 | 内容 |
|---|---|
| プレイヤー位置 | px, py |
| マップ | 25×25の文字配列 |
| パーティ | 3人分のキャラクター |
| アイテム | 所持数 |
| クリア状態 | ボス撃破フラグ |
これらをひとまとめにすることで、
- セーブが簡単
- 関数に渡す引数が少なくなる。
- プログラムの見通しが良くなる。
というメリットがあります。
STEP1で理解しておきたいポイントまとめ
STEP1では、次の点を押さえておきましょう。
- この章では 単一ファイルでRPGを完成させる。
- ゲームは マップ探索+ターン制バトル。
- プログラムは 役割ごとに整理されている。
- まずは 全体像を理解することが最優先
次のSTEPから、いよいよ
構造体・列挙型・キャラクター定義 といった
C言語らしい実装に入っていきます。
