ひろじいべーしっくch 第25回の動画の解説・補足。(0-025)
ここでは、サンプルプログラム「数字ルーレット」の説明のほか、うp主のプログラミングの裏話やプチコン4のちょっとエラーメッセージ一覧を紹介します。
プログラム
今回のプログラムはこちら。(公開キー443E4X1、LOAD“N25_SUUJIR”)
このゲームはプラスキーでの実行後、数字3桁のルーレットが回りだし、停止します。3桁とも同じ数字(ゾロ目)であれば終了しますが、そうでなければトライの回数を加算して続行します。
なるべくトライの回数が少ないことを競う運が100%のゲームです。
このブログにおいてはなるべく専門用語を使用せずに非常に短く簡潔に説明しています。
一部の内容を省略している箇所があります。
詳細を知りたい方は公式リファレンス等も参照してください。
動作の説明
※100回以上もも同じ画面がでてくる可能性もあるため、飽きさせない工夫としてのランダムなカウンタ残り演出を行っています。@TABLEの中では3桁のルーレットのうち、それぞれ最大値をリセットされる毎に毎回、48から97までの乱数により設定していて、それがどのケタが最後まで回り続けるかわからない様な演出になっています。どのケタが最後まで回り続けるか乱数によって設定し、最大値を求めてから繰り返すことで実現させています。
実行画面
実行画面(ゾロ目成立による終了画面)
補足
今回は、うp主のプログラミングの裏話やプチコン4のちょっとエラーメッセージ一覧を紹介します。
袋とじ1(うp主のプログラミングの裏話)
プログラミングの制作手順に特別な決まりはありません。うp主の制作手順についてはフローチャートの様な設計図の様なものを描いて最初から入力していく方法ではなく、骨格の様なイメージのプログラムを作ってからそれに肉付けとして細部に修正をくわえてきます。その時にトライ&エラーが行われることになりますので、次項のエラーメッセージの内容が重要になっていきます。
骨格となる最初の段階では漠然と完成イメージを浮かべたり、軽く下書きのようなものを描いたりしますが、大事なことはプチコン4の能力にあわせるということに変わりはないことから、それにあわせていくための知識を理解しておくことがカギとなります。
動画の13分14秒
袋とじ2(プチコン4のちょっとエラーメッセージ一覧)
エラーメッセージ解説→プチコン4の初心者ガイド→第8話「あやまちは誰にでもある」
プチコン4のちょっとエラーメッセージ一覧(下記の参考に追加記述)
参考→プチコン4まとめwiki エラー一覧と解決法
エラー | エラー日本語 | 意味 | 解決方法 |
Syntax error | 文法まちがい | 文法が違います。 | 指示された行の文法に間違い(演算記号、文字列のダブルクオーテーションの付け忘れなど)が無いか再度確認してください。 |
Type mismatch | 指定できない型の値です | 変数の種類が違います。 | 指示された行の関数で使えない型の変数を使っていますのでそれを修正してください。 |
Out of range | 指定できる範囲外の値です | 指定できる範囲外の値です。 | 指示された命令(関数)内において指定できる範囲外の値を使用しているので引数が範囲外の値にならないように適切な制御を行ってください。 |
Subscript out of range | 配列サイズを超えたアクセスです | 添え字が範囲外です。 | 配列の添え字を指定できる範囲外の値を使用しているので、添え字が範囲外の値にならないように添え字の範囲を広げるか、添え字の範囲内の指定を修正してください。 |
Wrong number of arguments | 引数が足りないか多すぎます。 | 命令の後に入力する引数の扱いが間違っています。 | 引数がある命令のエラーです。引数を読みたくても読めないので追加する修正をおこなう、あるいは余計な引数の指定を行っているのでその部分を削る修正をして下さい。 |
Sprite not set | スプライトが作成(SPSET)されていません | SPSETで作成されていないスプライト番号を使用しています。 | SPSETでスプライト番号と定義番号を対とする設定がされていないので、エラーである行のスプライト番号が単に間違っているか、正しければそのSPSET命令が存在しないので、その実行前までに該当するSPSETを作成してください。 |
IF without ENDIF | IFに対応するENDIFがありません | 指示された行のIFに対応するENDIFをそのIFで場合分けしたい範囲の末尾に記述してください。 | |
FOR without NEXT | FORに対応するNEXTがありません | 指示された行のFORに対応するNEXTをそのFORループの末尾に記述してください。 | |
WHILE without WEND | WHILEに対応するWENDがありません | 指示された行のWHILEに対応するWENDをそのWHILEループの末尾に記述してください。 | |
UNTIL without REPEAT | UNTILに対応するREPEATがありません | 指示された行のUNTILに対応するREPEATをそのUNTILループの先頭に記述してください。 | |
LOOP without ENDLOOP | LOOPに対応するENDLOOPがありません | 指示された行のLOOPに対応するENDLOOPをLOOPループの末尾に記述してください。 | |
CASE without ENDCASE | CASEに対応するENDCASEがありません | 指示された行のCASEに対応するENDCASEを最後のWHENの処理範囲の後もしくはOTHERWISEの処理範囲の後に記述してください。 | |
DEF without END | DEFに対応するENDがありません | 指示された行のDEFに対応するENDを命令(関数)を定義しようとしている範囲の末尾に記述してください。 | |
Use multiples of 4 | 4で割り切れる数を指定してください | XSCREEN命令など一部の命令の引数は4で割り切れる数を指定することになっているので、それに従って修正してください。 | |
Illegal font type | フォント種類は8または16を指定してください | TSCREEN命令の引数であるフォントの種類の指定を8か16にしてください。 | |
Undefined variable | 未定義変数 | 定義していない変数を指示された行で使用しているので別の変数に置き換えるか定義をしてください。 | |
Undefined constant | 未定義定数 | 定義していない定数を指示された行で使用しているので数字に書き換えるか定義をしてください。 | |
Undefined label | 未定義ラベル | プログラム中に記述していないラベルを指示された行で呼び出しているので呼び出そうとしたラベルをプログラム中に記述してください。 | |
Animation type mismatch | アニメ対象の指定が間違っています | SPANIM命令でアニメ対象の指定方法が間違っている場合に出るエラーなので、修正してください。 | |
Animation is too long | アニメーションデータが長すぎます | (ANIMDEF命令など最大32個と説明されている箇所の)アニメーションで指定するデータを32個以内にしてください。 |
動画の24分24秒。プチコン3ではあるものの、参考としたエラー一覧(フォローさんのX)
エラー解説についての参考動画
しひこチャンネル プチコン4エラー探訪 #1~#4
プチコン4エラー探訪 #1 いちばんかんたんなのに・・・
まとめ
1.飽きさせない工夫としてのランダムなカウンタ残り演出
どのケタが最後まで回り続けるか乱数によって設定し、最大値を求めてから繰り返すことで実現させています。
2.骨格のイメージからのねんど細工の様な修正
プログラミングの制作手順に特別な決まりはありません。ご自身の思い通りの方法でもかまいません。参考までに、うp主の制作手順については骨格の様なイメージのプログラムを作ってからそれに肉付けとして細部に修正をくわえてきます。その時にトライ&エラーが行われることで完成に近づけていきます。
コメント