ひろじいべーしっくch 第23回の動画の解説・補足。(0-023)
ここでは、サンプルプログラム「裏ワザ暗号」の説明のほか、「公文出版チャレンジ!プチコン4SmileBASIC Nintendo Switchで学ぶ! プログラミングワーク」でも登場されたSPSETのスプライト番号で「自動でふられる」場合についての解説を紹介しています。
プログラム
今回のプログラムはこちら。(公開キー443E4X1、LOAD“N23_URAAN”)
一定時間、「左」「上」「下」「右」「A」「B」のいずれかの文字または文字列が現れます。その後文字が消されるので、その文字を左から入力してください。「左」は「←ボタン」、「上」は「↑ボタン」、「下」は「↓ボタン」、「右」は「→ボタン」、「A」「B」はそれぞれ「Aボタン」、「Bボタン」です。
「とうろく中」と表示されている時間帯はボタンの入力が停止されていますが、そのすぐ上の行に表示されている文字は、登録が完了した文字です。正解すると前問から一文字ずつ左側に増えていきます。11文字を正解するとオールクリアでハッピーエンドです。

このブログにおいてはなるべく専門用語を使用せずに非常に短く簡潔に説明しています。
一部の内容を省略している箇所があります。
詳細を知りたい方は公式リファレンス等も参照してください。
[]については省略可能ですが、一部の命令(例えばDIM命令等)については最低一つの[]は必要です。
既に解説したところですが、10行目、T?については→第9回
動作の説明

おおまかな動作の説明です。概略図は以下の通りです。

実行画面(問題文の表示)

実行画面(記憶できているか、ボタンに従って入力。11文字までがんばれるかな?)

訂正
訂正前(2023年1月6日のバージョン)

訂正後(2024年5月31日のバージョン)

訂正箇所は7行目のA[S]=RND(5)をA[S]=RND(6)に変更して下さい。
A[S]=RND(5)のままですと、問題文に「右」が出題されなくなります。
以下は訂正についての解説を行っている場面です。
動画の9分16秒あたり。

訂正はこの一箇所なので、訂正後は更新を行う必要がありませんが、更新方法についてもご覧ください。動画の10分30秒あたり。

補足(動画内での袋とじコーナー)
今回は、SPSETでスプライト番号が自動でふる場合の仕様について「公文出版チャレンジ!プチコン4SmileBASIC Nintendo Switchで学ぶ! プログラミングワーク」の53頁の内容も踏まえて動画内で紹介されています。
SPSET
SPSET スプライト番号,定義番号[,表示フラグ]
スプライトを作成する(定義テンプレートを利用)
引数
スプライト番号
作成するスプライトの番号:0~4095
定義番号
SPDEFで定義したテンプレートの定義番号:0~8191
表示フラグ
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
SPSET(定義番号[,表示フラグ])
空いている番号を探してスプライトを作成し、番号を返す
・スプライト全体から空きを探す。
引数
定義番号
SPDEFで定義したテンプレートの定義番号: 0~8191
表示フラグ
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
返値
スプライト番号
生成されたスプライトの番号: 0~4095
・空きがなく生成できなかった時は-1が返る。
例
IX=SPSET(500)
動画の11分59秒あたり。(?SPSET(200)という同じ命令を実行している。実行するごとに返値である生成されたスプライト番号が0から順に1、2、3・・・と整数で1ずつ増えています。空き番号な無ければ次に飛びます。4095まで。)

動画の12分50秒あたり。

まとめ
1. 連続入力の防止については、実は今回は押しっぱなしにするとまた入力できてしまいます。”とうろく中”の表示の後、少しの間、入力処理をしていないだけで、“とうろく中”はプレイヤーに連続入力への注意と、ボタンを離す時間を確保しただけです。なお、この様にすることで(ボタンを離す場合の判定処理を省いて)プログラムをシンプルな処理にすることができます。
2. RND命令のカッコのなかの数字は種類の数で、スタートは0からの整数のため、最終値は種類の数から1引いた数となります。プログラミングにむしろ慣れた時に種類の数を1引いてしまう錯覚が生じてしやすいので注意して下さい。更新方法も動画内の解説を参考にしてください。
3.スプライト番号を自動で決める場合には、背景や主要でないスプライトに使われることが多いので、そのあたりに注目して、大事なキャラクターは自分で決めて、そうでないモノは自動ということを頭にいれておくことは、よいことだと思います。
コメント