ごちゃごちゃで分からなくなってしまった・・・。

投稿者:Aa mini #いお 投稿日:2012/05/21 21:38

これ↓間違ってるから修正しようとしたら・・。
if getFlag("卵3個")
if setVariable("tamago", 3)
speak("卵を3つ手に入れたので棚に入れた!")
speak("すると、卵からひよこが生まれてきた!")
speak("ひよこの口から銀の鍵が出てきた!")
setFlag("銀の鍵", true)
setFlag("緑色の鍵", false)
else
if getFlag("緑色の鍵")
case speakWithSelect(2,"はい","いいえ", 
    "緑色の鍵で扉を開けますか?\n")
  when 0
    speak("中にメモが入っていた")
speakFullScreen(true, "卵3個をこの棚に・・・。")
speak("卵3個を探せば何かあるのかな")
setFlag("卵3個", true)
  when 1
    
end

else
#ここのelseでエラー発生中
speak("扉は開かない")
end
end

end
end
if getFlag("緑色の鍵")
case speakWithSelect(2,"はい","いいえ", 
    "緑色の鍵で扉を開けますか?\n")
  when 0
    speak("中にメモが入っていた")
speakFullScreen(true, "卵3個をこの棚に・・・。")
speak("卵3個を探せば何かあるのかな")
setFlag("卵3個", true)
  when 1
    
end

else
speak("扉は開かない")
end


どうなってるんだ・・・。
ごちゃごちゃしてて全然わからない・・。
誰か助けてー

コメントする

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

コメント一覧

Material 7186 1 mini ikosami(投稿日:2012/05/21 22:18, 履歴)
エラーとは関係の無いifやcaseの塊を省略してみると、
案外簡単だったりしますよ。

あと、end数が間違っている可能性のある場合や、
elseの位置が間違っている可能性のある場合は、
すさまじいスペースを空けてわかりやすくすると、
あっさり見つけられます。



↓極端な例

if getFlag("卵3個")
           if setVariable("tamago", 3) #これは、変数の設定です。
                      #メッセージ表示
           else
                      if getFlag("緑色の鍵")
                         #{caseの塊}
                      else
                         #ここのelseでエラー発生中
                         speak("扉は開かない")
                      end
           end
end


end#←これがいらない


if getFlag("緑色の鍵")
       #{caseの塊}
else
       speak("扉は開かない")
end


2行目のところの
if setVariable("tamago", 3)
も、おかしいです。

setVariable("tamago", 3)
は、("tamago")という名前の変数に
3を設定することを意味しているので、

tamagoという変数が3であるかどうかを調べたい場合は
if setVariable("tamago") == 3
にしましょう。
User icon mini 退会したユーザー(投稿日:2012/05/21 22:38, 履歴)
最後から2行目、
× if setVariable("tamago") == 3
○ if getVariable("tamago") == 3

ちなみにsetVariableの第2引数を設定しなくてもエラーはないですが、
あれってどういう動作になるんでしょうか?
Material 7186 1 mini ikosami(投稿日:2012/05/21 22:39, 履歴)
あと、これだと、エラーが出ずに動いたとしても
おかしな文章が表示される可能性がありますよ(^^;)

見て違和感の無いように作ってみました。

if getFlag("卵3個")
   if setVariable("tamago", 3)
      speak("卵を3つ手に入れたので棚に入れた!")
      speak("すると、卵からひよこが生まれてきた!")
      speak("ひよこの口から銀の鍵が出てきた!")
      setFlag("銀の鍵", true)
      setFlag("緑色の鍵", false)
   else
      speak("まだ卵を3つ持っていない")
   end
else
   if getFlag("緑色の鍵")
      case speakWithSelect(2,"はい","いいえ", 
         "緑色の鍵で扉を開けますか?")
       when 0
            speak("中にメモが入っていた")
            speakFullScreen(true, "卵3個をこの棚に・・・。")
            speak("卵3個を探せば何かあるのかな")
            setFlag("卵3個", true)
       when 1
            speak("今は開けるのはやめておこう")
       end
   else
      speak("この扉は鍵がないと開かないようだ")
   end
end



文章の変更点
①扉は開かない→この扉は鍵がないと開かないようだ
理由:鍵で開くということは、鍵穴があるので、主人公が「扉は開かない」とだけ判断するのは変

②扉を開けますか?の選択肢でいいえを選んだときの文章の追加「今は開けるのはやめておこう」
理由:開けなかった場合に何も起こらなければ、この扉は今すぐ開ける必要があることがバレバレのため

③卵を3つ持っていなかった場合の文章の追加「まだ卵を3つ持っていない」
理由:変えなければ、「緑色の鍵で扉を開けますか?」と表示される。
    何をしようとしているかを提示しないと、読み逃した場合にどうすれば良いのかわからなくなる。



おそらく、余計なお世話だと思いますが、
これで問題ないと思います。
Material 7186 1 mini ikosami(投稿日:2012/05/21 22:41, 履歴)
えっ?

setVariableの第2引数を設定しなくてもエラーはないんですか?

・・・やったことなかったです(^^;)

よくわかりませんが、何も設定しないので意味は無いと思います。
Aa mini #いお(投稿日:2012/05/22 08:58, 履歴)
ありがとうございます!
これからやってみます!(実行はこれからです・・。)
User icon mini 退会したユーザー(投稿日:2012/05/21 23:13, 履歴)
こまめにインデント(字下げ)をお勧めします。
私も昔やらなくてイミワカランことになった経験ありますから。