スクリプトで質問です。

投稿者:Logo mini hightoller 投稿日:2011/04/25 19:19

拙作「StealthCodeBreaker」を移植するに当たって、
まずは簡単な数当てを作ってみようと思い、
試しにスクリプト組んでみたんですけど、if部で文法エラーがでるんですね。
何が間違ってるのか、Wikiみてもよく分からなかったんです。
どなたか御教授願えませんでしょうか。

        • ここから----

speak("StealthCodeBreaker Start")
1st == 0
2nd == 0
hit == 0
brow == 0
case speakWithSelect(5,"1","2","3","4","5",
"Select 1st Code")
when 0
setVariable("1st", 1)
when 1
setVariable("1st", 2)
when 2
setVariable("1st", 3)
when 3
setVariable("1st", 4)
when 4
setVariable("1st", 5)
end
case speakWithSelect(5,"1","2","3","4","5",
"Select 2nd Code")
when 0
setVariable("2nd", 1)
when 1
setVariable("2nd", 2)
when 2
setVariable("2nd", 3)
when 3
setVariable("2nd", 4)
when 4
setVariable("2nd", 5)
end
if 1st == 2
hit = getVariable("hit") + 1
else
if 1st == 5
brow = getVariable("brow") + 1
if 2nd == 5
hit = getVariable("hit") + 1
else
if 2nd == 2
brow = getVariable("brow") + 1
if hit == 2
speak("Success")
else
if hit == 0
if brow == 0
speak("miss")
else
speak("brow ", getVariable("brow"))
else
if brow == 0
speak("hit ", getVariable("hit"))
else
speak("hit ", getVariable("hit"), " brow ", getVariable("brow"))

        • ここまで----

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Logo mini hightoller(投稿日:2011/04/26 00:11, 履歴)
まずは無事動かすことが出来たことを御報告いたします。
以降ここから拡張していくことを目論んでいます。

tdakeikaku様
迅速な回答、「スクリプトのマニュアル」の紹介、有難う御座いました。
マニュアルを参照してifよりcaseを使った方が良い部分を改良しました。
次回からRmake記法も利用して、質問掲示板を活用したいと思います。

rurun9様
的確な回答有難う御座いました。
変数名の頭に数字は使えないんですね;num1stと変数名変えました。
また、イコールの数の違い、ローカル変数と基本変数の違いを覚えました。
シーンをまたぐ予定は無いので、ローカル変数で統一しました。
プログラミングはかじってる程度なので、基本的な事が抜けてたりしますが、
追々ここで修得していきたいと思います。
Nyan mini rurun9(投稿日:2011/04/25 22:09, 履歴)
if 条件式壱
  何らかの処理
elsif 条件式弐
  また違う処理
else
  その他は全部こちらの処理
end

という形ですね。
必ずendで閉じないとダメです。
中カッコで括るのと違って、パッと見では何に対応したendなのかが謎なので、
個人的に長い処理後のendにはコメントで何を閉じているのかを書込してマス

他に気になるのは
始めの方の 1st==0 とか…変数名は、数字から始まる名前をつける事ができません。
また、代入するだけならイコールはひとつ、二つ書くのは比較するとき(条件式)ですね
そして後半はローカル変数と基本変数が混じっている?
同じ半角英数名でも、ローカルと基本は別扱いになるのでご注意くださ~い

wiki読んでるという事は、プログラミングに心得のある方だと思われるので、
「つくってみよう0」からリンク辿ると良いかもしれませんよぉ。
   mini ___(投稿日:2011/04/25 21:04, 履歴)
見返すとミスばかり。もっとちゃんと考えてから投稿しなきゃ…。すいませんすいません;;
・elseは存在します。
・else ifをelsifと短縮することが出来ます。
・if~endのendが無いためエラーが発生したと思われます。
以上です。すいません本当に。
   mini ___(投稿日:2011/04/25 20:51, 履歴)
すいません、追記です。
Rmakeでのif文は、
if 条件式
  処理
end

あるいは
if 条件式
  処理内容
elsif 条件式
  処理内容
end

という形になっています。
詳しくは「スクリプトのマニュアル」をご覧ください。
   mini ___(投稿日:2011/04/25 20:39, 履歴)
else
if
の部分ですかねー。
Rmakeでは、「else if~」が「elsif~」という一つの単語になっています。
elseという命令が存在しないので、エラーが出たのだと思われます。

Rmake記法というのがありまして、コード全体を{{{code ~ }}}で囲むと、
文頭の半角スペースとかが有効になりますよー。