リストの作り方(質問掲示板)
投稿: tomato
投稿:2010/08/15 21:31:15(最新:2010/08/18 12:20:18)
ゲームでよくあるモンスターリストや、アイテムリストを作りたいのですが、いい案が思いつきません。
モンスターを倒したり、アイテムを拾ったら、リストが追加されていくというものを作りたいのです。
具体的に言えば、選択肢メッセージの内容が、取得したフラグかなにかで変化できればいいなと思っています。
どなたか知恵をお貸しください。<(_ _)>
ツイート
モンスターを倒したり、アイテムを拾ったら、リストが追加されていくというものを作りたいのです。
具体的に言えば、選択肢メッセージの内容が、取得したフラグかなにかで変化できればいいなと思っています。
どなたか知恵をお貸しください。<(_ _)>
コメントする
コメントするには、ログインする必要があります。
コメント一覧
shirosaboten(投稿日:2010/08/16 18:02,
履歴)
なんとそんな作戦でしたか^^;w
半日かかっちゃったけど配列ってかなり便利ですね
いままで使わないで(使えないで)いたのは非常にもったいないです><;
半日かかっちゃったけど配列ってかなり便利ですね
いままで使わないで(使えないで)いたのは非常にもったいないです><;
shirosaboten(投稿日:2010/08/16 15:48,
履歴)
rurun9さんのを参考にモンスターリスト考えてみました
ためしにゲームで動かしてみるとわかりやすいかと思います。
これだと、倒したモンスターだけ選択肢に出るし、順番も降順なので気分もよろしいかと。
モンスターの画像IDも配列に入れて一緒に呼び出したらより図鑑らしくなると思います。
rurun9さんの配列の記事かなり参考にしました。
まだ使いこなせないけど勉強になります。
#開始スクリプト ##リストを二次元配列にする setVariable("monsterlist", createArray()) n = 0 while n < 10 getVariable("monsterlist")[n] = createArray() n = n + 1 end # getVariable("monsterlist")[n][m] # n…リスト番号 # m : 0 …true か false # : 1 …モンスター名 # : 2 …説明文 ## m : 0 を全てfalseに i = 0 while i < 5 getVariable("monsterlist")[i][0] = "false" i = i + 1 end ## 各リスト番号のモンスター名と説明文設定 getVariable("monsterlist")[0][1] ="スライム" getVariable("monsterlist")[0][2] ="スライム:とても弱い生き物" getVariable("monsterlist")[1][1] ="緑ゼリー" getVariable("monsterlist")[1][2] ="緑ゼリー:弱い生き物、緑" getVariable("monsterlist")[2][1] ="青ゼリー" getVariable("monsterlist")[2][2] ="青ゼリー:やや弱い生き物" getVariable("monsterlist")[3][1] ="赤ゼリー" getVariable("monsterlist")[3][2] ="赤ゼリー:あああああああ" getVariable("monsterlist")[4][1] ="黒ゼリー:あああああああ" getVariable("monsterlist")[4][2] ="黒ゼリー:あああああああ"
#敵モンスター倒したとき(m:0をtrueに) ## speakの部分を入れない場合は ## getVariable("monsterlist")[0][0] = "true" のみでもok # スライムを倒したとき if getVariable("monsterlist")[0][0] == "false" speak("モンスターリストに新たな項目が追加された") getVariable("monsterlist")[0][0] = "true" end # 緑ゼリーを倒したとき if getVariable("monsterlist")[1][0] == "false" speak("モンスターリストに新たな項目が追加された") getVariable("monsterlist")[1][0] = "true" end # 青ゼリーを倒したとき if getVariable("monsterlist")[2][0] == "false" speak("モンスターリストに新たな項目が追加された") getVariable("monsterlist")[2][0] = "true" end #以下省略
#図鑑参照時 ## 1.選択肢を作る(m:0 = trueの項目だけその名前を配列に入れる) a = createArray() i =0 while i < 5 if getVariable("monsterlist")[i][0] == "true" pushArray(a, getVariable("monsterlist")[i][1]) end i = i +1 end pushArray(a, "やめる") #やめるの項目も配列に追加 speak("図鑑を開いた") close = 0 while close == 0 #closeが0以外だと図鑑は閉じられる k = speakWithSelectArray(a, "参照したい項目を選んでね") i = 0 #選んだ項目の順番から名前を引き出し、リストを参照 while i < 5 if a[k] == getVariable("monsterlist")[i][1] speak(getVariable("monsterlist")[i][2]) elsif a[k] == "やめる" close = 1 #やめるを選ぶとclose == 0が成立しなくなりループ終了 end i = i +1 end end
ためしにゲームで動かしてみるとわかりやすいかと思います。
これだと、倒したモンスターだけ選択肢に出るし、順番も降順なので気分もよろしいかと。
モンスターの画像IDも配列に入れて一緒に呼び出したらより図鑑らしくなると思います。
rurun9さんの配列の記事かなり参考にしました。
まだ使いこなせないけど勉強になります。
んー。要するに
「リスト」を配列で管理すれば良いのでは?
pushArray(配列変数名) で追加していくだけですよ
同じ物を重複して追加しないように、追加前にリストの中にそれがあるかどうかを調べてから追加する、程度かと。
配列でリストを所持しておけば、そのまま選択肢にもできますし。
(例→スクリプト/つくってみよう1)
もし図鑑的な順序が決まっているリストなら
二次元配列にしておいて
getVariable("monsterlist")[n][m]
n はリスト番号
m は
・ 0 : true なら持ってる false なら持ってない
・ 1 : 中身。具体的な名前とか
というルールにしてはどーでしょ。
「リスト」を配列で管理すれば良いのでは?
pushArray(配列変数名) で追加していくだけですよ
同じ物を重複して追加しないように、追加前にリストの中にそれがあるかどうかを調べてから追加する、程度かと。
配列でリストを所持しておけば、そのまま選択肢にもできますし。
(例→スクリプト/つくってみよう1)
もし図鑑的な順序が決まっているリストなら
二次元配列にしておいて
getVariable("monsterlist")[n][m]
n はリスト番号
m は
・ 0 : true なら持ってる false なら持ってない
・ 1 : 中身。具体的な名前とか
というルールにしてはどーでしょ。
shirosaboten(投稿日:2010/08/16 00:25,
履歴)
失敗。
#開始スクリプトなどで設定 setVariable("項目",createArray()) # 5項目ある図鑑をすべて???にする i = 0 while i < 5 getVariable("項目")[i] = "???" i = i + 1 end setVariable("説明文",createArray()) #説明文を考える getVariable("説明文")[0] = "HPを回復する" getVariable("説明文")[1] = "状態異常:毒を回復" getVariable("説明文")[2] = "状態異常:マヒを回復" getVariable("説明文")[3] = "あああああ" getVariable("説明文")[4] = "いいいいい"
# アイテム取得時 giveItem(111) #項目0番目HPを回復するアイテムだとする speak("薬草を手に入れた") getVariable("項目")[0] = "薬草" giveItem(112) #項目1番目毒を回復するアイテムだとする speak("毒消し草を手に入れた") getVariable("項目")[1] = "毒消し草"
#図鑑を参照したとき(本棚にイベントをはっつけるなど) i = 0 while i < 1 case speakWithSelect(6, getVariable("項目")[0], getVariable("項目")[1], getVariable("項目")[2], getVariable("項目")[3], getVariable("項目")[4], "やめる",#都合により無駄に改行してます "参照したい項目を選んでね") when 0 n = 0 when 1 n = 1 when 2 n = 2 when 3 n = 3 when 4 n = 4 when 5 speak("図鑑を閉じた") i = 1 end if i == 0 if getVariable("項目")[n] == "???" speak("まだ参照できません") else speak(getVariable("説明文")[n]) end end end
shirosaboten(投稿日:2010/08/16 00:19,
履歴)
いいですねぇ、そういうのやりたいですよねー^^
メニューに表示とかはできるかわかんないですけど
いろいろやりかたはありそうです
簡単なものでアイテム取得後に項目が埋まってくなら
(各項目の位置は固定)
[ # アイテム取得時 giveItem(111) #このアイテムが項目0番目HPを回復するアイテムだとする speak("薬草を手に入れた") getVariable("項目")[0] = "薬草" giveItem(112) #このアイテムが項目1番目毒を回復するアイテムだとする speak("毒消し草を手に入れた") getVariable("項目")[1] = "毒消し草" ]
}}}
項目を追加する(最初は選択肢が2こでアイテムが増えるにつれ選択肢が増えてく…)となるとどう書くのかまだ見当がつきません^^;
メニューに表示とかはできるかわかんないですけど
いろいろやりかたはありそうです
簡単なものでアイテム取得後に項目が埋まってくなら
(各項目の位置は固定)
#開始スクリプトなどで設定 setVariable("項目",createArray()) # ためしに5項目ある図鑑をすべて???にする i = 0 while i < 5 getVariable("項目")[i] = "???" i = i + 1 end setVariable("説明文",createArray()) #説明文を考える getVariable("説明文")[0] = "HPを回復する" getVariable("説明文")[1] = "状態異常:毒を回復" getVariable("説明文")[2] = "状態異常:マヒを回復" getVariable("説明文")[3] = "あああああ" getVariable("説明文")[4] = "いいいいい"
[ # アイテム取得時 giveItem(111) #このアイテムが項目0番目HPを回復するアイテムだとする speak("薬草を手に入れた") getVariable("項目")[0] = "薬草" giveItem(112) #このアイテムが項目1番目毒を回復するアイテムだとする speak("毒消し草を手に入れた") getVariable("項目")[1] = "毒消し草" ]
}}}
#図鑑を参照したとき(本棚にイベントをはっつけるなど) i = 0 while i < 1 case speakWithSelect(6, getVariable("項目")[0], getVariable("項目")[1], getVariable("項目")[2], getVariable("項目")[3], getVariable("項目")[4], "やめる", "参照したい項目を選んでね") when 0 n = 0 when 1 n = 1 when 2 n = 2 when 3 n = 3 when 4 n = 4 when 5 speak("図鑑を閉じた") i = 1 end if i == 0 if getVariable("項目")[n] == "???" speak("まだ参照できません") else speak(getVariable("説明文")[n]) end end end
項目を追加する(最初は選択肢が2こでアイテムが増えるにつれ選択肢が増えてく…)となるとどう書くのかまだ見当がつきません^^;
なんとか自分の中でわかって使えるようになりたいと思います。
お二人とも本当にありがとうございました!