スクリプト/コツ/文法エラーを出しにくいスクリプトの書き方
最終投稿者: akasata
更新:2011/06/07 00:41:36
スクリプトを書く際、文法エラーに悩まされることがあります。
文法エラーの多くはスクリプトの書き間違えですが、以下のような
間違えが多いようです。
さて、Rmakeでスクリプトを書くと言うことは、プログラミングを
行っていることになります。昔から、プログラマは、プログラムを
書く際にこのような間違えをしないように、インデント(字下げ)を
行います。
良くないコードの例
良くないコードを見てみましょう。以下のようなコードは何が書いて
あるのかわかりにくいものです。このようなコードだとどのような
バグが紛れ込んでいるのかわかりません。
(実際、以下のコードは文法エラーを含んでいます。)
良いコードの例
上記のコードを書き直すと以下のように整形することができます。
これが、インデントの整ったコードです。上記のコードでは見つけ
にくかったのですが、下記のコードでは、caseのendが閉じられて
いないことが一目でわかります。
(つまり文法エラーが発生しています。)
正しいコードは以下のようになります。
このように見た目に見やすいコードを書くことを心がけることによって、
エラーやバグの発生を抑えることができます。
皆さんも、ぜひ美しいコードを書くことを心がけてみてください。
ツイート
文法エラーの多くはスクリプトの書き間違えですが、以下のような
間違えが多いようです。
- endを書き忘れている
- カッコを閉じ忘れている
さて、Rmakeでスクリプトを書くと言うことは、プログラミングを
行っていることになります。昔から、プログラマは、プログラムを
書く際にこのような間違えをしないように、インデント(字下げ)を
行います。
良くないコードの例
良くないコードを見てみましょう。以下のようなコードは何が書いて
あるのかわかりにくいものです。このようなコードだとどのような
バグが紛れ込んでいるのかわかりません。
(実際、以下のコードは文法エラーを含んでいます。)
if getVariable("なにがしか") == 1 speak("これこれ") case getVariable("ほげほげ") when 0 speak("0ですな") when 1 speak("1ですよ") else speak("ほげほげ") end
良いコードの例
上記のコードを書き直すと以下のように整形することができます。
これが、インデントの整ったコードです。上記のコードでは見つけ
にくかったのですが、下記のコードでは、caseのendが閉じられて
いないことが一目でわかります。
(つまり文法エラーが発生しています。)
if getVariable("なにがしか") == 1 speak("これこれ") case getVariable("ほげほげ") when 0 speak("0ですな") when 1 speak("1ですよ") else speak("ほげほげ") end
正しいコードは以下のようになります。
if getVariable("なにがしか") == 1 speak("これこれ") case getVariable("ほげほげ") when 0 speak("0ですな") when 1 speak("1ですよ") end else speak("ほげほげ") end
このように見た目に見やすいコードを書くことを心がけることによって、
エラーやバグの発生を抑えることができます。
皆さんも、ぜひ美しいコードを書くことを心がけてみてください。
コメントする
コメントするには、ログインする必要があります。
コメント一覧
madousioz(投稿日:2011/06/07 00:41,
履歴)
)で閉じてないとか?見ると[ case speakWithSerect(2,] が閉じてなくて怪しいけど
退会したユーザー(投稿日:2011/06/07 00:34,
履歴)
↓あ、endを書き忘れましたがそれではないです。
退会したユーザー(投稿日:2011/06/07 00:33,
履歴)
case speakWithSelect(2, "はい", "いいえ", "聞きたいか?100G貰うぞ。(現在 getVariable("Gold") Gold)"
これの最後の行、何度やっても間違ってるっていわれるんですが・・・
どこが間違ってるのですか?自己解決できません!
↓これ何が間違ってるのかわからない
case speakWithSelect(3,
"6424 攻撃 10",
"6493 カネーバッチ 20",
"♪いーらーなーい♪",
"何を買いますか?")
when 0 buyItem(6424, "攻撃", 10)
speak("現在のGold ", getVariable("Gold"))
when 1 buyItem(6493, "カネーバッチ", 20)
speak("現在のGold ", getVariable("Gold"))
when 2speak("いらないのかよ")
speak("テストだからGoldあげる")
setVariable("Gold", getVariable("Gold") + 10
speak("現在のGold ", getVariable("Gold"))
end
case speakWithSelect(3,
"6424 攻撃 10",
"6493 カネーバッチ 20",
"♪いーらーなーい♪",
"何を買いますか?")
when 0 buyItem(6424, "攻撃", 10)
speak("現在のGold ", getVariable("Gold"))
when 1 buyItem(6493, "カネーバッチ", 20)
speak("現在のGold ", getVariable("Gold"))
when 2speak("いらないのかよ")
speak("テストだからGoldあげる")
setVariable("Gold", getVariable("Gold") + 10
speak("現在のGold ", getVariable("Gold"))
end
speak("・・・確か今日はクリスマス・・・あ~!プレゼントだー!")
speak("あれ?なにかメモが挟まっている・・・")
case speakWithSelect(2,"読む","読まない",
"メモを読みますか?")
when 0
speak("どれどれ、プレゼントは慎重に開けてね?じゃあ慎重に開けよう")
showCenterImage(38917)
speak("あ!タマゴだ!")
case speakWithSelect(3,"捨てる","卵焼きにする","育ててみる",
"このタマゴをどうしますか?")
when 0
speak("捨てるか・・・もったいないけど・・・")
goBadEnding()
when 1
speak("でかーい!タマゴ焼にして食っちゃおう!")
speak("ムシャムシャ!")
speak("う・・・お腹が・・・")
speak("パタリ・・・")
goBadEnding()
when 2
speak("よし・・・育てるか・・・")
case speakWithSelect(3,"タマゴを隠す","昼寝をする","卵を割る",
"なにをしますか?")
when 0
speak("お母さんに見つかったら大変だ!タマゴを隠しておこう!")
speak("・・・数日後・・・")
speak("あれ?卵にひびが入っているぞ?")
speak("おお!動いてる!")
speak("われた!")
hideCenterImage()
showImage(38922)
speak("ドラゴンが生まれたぞ!")
case speakWithSelect(3,"散歩に出かける","家で鍛える","ペットショップに売る",
"これからどうしよう・・・\n\nこれからどうしますか?")
when 0
speak("よし!散歩に出かけよう!")
speak("ガチャ")
speak("バサバサ!")
speak("待て!ドラゴン!")
case speakWithSelect(2,"ひとまず冷静に","警察に報告",
"このままだとドラゴンは逃げられてしまいます!どうしますか?")
when 0
speak("ここは冷静になろう・・・あ!戻ってきた!")
speak("ドラゴンは戻ってきた!")
speak("ドラゴンの飛ぶ力が3上がった!")
case speakWithSelect(2,"パソコンをやる","森で狩り",
"どうしますか?")
when 0
speak("ん?")
speak("ドラゴンの大会?")
playSound(16423)
speak("わお!俺の町でドラゴンの大会があったなんて!")
speak("今度行ってみよう!")
speak("ドラゴンの最大体力値が2上がった!")
changeScene(11566)
when 1
speak("森で狩りをした!")
speak("体力が5減った!")
speak("体力最大値が2上がった!力が3上がった!狩りの能力が4上がった!経験値を5手に入れた!技術が3上がった!飛ぶ力が4上がった!")
changeScene(11566)
end
when 1
speak("警察に行くぞ!")
speak("あの~ドラゴンに逃げられてしまいました!")
speak("警察「ドラゴンなんているわけないでしょ^^」")
goBadEnding()
end
when 1
speak("家で練習した!")
speak("ドラゴンの力が5上がった!")
playSound(25541)
speak("技、ひのこを覚えた!")
case speakWithSelect(2,"パソコンをやる","森で狩り",
"どうしますか?")
when 0
speak("ん?")
speak("ドラゴンの大会?")
playSound(16423)
speak("わお!俺の町でドラゴンの大会があったなんて!")
speak("今度行ってみよう!")
speak("ドラゴンの最大体力値が2上がった!")
changeScene(11566)
when 1
speak("森で狩りをした!")
speak("体力が5減った!")
speak("体力最大値が2上がった!力が3上がった!狩りの能力が4上がった!経験値を5手に入れた!技術が3上がった!飛ぶ力が4上がった!")
changeScene(11566)
case speakWithSelect(2,"パソコンをやる","家で訓練",
"何をしますか?")
when 0
speak("お!ドラゴンの大会なんてあるんだ~")
speak("参加してみるか")
changeScene(11566)
when 1
speak("訓練終了!何も起こらなかった・・・")
changeScene(11566)
end
case speakWithSelect(2,"パソコンをやる","家で訓練",
"何をしますか?")
when 0
speak("お!ドラゴンの大会なんてあるんだ~")
speak("参加してみるか")
changeScene(11566)
when 1
speak("訓練終了!何も起こらなかった・・・")
changeScene(11566)
end
when 2
speak("これ、いくらで売れますか?")
speak("ドラゴンは高値で売れた!")
goBadEnding()
end
when 1
speak("じゃあ暇だし・・・昼寝でもするか・・・")
speak("・・・1時間後・・・")
speak("あれ?卵がない!")
speak("おかあさ~ん!タマゴはどこにやったの?")
speak("お母さん「卵焼きにして食べちゃった!ごめんね~^^」")
goBadEnding()
when 2
speak("・・・やっぱりやめよう・・・")
speak("卵は卵焼きにして食べるのが1番だな")
goBadEnding()
end
when 1
speak("よし!プレゼントを開けよう!")
speak("?何か音がしたぞ?")
speak("ああ!プレゼントの中の卵が割れていた!")
goBadEnding()
end
とりあえず整理してみましたが
endが足りなすぎです・・・
speak("あれ?なにかメモが挟まっている・・・")
case speakWithSelect(2,"読む","読まない",
"メモを読みますか?")
when 0
speak("どれどれ、プレゼントは慎重に開けてね?じゃあ慎重に開けよう")
showCenterImage(38917)
speak("あ!タマゴだ!")
case speakWithSelect(3,"捨てる","卵焼きにする","育ててみる",
"このタマゴをどうしますか?")
when 0
speak("捨てるか・・・もったいないけど・・・")
goBadEnding()
when 1
speak("でかーい!タマゴ焼にして食っちゃおう!")
speak("ムシャムシャ!")
speak("う・・・お腹が・・・")
speak("パタリ・・・")
goBadEnding()
when 2
speak("よし・・・育てるか・・・")
case speakWithSelect(3,"タマゴを隠す","昼寝をする","卵を割る",
"なにをしますか?")
when 0
speak("お母さんに見つかったら大変だ!タマゴを隠しておこう!")
speak("・・・数日後・・・")
speak("あれ?卵にひびが入っているぞ?")
speak("おお!動いてる!")
speak("われた!")
hideCenterImage()
showImage(38922)
speak("ドラゴンが生まれたぞ!")
case speakWithSelect(3,"散歩に出かける","家で鍛える","ペットショップに売る",
"これからどうしよう・・・\n\nこれからどうしますか?")
when 0
speak("よし!散歩に出かけよう!")
speak("ガチャ")
speak("バサバサ!")
speak("待て!ドラゴン!")
case speakWithSelect(2,"ひとまず冷静に","警察に報告",
"このままだとドラゴンは逃げられてしまいます!どうしますか?")
when 0
speak("ここは冷静になろう・・・あ!戻ってきた!")
speak("ドラゴンは戻ってきた!")
speak("ドラゴンの飛ぶ力が3上がった!")
case speakWithSelect(2,"パソコンをやる","森で狩り",
"どうしますか?")
when 0
speak("ん?")
speak("ドラゴンの大会?")
playSound(16423)
speak("わお!俺の町でドラゴンの大会があったなんて!")
speak("今度行ってみよう!")
speak("ドラゴンの最大体力値が2上がった!")
changeScene(11566)
when 1
speak("森で狩りをした!")
speak("体力が5減った!")
speak("体力最大値が2上がった!力が3上がった!狩りの能力が4上がった!経験値を5手に入れた!技術が3上がった!飛ぶ力が4上がった!")
changeScene(11566)
end
when 1
speak("警察に行くぞ!")
speak("あの~ドラゴンに逃げられてしまいました!")
speak("警察「ドラゴンなんているわけないでしょ^^」")
goBadEnding()
end
when 1
speak("家で練習した!")
speak("ドラゴンの力が5上がった!")
playSound(25541)
speak("技、ひのこを覚えた!")
case speakWithSelect(2,"パソコンをやる","森で狩り",
"どうしますか?")
when 0
speak("ん?")
speak("ドラゴンの大会?")
playSound(16423)
speak("わお!俺の町でドラゴンの大会があったなんて!")
speak("今度行ってみよう!")
speak("ドラゴンの最大体力値が2上がった!")
changeScene(11566)
when 1
speak("森で狩りをした!")
speak("体力が5減った!")
speak("体力最大値が2上がった!力が3上がった!狩りの能力が4上がった!経験値を5手に入れた!技術が3上がった!飛ぶ力が4上がった!")
changeScene(11566)
case speakWithSelect(2,"パソコンをやる","家で訓練",
"何をしますか?")
when 0
speak("お!ドラゴンの大会なんてあるんだ~")
speak("参加してみるか")
changeScene(11566)
when 1
speak("訓練終了!何も起こらなかった・・・")
changeScene(11566)
end
case speakWithSelect(2,"パソコンをやる","家で訓練",
"何をしますか?")
when 0
speak("お!ドラゴンの大会なんてあるんだ~")
speak("参加してみるか")
changeScene(11566)
when 1
speak("訓練終了!何も起こらなかった・・・")
changeScene(11566)
end
when 2
speak("これ、いくらで売れますか?")
speak("ドラゴンは高値で売れた!")
goBadEnding()
end
when 1
speak("じゃあ暇だし・・・昼寝でもするか・・・")
speak("・・・1時間後・・・")
speak("あれ?卵がない!")
speak("おかあさ~ん!タマゴはどこにやったの?")
speak("お母さん「卵焼きにして食べちゃった!ごめんね~^^」")
goBadEnding()
when 2
speak("・・・やっぱりやめよう・・・")
speak("卵は卵焼きにして食べるのが1番だな")
goBadEnding()
end
when 1
speak("よし!プレゼントを開けよう!")
speak("?何か音がしたぞ?")
speak("ああ!プレゼントの中の卵が割れていた!")
goBadEnding()
end
とりあえず整理してみましたが
endが足りなすぎです・・・
1つのシーンの最後のところが文法的エラーって行っているんですがどういうことかわかりません・・・なんで文法的エラーなのか教えて下さい!
speak("・・・確か今日はクリスマス・・・あ~!プレゼントだー!")
speak("あれ?なにかメモが挟まっている・・・")
case speakWithSelect(2,"読む","読まない",
"メモを読みますか?")
when 0
speak("どれどれ、プレゼントは慎重に開けてね?じゃあ慎重に開けよう")
showCenterImage(38917)
speak("あ!タマゴだ!")
case speakWithSelect(3,"捨てる","卵焼きにする","育ててみる",
"このタマゴをどうしますか?")
when 0
speak("捨てるか・・・もったいないけど・・・")
goBadEnding()
when 1
speak("でかーい!タマゴ焼にして食っちゃおう!")
speak("ムシャムシャ!")
speak("う・・・お腹が・・・")
speak("パタリ・・・")
goBadEnding()
when 2
speak("よし・・・育てるか・・・")
case speakWithSelect(3,"タマゴを隠す","昼寝をする","卵を割る",
"なにをしますか?")
when 0
speak("お母さんに見つかったら大変だ!タマゴを隠しておこう!")
speak("・・・数日後・・・")
speak("あれ?卵にひびが入っているぞ?")
speak("おお!動いてる!")
speak("われた!")
hideCenterImage()
showImage(38922)
speak("ドラゴンが生まれたぞ!")
case speakWithSelect(3,"散歩に出かける","家で鍛える","ペットショップに売る",
"これからどうしよう・・・\n\nこれからどうしますか?")
when 0
speak("よし!散歩に出かけよう!")
speak("ガチャ")
speak("バサバサ!")
speak("待て!ドラゴン!")
case speakWithSelect(2,"ひとまず冷静に","警察に報告",
"このままだとドラゴンは逃げられてしまいます!どうしますか?")
when 0
speak("ここは冷静になろう・・・あ!戻ってきた!")
speak("ドラゴンは戻ってきた!")
speak("ドラゴンの飛ぶ力が3上がった!")
case speakWithSelect(2,"パソコンをやる","森で狩り",
"どうしますか?")
when 0
speak("ん?")
speak("ドラゴンの大会?")
playSound(16423)
speak("わお!俺の町でドラゴンの大会があったなんて!")
speak("今度行ってみよう!")
speak("ドラゴンの最大体力値が2上がった!")
changeScene(11566)
when 1
speak("森で狩りをした!")
speak("体力が5減った!")
speak("体力最大値が2上がった!力が3上がった!狩りの能力が4上がった!経験値を5手に入れた!技術が3上がった!飛ぶ力が4上がった!")
changeScene(11566)
end
when 1
speak("警察に行くぞ!")
speak("あの~ドラゴンに逃げられてしまいました!")
speak("警察「ドラゴンなんているわけないでしょ^^」")
goBadEnding()
end
when 1
speak("家で練習した!")
speak("ドラゴンの力が5上がった!")
playSound(25541)
speak("技、ひのこを覚えた!")
case speakWithSelect(2,"パソコンをやる","森で狩り",
"どうしますか?")
when 0
speak("ん?")
speak("ドラゴンの大会?")
playSound(16423)
speak("わお!俺の町でドラゴンの大会があったなんて!")
speak("今度行ってみよう!")
speak("ドラゴンの最大体力値が2上がった!")
changeScene(11566)
when 1
speak("森で狩りをした!")
speak("体力が5減った!")
speak("体力最大値が2上がった!力が3上がった!狩りの能力が4上がった!経験値を5手に入れた!技術が3上がった!飛ぶ力が4上がった!")
changeScene(11566)
case speakWithSelect(2,"パソコンをやる","家で訓練",
"何をしますか?")
when 0
speak("お!ドラゴンの大会なんてあるんだ~")
speak("参加してみるか")
changeScene(11566)
when 1
speak("訓練終了!何も起こらなかった・・・")
changeScene(11566)
end
case speakWithSelect(2,"パソコンをやる","家で訓練",
"何をしますか?")
when 0
speak("お!ドラゴンの大会なんてあるんだ~")
speak("参加してみるか")
changeScene(11566)
when 1
speak("訓練終了!何も起こらなかった・・・")
changeScene(11566)
end
when 2
speak("これ、いくらで売れますか?")
speak("ドラゴンは高値で売れた!")
goBadEnding()
end
when 1
speak("じゃあ暇だし・・・昼寝でもするか・・・")
speak("・・・1時間後・・・")
speak("あれ?卵がない!")
speak("おかあさ~ん!タマゴはどこにやったの?")
speak("お母さん「卵焼きにして食べちゃった!ごめんね~^^」")
goBadEnding()
when 2
speak("・・・やっぱりやめよう・・・")
speak("卵は卵焼きにして食べるのが1番だな")
goBadEnding()
end
when 1
speak("よし!プレゼントを開けよう!")
speak("?何か音がしたぞ?")
speak("ああ!プレゼントの中の卵が割れていた!")
goBadEnding()
end
speak("・・・確か今日はクリスマス・・・あ~!プレゼントだー!")
speak("あれ?なにかメモが挟まっている・・・")
case speakWithSelect(2,"読む","読まない",
"メモを読みますか?")
when 0
speak("どれどれ、プレゼントは慎重に開けてね?じゃあ慎重に開けよう")
showCenterImage(38917)
speak("あ!タマゴだ!")
case speakWithSelect(3,"捨てる","卵焼きにする","育ててみる",
"このタマゴをどうしますか?")
when 0
speak("捨てるか・・・もったいないけど・・・")
goBadEnding()
when 1
speak("でかーい!タマゴ焼にして食っちゃおう!")
speak("ムシャムシャ!")
speak("う・・・お腹が・・・")
speak("パタリ・・・")
goBadEnding()
when 2
speak("よし・・・育てるか・・・")
case speakWithSelect(3,"タマゴを隠す","昼寝をする","卵を割る",
"なにをしますか?")
when 0
speak("お母さんに見つかったら大変だ!タマゴを隠しておこう!")
speak("・・・数日後・・・")
speak("あれ?卵にひびが入っているぞ?")
speak("おお!動いてる!")
speak("われた!")
hideCenterImage()
showImage(38922)
speak("ドラゴンが生まれたぞ!")
case speakWithSelect(3,"散歩に出かける","家で鍛える","ペットショップに売る",
"これからどうしよう・・・\n\nこれからどうしますか?")
when 0
speak("よし!散歩に出かけよう!")
speak("ガチャ")
speak("バサバサ!")
speak("待て!ドラゴン!")
case speakWithSelect(2,"ひとまず冷静に","警察に報告",
"このままだとドラゴンは逃げられてしまいます!どうしますか?")
when 0
speak("ここは冷静になろう・・・あ!戻ってきた!")
speak("ドラゴンは戻ってきた!")
speak("ドラゴンの飛ぶ力が3上がった!")
case speakWithSelect(2,"パソコンをやる","森で狩り",
"どうしますか?")
when 0
speak("ん?")
speak("ドラゴンの大会?")
playSound(16423)
speak("わお!俺の町でドラゴンの大会があったなんて!")
speak("今度行ってみよう!")
speak("ドラゴンの最大体力値が2上がった!")
changeScene(11566)
when 1
speak("森で狩りをした!")
speak("体力が5減った!")
speak("体力最大値が2上がった!力が3上がった!狩りの能力が4上がった!経験値を5手に入れた!技術が3上がった!飛ぶ力が4上がった!")
changeScene(11566)
end
when 1
speak("警察に行くぞ!")
speak("あの~ドラゴンに逃げられてしまいました!")
speak("警察「ドラゴンなんているわけないでしょ^^」")
goBadEnding()
end
when 1
speak("家で練習した!")
speak("ドラゴンの力が5上がった!")
playSound(25541)
speak("技、ひのこを覚えた!")
case speakWithSelect(2,"パソコンをやる","森で狩り",
"どうしますか?")
when 0
speak("ん?")
speak("ドラゴンの大会?")
playSound(16423)
speak("わお!俺の町でドラゴンの大会があったなんて!")
speak("今度行ってみよう!")
speak("ドラゴンの最大体力値が2上がった!")
changeScene(11566)
when 1
speak("森で狩りをした!")
speak("体力が5減った!")
speak("体力最大値が2上がった!力が3上がった!狩りの能力が4上がった!経験値を5手に入れた!技術が3上がった!飛ぶ力が4上がった!")
changeScene(11566)
case speakWithSelect(2,"パソコンをやる","家で訓練",
"何をしますか?")
when 0
speak("お!ドラゴンの大会なんてあるんだ~")
speak("参加してみるか")
changeScene(11566)
when 1
speak("訓練終了!何も起こらなかった・・・")
changeScene(11566)
end
case speakWithSelect(2,"パソコンをやる","家で訓練",
"何をしますか?")
when 0
speak("お!ドラゴンの大会なんてあるんだ~")
speak("参加してみるか")
changeScene(11566)
when 1
speak("訓練終了!何も起こらなかった・・・")
changeScene(11566)
end
when 2
speak("これ、いくらで売れますか?")
speak("ドラゴンは高値で売れた!")
goBadEnding()
end
when 1
speak("じゃあ暇だし・・・昼寝でもするか・・・")
speak("・・・1時間後・・・")
speak("あれ?卵がない!")
speak("おかあさ~ん!タマゴはどこにやったの?")
speak("お母さん「卵焼きにして食べちゃった!ごめんね~^^」")
goBadEnding()
when 2
speak("・・・やっぱりやめよう・・・")
speak("卵は卵焼きにして食べるのが1番だな")
goBadEnding()
end
when 1
speak("よし!プレゼントを開けよう!")
speak("?何か音がしたぞ?")
speak("ああ!プレゼントの中の卵が割れていた!")
goBadEnding()
end
退会したユーザー(投稿日:2010/10/02 14:04,
履歴)
↓間違えたw完成だったw
退会したユーザー(投稿日:2010/10/02 14:01,
履歴)
おかげで成功に一歩近づけました!
退会したユーザー(投稿日:2010/10/02 14:01,
履歴)
私もどこで間違っているか整形すると簡単にみつかりました!