コメント

このコメントは、【トピック】変数でまたわからなくなってしまったへのコメントです。

コメントの内容

   mini ___(投稿日:2011/09/04 18:09/04/11)
ifやcaseのネストは自ずと見づらくなるので、
もう一段階 字下げすると見やすいかも。
if getFlag("像")
 case zou
  when 1
   speak("どうやらここは")
   zou==2
  when 2
   speak("カツラが明らかに")
   zou==3
  when 3
   case speakWithSelect(2,"はい","いいえ", 
       "カツラをとってみますか?")
    when 0
     speak("カツラを手に入れた!!")
     setVariable("カツラ", 1)
     setEventDirection("event3",getUpDirection())
     zou==4
    when 1
   end
  when 4
   speak("よく見たら頭に")
   speak("「パスワードは誰も」")
   speak("この像、よく見ると")
 end
else
 setFlag("像", true)
 zou==1
end


さて、内容についてですが、
「基本変数」と「ローカル変数」の違いをもう一度ご確認ください。

一回目。if文で、下の方に飛んで
setFlag("像", true)
zou==1
が実行されます。で、イベント終了。
この時にエラーが出ているわけですが、
代入「=」と比較「==」を間違えています。
zouという値は存在していないのに中身を比較しようとしているので、
エラーを吐いているみたいですね。
正確には「zou = 1」です。

次に、2回目に話しかけたとき、if文で2行目に行きます。
そこでcase文で変数zouを見るわけですが、ここでエラーが出ます。
zouという値は先ほど設定したはずなのに、何故?
それは、変数zouがローカル変数だからです。

ローカル変数はsetVariableでの基本変数と違い、
「イベントが終了した時点で消滅」します。
つまり、この時zouという変数は存在していないんですね。
という訳で、zouなんて無いよとエラーを吐くわけです。

イベントを超えて値を保持させるためには、
setVariableを用いて基本変数として設定してやる必要があります。
 参考/Wiki/変数

長文乱文失礼しました。
何かあればまたどうぞー。

コメントの内容(一番最初の投稿)

   mini ___(投稿日:2011/09/04 18:09/04/11)
ifやcaseのネストは自ずと見づらくなるので、
もう一段階 字下げすると見やすいかも。
if getFlag("像")
 case zou
  when 1
   speak("どうやらここは")
   zou==2
  when 2
   speak("カツラが明らかに")
   zou==3
  when 3
   case speakWithSelect(2,"はい","いいえ", 
       "カツラをとってみますか?")
    when 0
     speak("カツラを手に入れた!!")
     setVariable("カツラ", 1)
     setEventDirection("event3",getUpDirection())
     zou==4
    when 1
   end
  when 4
   speak("よく見たら頭に")
   speak("「パスワードは誰も」")
   speak("この像、よく見ると")
 end
else
 setFlag("像", true)
 zou==1
end


さて、内容についてですが、
「基本変数」と「ローカル変数」の違いをもう一度ご確認ください。

一回目。if文で、下の方に飛んで
setFlag("像", true)
zou==1
が実行されます。で、イベント終了。
この時にエラーが出ているわけですが、
代入「=」と比較「==」を間違えています。
zouという値は存在していないのに中身を比較しようとしているので、
エラーを吐いているみたいですね。
正確には「zou = 1」です。

次に、2回目に話しかけたとき、if文で2行目に行きます。
そこでcase文で変数zouを見るわけですが、ここでエラーが出ます。
zouという値は先ほど設定したはずなのに、何故?
それは、変数zouがローカル変数だからです。

ローカル変数はsetVariableでの基本変数と違い、
「イベントが終了した時点で消滅」します。
つまり、この時zouという変数は存在していないんですね。
という訳で、zouなんて無いよとエラーを吐くわけです。

イベントを超えて値を保持させるためには、
setVariableを用いて基本変数として設定してやる必要があります。
 参考/Wiki/変数

長文乱文失礼しました。
何かあればまたどうぞー。