スクリプト/コツ/文法エラーを出しにくいスクリプトの書き方
      最終投稿者:
 akasata
      更新:2011/06/07 00:41:36
    
    
 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,] が閉じてなくて怪しいけど
  
      ↓あ、endを書き忘れましたがそれではないです。
    
  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
      ↓間違えたw完成だったw
    
  
      おかげで成功に一歩近づけました!
    
  
      私もどこで間違っているか整形すると簡単にみつかりました!