やっぱりわかりません。(一定時間経過→収穫のスプリクト(質問掲示板)
投稿:
茹で小豆
投稿:2013/09/17 19:23:17(最新:2013/09/23 16:11:23)
setVariable("m", createArray())
setVariable("t", createArray())
setVariable("k", createArray())
setVariable("ko", createArray())
setVariable("ky", createArray())
setVariable("n", createArray())
setVariable("j", createArray())
if getFlag("sebu")
speak("作物が枯れてしまいました。")
setVariable("s",false)
setVariable("sebu",false)
end
if getFlag("s")
t = getTime() / 1000
t = floor(t)
if t>59
speak("作物にみがなりました!!")
if getFlag("m")
getVariable("m")[0speak("豆を20コ収穫しました!!")
elsif getFlag("t")
getVariable("t")[0]=20
speak("トマトを20コ収穫しました!!")
elsif getFlag("k")
getVariable("k")[0]=20
speak("キャベツを20コ収穫しました!!")
elsif getFlag("ko")
getVariable("ko")[0]=20
speak("小麦を20コ収穫しました!!")
elsif getFlag("ky")
getVariable("ky")[0]=20
speak("きゅうりを20コ収穫しました!!")
elsif getFlag("n")
getVariable("n")[0]=20
speak("なすを20コ収穫しました!!")
elsif getFlag("j")
getVariable("j")[0]=20
speak("を20コ収穫しました!!")
end
speak(toString(t) + "秒しかたっていません。\nまだ成長中です")
end
case speakWithSelect(7,"豆","トマト","きゅうり","小麦","キャベツ","ナス","じゃがいも",
"何を植えますか?")
when 0
speak("豆を植えました。")
setBaseTime()
setVariable("m", true)
setVariable("s", true)
when 1
speak("トマトを植えました。")
setBaseTime()
setVariable("t", true)
setVariable("s", true)
when 2
speak("きゅうりを植えました。")
setBaseTime()
setVariable("k", true)
setVariable("s", true)
when 3
speak("小麦を植えました。")
setBaseTime()
setVariable("ko", true)
setVariable("s", true)
when 4
speak("キャベツを植えました。")
setBaseTime()
setVariable("ky", true)
setVariable("s", true)
when 5
speak("ナスを植えました。")
setBaseTime()
setVariable("n", true)
setVariable("s", true)
when 6
speak("じゃがいもを植えました。")
setBaseTime()
setVariable("j", true)
setVariable("s", true)
end
setVariable("m", createArray())
setVariable("t", createArray())
setVariable("k", createArray())
setVariable("ko", createArray())
setVariable("ky", createArray())
setVariable("n", createArray())
setVariable("j", createArray())]
先日質問したスプリクトを、配列などを使って変えてみたんですが、やっぱりダメでした・・・・なんか、最後の行にエラーがあるらしいんですが、エラーがどこでおきているのかわかりません。
全体的な流れで言うと、
作物を育てる→60秒経っていなければ収穫できず、60秒たっていれば収穫できて、選択した作物を20こ収穫できる。しかし、変数sebu(セーブした時にtrueになる)がtrueだと、枯れてしまうっていうものです。
コメントする
コメントするには、ログインする必要があります。
コメント一覧
{{{code (内容)}}}
で、 []のあるスクリプトも問題なく表示することができますよ。
という訳で見やすく。
setVariable("m", createArray())
setVariable("t", createArray())
setVariable("k", createArray())
setVariable("ko", createArray())
setVariable("ky", createArray())
setVariable("n", createArray())
setVariable("j", createArray())
if getFlag("sebu")
speak("作物が枯れてしまいました。")
setVariable("s",false)
setVariable("sebu",false)
end
if getFlag("s")
t = getTime() / 1000
t = floor(t)
if t>59
speak("作物にみがなりました!!")
if getFlag("m")
getVariable("m")[0
=20
speak("豆を20コ収穫しました!!")
elsif getFlag("t")
getVariable("t")[0]=20
speak("トマトを20コ収穫しました!!")
elsif getFlag("k")
getVariable("k")[0]=20
speak("キャベツを20コ収穫しました!!")
elsif getFlag("ko")
getVariable("ko")[0]=20
speak("小麦を20コ収穫しました!!")
elsif getFlag("ky")
getVariable("ky")[0]=20
speak("きゅうりを20コ収穫しました!!")
elsif getFlag("n")
getVariable("n")[0]=20
speak("なすを20コ収穫しました!!")
elsif getFlag("j")
getVariable("j")[0]=20
speak("を20コ収穫しました!!")
end
speak(toString(t) + "秒しかたっていません。\nまだ成長中です")
end
case speakWithSelect(7,"豆","トマト","きゅうり","小麦","キャベツ","ナス","じゃがいも",
"何を植えますか?")
when 0
speak("豆を植えました。")
setBaseTime()
setVariable("m", true)
setVariable("s", true)
when 1
speak("トマトを植えました。")
setBaseTime()
setVariable("t", true)
setVariable("s", true)
when 2
speak("きゅうりを植えました。")
setBaseTime()
setVariable("k", true)
setVariable("s", true)
when 3
speak("小麦を植えました。")
setBaseTime()
setVariable("ko", true)
setVariable("s", true)
when 4
speak("キャベツを植えました。")
setBaseTime()
setVariable("ky", true)
setVariable("s", true)
when 5
speak("ナスを植えました。")
setBaseTime()
setVariable("n", true)
setVariable("s", true)
when 6
speak("じゃがいもを植えました。")
setBaseTime()
setVariable("j", true)
setVariable("s", true)
end
setVariable("m", createArray())
setVariable("t", createArray())
setVariable("k", createArray())
setVariable("ko", createArray())
setVariable("ky", createArray())
setVariable("n", createArray())
setVariable("j", createArray())]
さらに見やすく。
これで大丈夫かな?
setVariable("m", createArray())
setVariable("t", createArray())
setVariable("k", createArray())
setVariable("ko", createArray())
setVariable("ky", createArray())
setVariable("n", createArray())
setVariable("j", createArray())
if getFlag("sebu")
speak("作物が枯れてしまいました。")
setVariable("s",false)
setVariable("sebu",false)
end
if getFlag("s")
t = getTime() / 1000
t = floor(t)
if t>59
speak("作物にみがなりました!!")
if getFlag("m")
getVariable("m")[0]=20
speak("豆を20コ収穫しました!!")
elsif getFlag("t")
getVariable("t")[0]=20
speak("トマトを20コ収穫しました!!")
elsif getFlag("k")
getVariable("k")[0]=20
speak("キャベツを20コ収穫しました!!")
elsif getFlag("ko")
getVariable("ko")[0]=20
speak("小麦を20コ収穫しました!!")
elsif getFlag("ky")
getVariable("ky")[0]=20
speak("きゅうりを20コ収穫しました!!")
elsif getFlag("n")
getVariable("n")[0]=20
speak("なすを20コ収穫しました!!")
elsif getFlag("j")
getVariable("j")[0]=20
speak("を20コ収穫しました!!")
end
speak(toString(t) + "秒しかたっていません。\nまだ成長中です")
end
case speakWithSelect(7,"豆","トマト","きゅうり","小麦","キャベツ","ナス","じゃがいも",
"何を植えますか?")
when 0
speak("豆を植えました。")
setBaseTime()
setVariable("m", true)
setVariable("s", true)
when 1
speak("トマトを植えました。")
setBaseTime()
setVariable("t", true)
setVariable("s", true)
when 2
speak("きゅうりを植えました。")
setBaseTime()
setVariable("k", true)
setVariable("s", true)
when 3
speak("小麦を植えました。")
setBaseTime()
setVariable("ko", true)
setVariable("s", true)
when 4
speak("キャベツを植えました。")
setBaseTime()
setVariable("ky", true)
setVariable("s", true)
when 5
speak("ナスを植えました。")
setBaseTime()
setVariable("n", true)
setVariable("s", true)
when 6
speak("じゃがいもを植えました。")
setBaseTime()
setVariable("j", true)
setVariable("s", true)
end
setVariable("m", createArray())
setVariable("t", createArray())
setVariable("k", createArray())
setVariable("ko", createArray())
setVariable("ky", createArray())
setVariable("n", createArray())
setVariable("j", createArray())
これで大丈夫かな?
ごめんなさい、僕のはバグがあると思われます。
rurunn9さんはベテランなのでそっちを信じたほうがいいと思います。
rurunn9さんはベテランなのでそっちを信じたほうがいいと思います。
それから、配列変数の扱い方に慣れてないのだと思いますが
setVariable("m", createArray())
で変数mを配列にはしたけど中身を入れないまま
setVariable("m", true)
とすると変数mにはtrueが入ってるだけで、配列ではなくなります
もしや配列はひとつ、二次元で作れば充分なのでは?
#開始スクリプト setVariable("作物", createArray()) # 作物[n][m] # n...0=いくつ持ってるか, 1=名前 # m...作物番号 getVariable("作物")[0]=createArray() getVariable("作物")[1]=createArray() getVariable("作物")[1][0]="豆" getVariable("作物")[1][1]="トマト" getVariable("作物")[1][2]="きゅうり" getVariable("作物")[1][3]="小麦" getVariable("作物")[1][4]="キャベツ" getVariable("作物")[1][5]="なす" getVariable("作物")[1][6]="じゃがいも" getVariable("作物")[1][7]="まじたい" # 畑...植えてある作物番号が入る、-1なら無し setVariable("畑", -1)#イベントスクリプト if 0<=getVariable("畑") #何か植えてある if getFlag("sebu") #セーブしたから枯れた speak(getVariable("作物")[1][getVariable("畑")]+"が枯れてしまいました。\n") else #セーブはしていない t=floor( getTime()/1000 ) if 20<=t #収穫した getVariable("作物")[0][getVariable("畑")]=getVariable("作物")[0][getVariable("畑")]+20 speak(getVariable("作物")[1][getVariable("畑")]+"を20コ収穫しました。") setVariable("畑", -1) else #成長中 tt=20-t speak(getVariable("作物")[1][getVariable("畑")]+"は順調に育っています。\nあと"+tt+"秒くらいで実るでしょう。") end end elsif getVariable("畑")==-1 #何も植えてない a=speakWithSelectArray(getVariable("作物")[1], "何を植えますか?") setBaseTime() speak(getVariable("作物")[1][a]+"を植えますた\n20秒後が楽しみですね。") setVariable("畑", a) else speak("変数「畑」の値がおかしい") end少なくとも、コピペしただけでは一度枯れると(フラグsebuをどこかでtrueにしたら)この畑では二度と育てる事ができません
setVariable("畑", -1)
でリセットしてませんからねぇ
何秒で育つかは、実際にゲームをテストプレイしながら調整すると良いかと。
毎回必ず20個ずつ収穫できるけど、
r=rand(16)+5
とかでランダム個数収穫の方がゲームっぽいですよね
配列の良い所は、開始スクリプトに追加するだけで新しい作物を好きなだけ追加できちゃう点ですね
間違っても、まじたいなんか栽培しちゃダメですw
いろいろ改良して、たくさんの機能をつけました!
もちろん間違っても期待しちゃダメですよ(笑)