何が間違っているのかわかりません(質問掲示板)
投稿:
闇さん
投稿:2011/07/03 22:23:03(最新:2011/07/04 12:26:04)
case speakWithSelect(3,"イチゴジュース","パンケーキ","イチゴクッキー",
"何を作りますか?\n\n?\n")
when 0
if getFlag("eレシピ")
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(E)
speak("料理は成功した")
giveItem(7264)
end
end
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(E)
speak("料理は失敗した")
giveItem(7265)
end
end
end
when 1
if getFlag("pレシピ")
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は成功した")
giveItem(7278)
end
end
else
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は失敗した")
giveItem(7277)
end
end
end
when 2
if getFlag("kレシピ")
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
removeItemWithIndex(E)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は成功した")
giveItem(7277)
end
end
else
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
removeItemWithIndex(E)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は失敗した")
giveItem(7279)
end
end
end
end
このような内容でエラーが出るのですが何が間違っているのでしょうか
2, 3 action : syntax error, コードに文法的な間違いがあります。 line(行): 56
17, 5 action : syntax error, コードに文法的な間違いがあります。 line(行): 57
ツイート
"何を作りますか?\n\n?\n")
when 0
if getFlag("eレシピ")
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(E)
speak("料理は成功した")
giveItem(7264)
end
end
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(E)
speak("料理は失敗した")
giveItem(7265)
end
end
end
when 1
if getFlag("pレシピ")
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は成功した")
giveItem(7278)
end
end
else
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は失敗した")
giveItem(7277)
end
end
end
when 2
if getFlag("kレシピ")
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
removeItemWithIndex(E)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は成功した")
giveItem(7277)
end
end
else
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
removeItemWithIndex(E)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は失敗した")
giveItem(7279)
end
end
end
end
このような内容でエラーが出るのですが何が間違っているのでしょうか
2, 3 action : syntax error, コードに文法的な間違いがあります。 line(行): 56
17, 5 action : syntax error, コードに文法的な間違いがあります。 line(行): 57
コメントする
コメントするには、ログインする必要があります。
コメント一覧
だから長文コードの時は{{{code}}}をですねー。
とりあえずRmake記法に則り、{{{code}}}を使用して、
そんでインデントをつけてみればいいと思います。
文法的に間違ってるところがボロボロ出てくると思いますよ。
endも付けりゃいいってものじゃあ無いですからねぇ。
とりあえずRmake記法に則り、{{{code}}}を使用して、
そんでインデントをつけてみればいいと思います。
文法的に間違ってるところがボロボロ出てくると思いますよ。
endも付けりゃいいってものじゃあ無いですからねぇ。
# 例
if(A==B)
speak("分岐")
if(C==D)
speak("終わり")
elsif(E==F)
speak("分岐")
if(E==G)
if(H==I)
speak("終わり")
end
end
else
speak("ifには当てはまらなかった")
end
end
case speakWithSelect(3,"イチゴジュース","パンケーキ","イチゴクッキー",
"何を作りますか?\n\n?\n")
when 0
if getFlag("eレシピ")
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(E)
speak("料理は成功した")
giveItem(7264)
end
end
end
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(E)
speak("料理は失敗した")
giveItem(7265)
end
end
end
end
when 1
if getFlag("pレシピ")
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は成功した")
giveItem(7277)
end
end
end
else
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は失敗した")
giveItem(7278)
end
end
end
end
when 2
if getFlag("kレシピ")
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
removeItemWithIndex(E)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は成功した")
giveItem(7278)
end
end
end
else
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
removeItemWithIndex(E)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は失敗した")
giveItem(7278)
end
end
end
end
end
このように直したのですが下のようなエラーが・・・
2, 3 action : syntax error, コードに文法的な間違いがあります。 line(行): 36
イチゴジュースを選ぶとなぜか何も起こらず
パンケーキを選ぶとイチゴジュースを作るのです
"何を作りますか?\n\n?\n")
when 0
if getFlag("eレシピ")
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(E)
speak("料理は成功した")
giveItem(7264)
end
end
end
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(E)
speak("料理は失敗した")
giveItem(7265)
end
end
end
end
when 1
if getFlag("pレシピ")
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は成功した")
giveItem(7277)
end
end
end
else
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は失敗した")
giveItem(7278)
end
end
end
end
when 2
if getFlag("kレシピ")
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
removeItemWithIndex(E)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は成功した")
giveItem(7278)
end
end
end
else
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
removeItemWithIndex(E)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は失敗した")
giveItem(7278)
end
end
end
end
end
このように直したのですが下のようなエラーが・・・
2, 3 action : syntax error, コードに文法的な間違いがあります。 line(行): 36
イチゴジュースを選ぶとなぜか何も起こらず
パンケーキを選ぶとイチゴジュースを作るのです
すみません、訂正です。
if文の中にif文を入れるのはぜんぜん大丈夫でした。
でも、それをどんどん複雑にすればするほど
end忘れなどのケアレスミスは多くなりがちですので、
そこは注意するべきです。
半角スペースを使って整頓すると分かりやすくなりますよ。
if文の中にif文を入れるのはぜんぜん大丈夫でした。
でも、それをどんどん複雑にすればするほど
end忘れなどのケアレスミスは多くなりがちですので、
そこは注意するべきです。
半角スペースを使って整頓すると分かりやすくなりますよ。
えっと、とりあえず整理しますね。
このようなコードだとend不足(多すぎ)がほとんどです。
endをまとめて書いていると、if文の実行中にendにぶつかる前に
下のifにぶつかっている所があるかもです。
(スクリプトは基本上から下に実行される)
if文などの文は終わらせるタイミングで
endを書くようにするのがいいと思います。
case speakWithSelect(3,"イチゴジュース","パンケーキ","イチゴクッキー",
"何を作りますか?\n\n?\n")
when 0
if getFlag("eレシピ")
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(E)
speak("料理は成功した")
giveItem(7264)
end
end
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(E)
speak("料理は失敗した")
giveItem(7265)
end
end
end
when 1
if getFlag("pレシピ")
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は成功した")
giveItem(7278)
end
end
else
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は失敗した")
giveItem(7277)
end
end
end
when 2
if getFlag("kレシピ")
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
removeItemWithIndex(E)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は成功した")
giveItem(7277)
end
end
else
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
removeItemWithIndex(E)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は失敗した")
giveItem(7279)
end
end
end
end
このようなコードだとend不足(多すぎ)がほとんどです。
endをまとめて書いていると、if文の実行中にendにぶつかる前に
下のifにぶつかっている所があるかもです。
- 簡単な例
if getFlag("A")
speak("A")
if getFlag("B")#この時点でアウト
speak("B")
else
speak("C")
end#endが1つ足りていないが、上のミスを直さないと表示されない
(スクリプトは基本上から下に実行される)
if文などの文は終わらせるタイミングで
endを書くようにするのがいいと思います。
when 0 E=getItemIndexWithId(7261) m=getItemIndexWithId(7262) if E==-1||m==-1 speak("材料が足りません") else removeItemWithIndex(m) removeItemWithIndex(E) if getFlag("eレシピ") speak("料理は成功した") giveItem(7264) else speak("料理は失敗した") giveItem(7265) end endwhen0 の中身整理するとこんな感じ?
条件文多すぎると、後から見直しても訳分からなくなるから、
まとめられるのはまとめた方がいいかな。