状況によって増減可能な選択肢  (改良してみました)

投稿者:Material 7186 1 mini ikosami 投稿日:2013/07/13 19:33

状況によって増減可能な選択肢を作ってみました。

今まで(みんなの街づくり2など)で、
選択肢を増やすのに、わざわざ状況に応じた選択肢を作っていたのですが、
(最初は1つしかない選択肢で、進んでいれば2つ もっと進んでいれば3つの選択肢をそれぞれ用意)
何通りもの状態がある状態だと、それは無理なので
(何個のメニューがあって終了した項目の選択肢は表示しないものなど)
こんなの作ってみました。

(aoihikawaさんの助言と、思いつきで改良しました)

改良によって、when "平原へ"などになり
どの選択肢を選んだかがわかりやすくなっています。


a = createArray()
Flg1 = true
Flg2 = false
Flg3 = true

pushArray(a, "平原へ")

if Flg1
  pushArray(a, "荒地へ")
end
if Flg2
  pushArray(a, "墓場へ")
end
if Flg3
  pushArray(a, "山地へ")
end

pushArray(a, "戻る")


case a[speakWithSelectArray(a, "どこに行きますか?")]
when "平原へ"
    speak("平原へ向かいます")
when "荒地へ"
    speak("荒地へ向かいます")
when "墓場へ"
    speak("墓場へ向かいます")
when "山地へ"
    speak("山地へ向かいます")
when "戻る"
    speak("戻ります")
end

コメントする

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

コメント一覧

       256 mini 池ちゃん(翡翠ヶ池)(投稿日:2013/07/14 08:33, 履歴)
これを使ったほうが楽なような気が・・・。
Cdv30200 aoi icon mini aoihikawa(投稿日:2013/07/14 09:56, 履歴)
既に使ってますね

このスクリプトで良いところは
対応したコードを自由に設定できるところ

ただ、選択肢の配列変数に
対応したコードを上書きしているところは
間違いかと思いますが
Cdv30200 aoi icon mini aoihikawa(投稿日:2013/07/14 09:58, 履歴)
case b[speakWithSelectArray(a, "どこに行きますか?")]
  when 0
    speak("平原へ向かいます")
  when 1
    speak("荒地へ向かいます")
  when 99
    speak("戻ります")
end

ラストをこのように変更すると
関数の例と似たような形となり
すっきりすると思います

(動作内容は同じです)
Material 7186 1 mini ikosami(投稿日:2013/07/14 15:11, 履歴)
たしかに、結局は選択肢なのだから
わざわざ別の変数を使ってまで(今回のだと上書きしてまで)ifにするよりも
case使った方がすっきりしますね(^^;)

ご指摘、ありがとうございます。