Rmakeで自由なゲームをつくろう / 第01回 スクリプトって何?
投稿者: aoihikawa 投稿日:2011/08/04 11:05
Rmakeで自由なゲームをつくろう
第01回 スクリプトって何?
こんにちは。
フリーデザイナープログラマー(自称)の
簸川 葵(ひかわ あおい)と申します。
実は、文章を書くのはあまり得意ではなかったりするのですが、
まったり、ちまちまと連載形式で
ゲームのつくり方について纏めていこうと思います。
よろしくお願いいたします。
第01回はそもそも「スクリプトって何?」
というところから始めていきますね。
01-01 スクリプトとはプログラム言語に近いもの
Rmakeのゲームは絵や音楽などの素材と、
それをどのように動かすか指示することができる「スクリプト」
の組み合わせで出来ています。
Rmakeの「スクリプト」はarrpと呼ばれる
スクリプト言語で書きます。
このスクリプト言語は、プログラム言語に近いもので
大体、似たようなことが行えます。
プログラム言語なんて英語みたいで分からない!
という方もいらっしゃると思いますが、
実はプログラム言語とは変数、命令文、関数
という3つの要素の組み合わせで出来ており、
ある程度のパターンを覚えてしまえば、誰でも簡単に書けるものです。
さて、それではこの3つの要素を具体的に解説していきましょう。
01-02 「変数」って何?
変数とは、何かを入れるための「箱」のことです。
この箱には、命令文の名称を除く、アルファベットと数字・一部の記号で構成された
好きな名前を自由に付けることが出来ます。
たとえば、「x」という箱に「3」という数字を入れたい場合、
以下のように書きます。
x = 3
簡単でしょ?
また、数字以外にも、さまざまな値を入れることが出来ます。
suuji = 3 #suujiに「3」が入ります moji = "あいう" #mojiに「あいう」が入ります furagu = true #furaguに「true」が入ります #trueとはスイッチでのONのこと、OFFは「false」と書きます keisan = 3 + 2 #keisanに3 + 2の結果である「5」が入ります keisan2 = keisan - suuji #keisanに入っている「5」から #suujiに入っている「3」を引き算し、 #結果である、「2」が入ります
っと、説明し忘れていましたが、「#」と書くと、この文字以降の文字は
「コメント」として扱われるため、スクリプトとして実行されることはありません。
また、スクリプトは必ず上から順に実行されるため、
suujiに「3」を入れて、次にmojiに「あいう」を入れて・・・と実行されます。
そのため、keisan2には「2」が入るわけです。
01-03 「命令文」って何?
命令文とは、その名前のとおりスクリプトに命令をする文のことです。
ここで分岐してください。とか、繰り返し実行してください。などのことを
命令文によって実行することができます。
命令文にも、さまざまな種類がありますが、今回はゲームをつくる際
最もよく使用される、2つの命令文を解説します。
たった2つですが、これだけでもゲームがつくれてしまいますから(w
1つめ、「if文」
これは、ある条件が揃ったとき、スクリプトの流れを分岐してもらう
命令文です。
hp = 5 mp = 5 if hp > 3 #hpが3よりも大きければ mp = 10 #今回はこれが実行されます else #そうでなければ mp = 0 end if mp == 10 #mpが10ならば hp = hp + 5 #今回はこれと mp = mp - 2 #これが実行されます elsif mp < 10 #mpが10でなく、10よりも小さければ hp = hp + 1 mp = mp - 1 else #そうでなければ mp = mp - 5 end #結果、hpは「10」、mpは「8」が入っています
命令文も変数のときと同様に、必ず上から順に実行されるため、
elsifの条件文は、ifの条件文より後に判定されることに注意してください。
2つめ、「while文」
これは、ある条件が揃っている間、この中を繰り返し実行してもらう
命令文です。
hp = 0 i = 0 #カウントの準備 while i < 10 #iが10よりも小さい間、繰り返される hp = hp + 2 i = i + 1 #カウントを増やす end #結果、hpは「20」が入っています
ゲームとは、キーの入力→さまざまな判定→描画→はじめに戻る、
の繰り返しのため、必須となってきます。
01-04 「関数」って何?
関数、と言われると、算数とか数学を思い出しますが、
スクリプトで関数とは、処理を代行してくれる便利な纏まりのことです。
Rmakeには予め、さまざまな関数を用意してくれています。
関数リファレンス
たとえば、「speak」という関数は
str = "こんにちは世界" speak(str)
と、書いてあげると、画面上にメッセージ枠と「こんにちは世界」という文を
表示してくれます。
なお、関数の名前の後にある、括弧の中の値ことを引数と呼び、
関数に渡してあげる値を入れます。
他に、「rand」という関数は
randam = rand(10) #randamには「0」~「9」の値がランダムで入る
と、ゲームをつくるのに便利なものとなっています。
っと、説明し忘れていましたが、値が返ってくる関数は、
「変数 = 関数」の形で書き、
この変数に入る値のことを戻り値と呼びます。
また、関数は次のようにdefという文で
自分で自由に作ることも可能です。
#余りを計算する関数の作成 def amari_keisan(x, y) #xとyが引数 kekka = x % y #余りを計算する return kekka #kekkaを戻り値にする end a = 7 b = 3 c = amari_keisan(a, b) #複数の引数がある関数は「,」で区切る #cには「1」が入っています
なお、関数も同様に、必ず上から順に実行されるため、
自分で作った関数を使う場合、使う場所よりも先に
defで関数を作っておかないといけません。
01-05 おわりに
いかがでしたでしょうか。
最初のうちは、分かりにくいところもあると思いますが、
難しく考えることはありません。
それが変数なのか、命令文なのか、関数なのか
というだけなのです。
今回、紹介しました命令文や関数以外の命令文や関数もありますが、
一度に沢山覚える必要はありません。
「必要となったときに調べてみる」ことで大丈夫です。
特に、関数については 関数リファレンス を別のページに開いておくと便利です。
さて、次回は早速、これらを使用して、
「画面にキャラクターを描画する」を実践してみましょう。
第01回 スクリプトって何?
第02回 画面にキャラクターを描画する
第03回 キャラクターをキー入力で操作する
第04回 敵キャラクターを登場させる
第05回 弾を発射させる
第06回 より面白くするために
コメントする
コメントするには、ログインする必要があります。
コメント一覧
退会したユーザー(投稿日:2011/08/15 15:10,
履歴)
わかりました。ありがとうございます
>帰ってきた暇人さま
turugiをカウントする箇所で、
式の書き方が間違っています。
変更前
変更後
turugiをカウントする箇所で、
式の書き方が間違っています。
変更前
turugi = 0 if turugi == 1 speak("剣はもう取っている") else speak("「日本刀か…持っていくか…」") speak("★日本刀を手に入れた!★") openActivityFeedWindow("実績解放! 最初の武器") turugi = turugi = 1 end
変更後
turugi = 0 if turugi == 1 speak("剣はもう取っている") else speak("「日本刀か…持っていくか…」") speak("★日本刀を手に入れた!★") openActivityFeedWindow("実績解放! 最初の武器") #_/_/_/_/_/ 変更点 _/_/_/_/_/ turugi = turugi + 1 #_/_/_/_/_/ここまで_/_/_/_/_/ end
退会したユーザー(投稿日:2011/08/06 17:36,
履歴)
一応書いてみましたが、なぜか出来ません。教えてください先生!
turugi = 0
if turugi == 1
speak("剣はもう取っている")
else
speak("「日本刀か…持っていくか…」")
speak("★日本刀を手に入れた!★")
openActivityFeedWindow("実績解放! 最初の武器")
turugi = turugi = 1
end
turugi = 0
if turugi == 1
speak("剣はもう取っている")
else
speak("「日本刀か…持っていくか…」")
speak("★日本刀を手に入れた!★")
openActivityFeedWindow("実績解放! 最初の武器")
turugi = turugi = 1
end