Rmake Wikiは、Rmakeに関する情報共有をするためのWikiです。


スクリプト/つくってみよう0

最終投稿者:rurun9 更新:2010年08月07日 15:07:15

Rmakeの何が凄いって、話題のクラウドコンピューティング
(データもソフトもサーバーに置いておき端末からアクセスするだけ。端末に特殊装備は不要)
であって、コンパイル作業も不要、且つ公開したらインターネットブラウザで気軽に遊べる事だよね。

ココを読んでるくらいのアナタ、最早つくるしかないのです。
そんな感じで
プログラムを組むに当たって、根本的なルールをまずは把握しておきましょう。

ヘルプ/スクリプト言語のマニュアル
スクリプト/変数

には必ず目を通しておいて下さい。
それから、用意されている関数がどんな機能なのかはこちらでわかります。

ヘルプ/関数リファレンス

これは辞典みたいなものなので、慣れるまで作業中は開きっぱなしにしておき、
わからないのが出てきたら、意味と使い方を確認していきましょう。


では、始めていきます。
プログラムは、書かれた順に実行されていきます。
文法を間違えたりしてると、そこでエラーが出て止まってしまいます。

変数と関数を組み合わせてつくっていくわけですが、
関数がそれぞれ「〇〇する」という細かい動作を担当してるので、
実は流れとしては次の3つしかありません。

・ランダム
・分岐
・繰り返し

思ってたより簡単ですね。順に見ていきましょう



  • ランダム

関数リファレンス>システム>乱数 にある、
rand関数 を使って結果を分岐させれば
ゲームっぽくなりますよね。


  • 分岐

if~end を使います。
i = rand(5) #返り値すなわち得られる値は 0,1,2,3,4 の五種類
if i == 0
  speak("0 だよ")
elsif i == 1 #0じゃ無かった場合に、更に分岐
  speak("1 だね")
else #残りは全部こちら
  speak("ハズレ")
end

# 記号は、それ以降の文字をコメントにします。
要はプログラムの実行内容に全く影響を与えない落書きですね。

あくまでも例なのでspeak関数で結果をわかりやすく画面に表示していますが、
続く処理を書き換えれば色々な事ができるのです。
夢広がりんぐ。

特に値がハッキリしている場合には case~when~end も使えます。
case rand(3)
when 0
  speak("0 だよ")
when 1
  speak("1 だね")
end
#注意:もしもrand(3)の結果が2だった時は、何もせず終わります


ところで、
変数を扱うには事前に宣言しないといけませんが、
セーブやロードでゲーム途中から始まる場合がありますよね。
そんなときに、変数が存在するかどうかを調べる事もできます。
speak("1回目 what = ", getVariable("what") )

if !getVariable("what")
  setVariable("what",100)
end

speak("2回目 what = ", getVariable("what") )

if 変数名
と書く事で、その名前の変数が既にあるかどうかがわかります。
無い(中身が null と表示されたりする)場合は改めて宣言&設定しておけば良いので、
条件を反転させる ! を付けている点に注目です。
つまりこの例では、もし基本変数 what が無いなら 100 にしとけ、という処理になります。

judge = true
if judge
 speak("当たり")
else
 speak("この例では当たりにしかなりません")
end

尚、true/false の二択の値を持った変数のときは
if 変数名
と書く事で true かどうかを調べる事ができます。


  • 繰り返し

while~end を使います。
i = 0 ; max = rand(5) + 3 ; word = "な"

while i <= max
  word = word + "な"
i = i + 1
end

word = word + "んだってぇ?!"
speak( word )


少し複雑な例にしてみました。
セミコロン ; はマルチステートメントすなわち同じ行に別の処理を書く事ができます。
この例では、i が 0 から max と同じか小さい間は
変数 word に文字"な"が追加され続けます。

繰り返しの while 文で最も注意しなければならないのは、必ず処理が終わるように作る事です。
上の例で言うと i=i+1 が無ければ結果として永久ループしてしまいます。

a = true ; x = 0
while a
  x = x + 1
  if rand(32) == 0
    a = false
  else
    waitTime(50)
  end
end
speak(" x = ",x)


万一、半永久的にループさせる場合は、
出来る限り waitTime 関数を入れておきましょう。
Rmake はパソコン等のOS上のソフトである
インターネットブラウザ内のFlashという技術を利用して動作しています。
waitTimeを入れて Rmake 以外のシステムが動作する余裕を与えないと、大変な事になります。
上の例では、a が true の間ループし続けます。
今回の例では結局すぐに処理は終わってしまう事が予想されますが、
独立事象な32分の1の確率を引くまで何回乱数を取り出したか、を数えています。



少々遠回りもしましたが、以上のあたりを踏まえてプログラムを組み立てて
自由な発想でどんどんゲームをつくっちゃって下さい!

このWikiの掲示板(すべて読む

コメント一覧

投稿者:rurun9(投稿日:2010/07/31 15:14)

お疲れ様でした有り難うございました。

投稿者:dycoon(投稿日:2010/07/30 20:24)

!0がfalseになるように動作変更をおこないました。

ご迷惑をおかけいたしますが、
よろしくお願いします。

投稿者:rurun9(投稿日:2010/07/28 11:47)

なんと!
そんなのが見つかっただけでも書いた意味があったかな

投稿者:dycoon(投稿日:2010/07/27 22:32)

!0がtrueになってしまうのはarrpのバグです。falseになるべきです。
動作を修正する方向で検討しています。

よろしくお願いします。

投稿者:ikosami(投稿日:2010/07/27 19:01)

if !getVariable("what")
setVariable("what",100)
end

はwhatが0の時にも100になりますよ。

User_icon
ゲスト