窓の杜Logo
バックナンバー
・ 2004年7月 ・
最終回:ゲームで扱う数値のアレコレ(後編) (04/07/15)
第3回:ゲームで扱う数値のアレコレ(前編) (04/07/08)
第2回:ゲームの進行を管理するもの、フラグ (04/07/01)
・ 2004年6月 ・
第1回:条件分岐は、すべての動作の基本だ (04/06/24)

ツクールXPでおぼえるゲーム制作のイ・ロ・ハ
【第3回】

ゲームで扱う数値のアレコレ(前編)

数値を入れられる箱、変数を大解剖!

(04/07/08)

数値を入れられる箱、変数

“数値を入れておく箱”のようなもの
“数値を入れておく箱”のようなもの
 ゲームでは、いろいろなものが数値で表されている。アクションゲームの得点もそうだし、RPGのレベルや体力などもそうだ。このような数多くの“数値”を管理するものが、今回説明する“変数”というわけだ。

 変数は、プログラムを組むうえで基本となる要素のひとつ。よく使われる例で言うと“数値を入れておく箱”のようなものだ。

 たとえば、アクションゲームの得点を考えてみよう。得点は、ゲーム開始時には0だが、敵を倒すごとに加算されていく。この得点のような、刻々と変わっていく数値を管理するのが変数なのだ。前回説明したフラグも、立っている状態を1、立っていない状態を0とすれば、変数の一種だと言える。

 また、変数は単純に数値を入れておくだけでなく、その数値によって状況を判断し、処理を分岐させる使い道もある。得点の例で言えば、“得点が一定値を超えると残機数が増える”というような処理が、変数を使うことで可能になるぞ。

変数=財布のようなもの!?

 変数を身近なもので表してみよう。たとえば、キミがいつも持ち歩く“財布”。財布のなかの所持金は、買い物をすれば減るし、銀行からお金を下ろせば増える。つまり財布は、キミの行動に応じて中身の金額が変動する入れ物、と言えるだろう。これはまさに、変数と同じだよね?

 また所持金は、財布を参照すれば調べることができる。キミが買い物をする場合、“お金が足りているかどうか”が条件となり、商品を買えたか買えないか、結果が2とおりに分岐するわけだ。

変数による条件分岐
 なお変数には、“文字列を入れておく箱”もある。たとえば、ゲーム開始時に入力する名前を変数として管理すれば、ゲーム中のキャラがしゃべるセリフにプレイヤーが入力した名前を混ぜる、なんてことも簡単にできるのだ。

モンスターを倒すとメッセージが変わるイベント

 では、今回も「RPGツクールXP」を使い、変数の働きを実際に確かめてみよう。今回作るイベントの流れは以下のとおり。

 マップ上には、村人と3体のモンスターがいる。村人に話しかけると、『モンスターを全部倒してください。』と頼まれるので、モンスターと戦闘を行い、やっつけていこう。モンスターを倒した数が2体未満の時点で村人に話しかけると、『モンスターを全部倒してください。』と同じセリフが返ってくる。しかしモンスターをすべて倒してから村人に話しかけると、『モンスターを倒してくれて、ありがとう。』と違うセリフをしゃべる。

モンスターを倒して

 それでは、実際にイベントを作っていくぞ。いつもと同様に「RPGツクールXP」を起動して“新規プロジェクト”を作成し、[モード]メニューから[イベント]を選ぼう。

制作の流れ

まずは、モンスターのイベントだ。マップの空き地をダブルクリックし、“グラフィック”欄でモンスターの絵を、“トリガー”で、[イベントから接触]を選ぶ
次に“自律移動”欄を設定。モンスターがマップ上を動き回るようにするため、“タイプ”メニューは[ランダム]を選ぼう。“速度”と“頻度”はそのままだ
まずは、モンスターのイベントだ。マップの空き地をダブルクリックし、“グラフィック”欄でモンスターの絵を、“トリガー”で、[イベントから接触]を選ぶ 次に“自律移動”欄を設定。モンスターがマップ上を動き回るようにするため、“タイプ”メニューは[ランダム]を選ぼう。“速度”と“頻度”はそのままだ
“実行内容”欄をダブルクリックして戦闘処理を記述していくぞ。“イベントコマンド”ウィンドウの[3]タブをクリックし、[バトルの処理]コマンドを選ぶ
“バトルの処理”ウィンドウが現れたら、“トループ”欄右端の▼印をクリックしてプルダウンメニューを開き、遭遇するモンスターを[001:コボルド*2]と指定
“実行内容”欄をダブルクリックして戦闘処理を記述していくぞ。“イベントコマンド”ウィンドウの[3]タブをクリックし、[バトルの処理]コマンドを選ぶ “バトルの処理”ウィンドウが現れたら、“トループ”欄右端の▼印をクリックしてプルダウンメニューを開き、遭遇するモンスターを[001:コボルド*2]と指定
続いて、倒したモンスターの数をカウントする処理の記述だ。再び“イベントコマンド”ウィンドウを開き、[1]タブにある[変数の操作]ボタンを押そう
“変数の操作”ウィンドウが表示されるので、“変数”欄のラジオボタンで[単独]を指定。そして“変数”欄の[>]ボタンを押し、“変数”ウィンドウを開こう
続いて、倒したモンスターの数をカウントする処理の記述だ。再び“イベントコマンド”ウィンドウを開き、[1]タブにある[変数の操作]ボタンを押そう “変数の操作”ウィンドウが表示されるので、“変数”欄のラジオボタンで[単独]を指定。そして“変数”欄の[>]ボタンを押し、“変数”ウィンドウを開こう
使用する変数の番号は[0001]を指定。そして右下の変数の名前欄に“モンスターを倒した数”と入力後、[OK]ボタンを押して“変数の操作”ウィンドウに戻る
“操作”欄のラジオボタンは[加算]を、“オペランド”欄では[定数]を選び、その定数は“1”と指定。つまり、モンスターを倒すと変数が1ずつ増えていく仕組み
使用する変数の番号は[0001]を指定。そして右下の変数の名前欄に“モンスターを倒した数”と入力後、[OK]ボタンを押して“変数の操作”ウィンドウに戻る “操作”欄のラジオボタンは[加算]を、“オペランド”欄では[定数]を選び、その定数は“1”と指定。つまり、モンスターを倒すと変数が1ずつ増えていく仕組み
そして[イベントの一時消去]コマンドを追加し、モンスターを倒したらイベントが消えるように設定する。これでモンスター1体分の作業が完了したぞ
このイベントをコピーして、モンスターを3体に増やそう。マップ画面のイベント上で右クリックして[コピー]を選び、増やしたい場所で[貼り付け]を選べばOK
そして[イベントの一時消去]コマンドを追加し、モンスターを倒したらイベントが消えるように設定する。これでモンスター1体分の作業が完了したぞ このイベントをコピーして、モンスターを3体に増やそう。マップ画面のイベント上で右クリックして[コピー]を選び、増やしたい場所で[貼り付け]を選べばOK
今度は村人のイベントを作っていこう。第1回と同様に、“グラフィック”欄をダブルクリックして村人のキャラを選び、“トリガー”欄は[決定ボタン]を選択
続いて、“実行内容”欄をダブルクリックして[文章の表示]コマンドを選び、“モンスターを全部倒してください。”と村人のセリフを入力
今度は村人のイベントを作っていこう。第1回と同様に、“グラフィック”欄をダブルクリックして村人のキャラを選び、“トリガー”欄は[決定ボタン]を選択 続いて、“実行内容”欄をダブルクリックして[文章の表示]コマンドを選び、“モンスターを全部倒してください。”と村人のセリフを入力
次に、モンスターを3匹倒したあとの処理を記述するぞ。まずウィンドウ上部の[イベントページ作成]ボタンをクリックし、タブを1つ追加する
“条件”欄の“変数”チェックボックスをONにしたあと、変数“0001:モンスターを倒した数”を選び、条件分岐の数値を“3”と指定
次に、モンスターを3匹倒したあとの処理を記述するぞ。まずウィンドウ上部の[イベントページ作成]ボタンをクリックし、タブを1つ追加する “条件”欄の“変数”チェックボックスをONにしたあと、変数“0001:モンスターを倒した数”を選び、条件分岐の数値を“3”と指定
あとは先ほどと同様“グラフィック”と“トリガー”を指定し、“モンスターを倒してくれて、ありがとう。”と表示する実行内容を記述すれば、村人の設定は終了
なお今回は、自分で作ったイベント以外ではモンスターと会わないよう、既存のモンスター出現設定を削除してしまおう。まずメイン左下の“MAP001”を右クリック
あとは先ほどと同様“グラフィック”と“トリガー”を指定し、“モンスターを倒してくれて、ありがとう。”と表示する実行内容を記述すれば、村人の設定は終了 なお今回は、自分で作ったイベント以外ではモンスターと会わないよう、既存のモンスター出現設定を削除してしまおう。まずメイン左下の“MAP001”を右クリック
[マップの設定]を選ぶと“マップの設定”ウィンドウが開く。“エンカウント”欄の[001:コボルド]上で右クリックし、[削除]メニューを選べば削除できるぞ
この作業を繰り返してすべて削除したら、今回のイベントは完成だ。テストプレイして、村人のセリフがモンスターを全滅させる前と後で変化することを確認しよう
[マップの設定]を選ぶと“マップの設定”ウィンドウが開く。“エンカウント”欄の[001:コボルド]上で右クリックし、[削除]メニューを選べば削除できるぞ この作業を繰り返してすべて削除したら、今回のイベントは完成だ。テストプレイして、村人のセリフがモンスターを全滅させる前と後で変化することを確認しよう
テストプレイ中、[F9]キーを押せば変数の内容をチェックできる。モンスターを倒すたびに変数の数値が変化していくのが分かるだろう
テストプレイ中、[F9]キーを押せば変数の内容をチェックできる。モンスターを倒すたびに変数の数値が変化していくのが分かるだろう

キャプチャー画像で見るゲームの流れ

『モンスターを全部倒して下さい。』
『モンスターを全部倒して下さい。』
マップ画面でモンスターと接触
マップ画面でモンスターと接触
モンスターとの戦闘
モンスターとの戦闘
0~2体倒した     全部倒した
『モンスターを全部倒してください。』   『モンスターを倒してくれて、ありがとう。』
『モンスターを全部倒してください。』   『モンスターを倒してくれて、ありがとう。』

次回予告

 さて、タイトルでお気づきの方もいるかもしれないが、第3回は前後編の構成でお送りするぞ。次回は、よりエキサイティングなゲームを作るために必須となる“乱数”について説明する予定。それではまた次回、お会いしましょう。


□RPGツクールXP(製品の紹介ページ)
http://www.enterbrain.co.jp/digifami/products/rpgxp/
□デジタルファミ通ホームページ
http://www.enterbrain.co.jp/digifami/
□窓の杜 - 【NEWS】エンターブレイン、“RPGツクール”の最新作「RPGツクールXP」の体験版を公開
http://www.forest.impress.co.jp/article/2004/06/22/rpgxptrial.html

(文:矢野 厚  イラスト:AQUATIC Design)


トップページへ
ツクールXPでおぼえるゲーム制作のイ・ロ・ハINDEX へ
Copyright (c) 2004 Impress Corporation All rights reserved.
編集部への連絡は お問い合わせはこちらをクリック まで