スクリプト/変数(履歴ID:228)

最終投稿者:Nyan mini rurun9 更新:2012/04/21 21:46:24

変数について


変数とは

変数とは、データを入れておく事ができる箱のようなもの、です。
名前はある程度、自由に付ける事ができます。
中に入れる事ができるデータには3種類あります。

・数値…半角数字で書くと「数」として認識され、計算できます
・文字…ダブルクォーテーションで囲む" "と文字として認識されます
    全角文字は全て文字扱いで、囲まないとエラーが出ます
・フラグ…trueまたはfalseの完全二択の値で、ON,OFFのスイッチみたいなもの。
     文字じゃない特殊用語なのでそのまま書けばOK
     (⇒詳しい使い方はこちら スクリプト/フラグ

例えば gold という変数に数値を入れておけば、
計算式で gold と書くと、その時点でgoldに入っている値で計算できます。
例えば word という変数に "勇者よ、死んでしまうとは何事じゃ" という文字列を入れておけば、speak()等で word を呼び出すだけで、いつでも画面に表示できます。

変数名は、半角英数字だけでなく全角文字すなわち日本語でも自由に設定する事ができます。
英語の大文字と小文字は異なる字として認識されます。
ただし、半角数字から始まる名前は不可。
システムで用意されている関数名と全く同じ名前も当然不可。予約語というシステム側で利用しているいくつかの単語もダメです(⇒参考
半角アンダーバー _ を除いて記号は基本的に使えないと思って下さい。


Rmakeの変数

現在Rmakeのスクリプト言語(arrp)には
arrpの変数(ローカル変数)とsetVariableの変数(基本変数)があります。
変数を扱う際に、事前に中身の型や名前を宣言する必要はありません。
イキナリ変数に中身を入れてしまえば、使う事ができちゃいます。

arrpの変数(ローカル変数)

arrpの変数(ローカル変数)は言語の機能として標準で用意されている変数の機能で、
以下のように使います。
a = 10
speak("a = ", a) #表示は「a = 10」

a = a + 9
speak("a = ", a) #表示は「a = 19」

数学では = 記号は、両辺が等しい という意味ですが
プログラムにおいて = 記号は、「右側を左側に入れる」という意味になります。
条件式( if 文とかで使うもの)において、左右両辺が等しいことを表すには == とふたつ続けて書きます。
⇒詳しくは ヘルプ/スクリプト言語のマニュアル

最初は変数aに半角数字10を入れました。コレは数値としてaに入ります。
次に「a+9」を変数aに入れています。さっき10だったので計算されて19がaに入る事になります。
それまでの中身は捨てられ、新しく右側に書かれたモノが入るのでご注意ください。
あくまでも右側を左に入れるので、おかしくはないのです。


現在、Rmakeのセーブロード機能では基本変数(setVariableで設定した変数)の
値は保存します。しかし、ローカル変数は保存しません。

そのため、createTextの返り値のハンドルなどをローカル変数に代入すると
セーブロード時に、ハンドルが取得できなくなる問題が発生する可能性があります。

また、ローカル変数は、
・2DアクションRPG/2DRPGのイベント終了時
・ノベルゲームのシーン/チャプター移動時
に削除されます。イベント・シーンをまたがった利用はしないようにしてください。
そのような場合は、基本変数を使ってください。


基本変数(setVariable関数で宣言する変数)


基本変数とは、setVariable関数によって宣言される変数です。基本変数は、セーブ・ロード時に保存されます。

基本変数を使うときは、以下のように書きます。
# 変数aに数値10を代入
setVariable("a", 10)
 
# 変数aの値を取得する
getVariable("a")

先ほどのローカル変数との書き方の違いに注意してください。
無駄に文字が多くて何だかワカリにくいですが、関数というのは英単語の意味そのままの機能が多いので「そーゆーもの」として受け止めましょー。


サンプル
# 変数Nancyに365を代入
setVariable("Nancy", 365)

# その変数Nancyを取得して、speak関数で表示する
speak("Nancy=", getVariable("Nancy")) # 表示は「Nancy=365」

# 続けて変数Nancyに91を入れる。前の中身は忘れて、上書きされます
setVariable("Nancy", 91)

# 再び変数Nancyを取得して、speak関数で表示する
speak("Nancy=", getVariable("Nancy")) # 表示は「Nancy=91」

#基本変数とローカル変数は名前が同じでも別のものとして扱われます
majitai = 9
setVariable("majitai", 300)
speak( "ローカル=", majitai, "\n基本=", getVariable("majitai") )
setVariable("majitai", getVariable("majitai") + majitai )
#ふたつを足したものを基本変数に入れ直したので中身は計算されて29になります
speak( getVariable("majitai") )

# 基本変数nameに名前、ローカル変数wordに文章を入れます
setVariable("name", "エリザベス")
word = "こんにちは、"
# 文字列が入った変数は継ぎ足す事ができます
word = word + getVariable("name")
speak( word + "。\nごきげんいかが?" )
数値の入った変数でも、一度文字列とつなげてしまうと、以降は文字列として変数の中に入ります。
数値の入った変数同士を、計算せずに文字としてつなげたい場合には toString( )関数を使いましょう。