数字ルーレット

BASIC入門編

ひろじいべーしっく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 エラー一覧と解決法

エラー一覧と解決法 - プチコン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 ENDIFIFに対応するENDIFがありません指示された行のIFに対応するENDIFをそのIFで場合分けしたい範囲の末尾に記述してください。
FOR without NEXTFORに対応するNEXTがありません指示された行のFORに対応するNEXTをそのFORループの末尾に記述してください。
WHILE without WENDWHILEに対応するWENDがありません指示された行のWHILEに対応するWENDをそのWHILEループの末尾に記述してください。
UNTIL without REPEATUNTILに対応するREPEATがありません指示された行のUNTILに対応するREPEATをそのUNTILループの先頭に記述してください。
LOOP without ENDLOOPLOOPに対応するENDLOOPがありません指示された行のLOOPに対応するENDLOOPをLOOPループの末尾に記述してください。
CASE without ENDCASECASEに対応するENDCASEがありません指示された行のCASEに対応するENDCASEを最後のWHENの処理範囲の後もしくはOTHERWISEの処理範囲の後に記述してください。
DEF without ENDDEFに対応するENDがありません指示された行のDEFに対応するENDを命令(関数)を定義しようとしている範囲の末尾に記述してください。
Use multiples of 44で割り切れる数を指定してください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主の制作手順については骨格の様なイメージのプログラムを作ってからそれに肉付けとして細部に修正をくわえてきます。その時にトライ&エラーが行われることで完成に近づけていきます。

コメント

タイトルとURLをコピーしました