銀行を作ろうと頑張った結果orz(質問掲示板

投稿: User icon mini 退会したユーザー 投稿:2012/07/24 17:55:24(最新:2012/07/25 16:29:25)
x=true
if x=getMoney()>999
setVariable("銀行", 0)
case speakWithSelect(3,"1000G","10000G","預けない", 
    "こちらは銀行です。\nいくら預けますか?")
  when 0
setVariable("銀行",getVariable("銀行")+1000)
subMoney(1000)   
  when 1
setVariable("銀行",getVariable("銀行")+10000)
subMoney(10000)    
  when 2
speak("そうですか\nありがとうございました。")


else
speak("すいません、お預かりは1000Gからとなっております。")
speak("ありがとうございました。")

end
 end

と書いたら

syntax error, コードに文法的な間違いがあります。 line(行): 2

と出ました。

今、変数、フラグがとても苦手なので、だれか教えてください。
お願いします。

コメントする

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

コメント一覧

Nyan mini rurun9(投稿日:2012/07/25 00:40, 履歴)
#■開始スクリプト
setVariable("銀行", 0); addMoney(0)

r=rand(2000) #臨時確認用。実装時に消しといてOK
speak("臨時収入 +",r," G"); addMoney(r)


s=createArray() #選択肢
s[0]="帰ります"
#持ってるGがいくらか調べて、千G毎の選択肢を作る
x=floor( getMoney() /1000 )
n=0; i=0
while n<x
 i=i+1000
 pushArray(s, i+" G")
n=n+1
end

a=speakWithSelectArray(s, "こちらは銀行の預金窓口です。\nいくらお預かりしましょうか?\n【預金額 "+getVariable("銀行")+" G】\n\n現在 "+getMoney()+" G 所持しています")

case a
when 0 #帰る
 speak("またのお越しをお待ちしております")

else
 subMoney( a*1000 )
 setVariable("銀行", getVariable("銀行")+a*1000 )
 speak(s[a]+" お預かり致しました。\n【預金額 "+getVariable("銀行")+" G】\n\nありがとうございました")

end
こんな感じでどーかなー?
預金引き出し窓口は別に作るとして、何か疑問点などありましたらどーぞぉ
User icon mini 退会したユーザー(投稿日:2012/07/25 12:57, 履歴)
case speakWithSelect(3,"預ける","引き出す","帰る", 
    "こちらは銀行です。\nどうしますか?")
  when 0
s=createArray() #選択肢
s[0]="帰ります"#持ってるGがいくらか調べて、千G毎の選択肢を作る
x=floor( getMoney() /1000 )
n=0; i=0
while n<x
 i=i+1000
 pushArray(s, i+" G")
n=n+1
end
a=speakWithSelectArray(s, "いくらお預かりしましょうか?\n【預金額"+getVariable("銀行")+" G】\n\n現在"+getMoney()+" G 所持しています")
case a
when 0 #帰る 
speak("またのお越しをお待ちしております")
else 
subMoney( a*1000 )
 setVariable("銀行", getVariable("銀行")+a*1000 )

 speak(s[a]+" お預かり致しました。\n【預金額"+getVariable("銀行")+" G】\n\nありがとうございました")
end    
  when 1
s=createArray() #選択肢
s[0]="帰ります"#持ってるGがいくらか調べて、千G毎の選択肢を作る
x=floor( getVariable("銀行") /1000 )
n=0; i=0
while n<x
 i=i+1000
 pushArray(s, i+" G")
n=n+1
end
a=speakWithSelectArray(s, "いくら引き出しましょうか?\n【預金額"+getVariable("銀行")+" G】\n\n現在"+getMoney()+" G 所持しています")
case a
when 0 #帰る 
speak("またのお越しをお待ちしております")
else 
addMoney( a*1000 )
 setVariable("銀行", getVariable("銀行")-a*1000 )
speak(s[a]+" 引き出しました。\n【所持金"+getMoney() +" G】\n\nありがとうございました")
end    
  when 2
speak("ありがとうございました。")
    
end


ありがとうございます。
選択肢を増やすというのが、俺には全然わからないです。orz
すごいですね、臨時収入という発想もすごいです。
引き出しも合わせて、作れたので、一応載せました。
Nyan mini rurun9(投稿日:2012/07/25 15:59, 履歴)
えーと、x=floor(所持金/1000) という計算で
最大x*1000までを預けられる事がワカル

ので選択肢配列sに要素を1000,2000,3000,…という形で追加していってるのです
もしx=0つまり999以下しか所持してないなら「選択肢に追加するwhile文」が0回繰り返されて終わる形になってます

s[0]つまり0個目の選択肢がキャンセルで固定してあって、その後は必ず1番目なら1000、2番目なら2000、という選択肢が作られるのがポイントw

引き出し窓口が作れるという事は、何故動くのかが理解できている証拠です。素晴らしい
RPGだとテストプレーに時間かかるので、こうしたイベントスクリプトは動作確認を簡単にする工夫も必要で面倒ですよねぇ
User icon mini 退会したユーザー(投稿日:2012/07/25 16:29, 履歴)
>引き出し窓口がつくれるという事は、

いえいえ、ただコピーしてspeakの中身などを変えただけですよ。
わかりやすく教えていただき、ありがとうございました。
Orichara01 2 700x700  mini ラジアン(投稿日:2012/07/24 18:10, 履歴)
エラーの原因は2行目の「=」だと。
条件式では「==」にしないと。

それと「x=」ってこれ必要ないような・・・
User icon mini 退会したユーザー(投稿日:2012/07/24 18:39, 履歴)
あ、ほんとだ。
でも、今度は話しかけても何もならなくなりました。
何でですか?教えてください
お願いします。
Orichara01 2 700x700  mini ラジアン(投稿日:2012/07/24 19:28, 履歴)
case文のendが
if文のelseの後にきてるので、
お金が999以下のときに
何もおこらないのかも。

要するに、途中にあるelseはcase文のelseのため、
このままでは、elseの内容は実行されません・・・
128 mini fragile(投稿日:2012/07/24 22:17, 履歴)
ところで3行目のsetVariable("銀行", 0)は
所持金が1000以上の時に実行されるけど仕様?
このままだと引き出せないような気がしたもので。
User icon mini 退会したユーザー(投稿日:2012/07/24 22:29, 履歴)
途中のelseはcaseのになっちゃうので
case文のendの後にもって来るべき。
そうすればif文のelseになりますよーっと。
User icon mini 退会したユーザー(投稿日:2012/07/25 12:57, 履歴)
endの位置って重要ですね。
わかりやすく教えていただきありがとうございました。