ひろじいべーしっくch 第19回の動画の解説・補足。(0-019)
プログラム
今回のプログラムはこちら。(公開キー443E4X1、LOAD“N19_SPACESHIP”)
本プログラム、「宇宙船の着陸」は、左ジョイスティックで宇宙船を左右に移動、Aボタンで上昇、Aボタンを押さないと下降、指定された位置に着地することを目的とするゲームです。

このブログにおいてはなるべく専門用語を使用せずに非常に短く簡潔に説明しています。
RESTORE命令など、一部の内容を省略している箇所があります。
詳細を知りたい方は公式リファレンス等も参照してください。
[]については省略可能ですが、一部の命令(例えばDIM命令等)については最低一つの[]は必要です。
動作の説明
おおまかな動作の説明です。
ラベルMAINより上は画面の初期設定です。
ラベルMAINの中についての概略図は以下の通りです。

実行画面

補足
文字の位置とグラフィックの位置を合わせると便利です。
初期設定時の文字の座標とグラフィックの座標の比率は1:8です。
補足1.現在の設定を調べる。
現在の設定について調べるにはOUT命令付きのTSCREEN命令とXSCREEN命令で調べられます。
TSCREEN OUT
TSCREEN [スクリーンID] OUT フォント種類,文字サイズ,幅,高さ
テキストスクリーンの広さと表示に使用するフォントを取得する
引数
(1)スクリーンID
消去するテキストスクリーンのID:0~4
・省略時は4。
返値
(2)フォント種類
表示に用いるフォントの種類:8~64
フォント8の例

フォント16の例

(3)文字サイズ
文字の表示サイズ:8~64
(4)幅, 高さ
テキストスクリーンの幅と高さ
ダイレクトモードでのTSCREEN(OUT)の実行例

XSCREEN OUT
XSCREEN OUT 幅,高さ[,サンプル倍率[,合成モード[,アスペクト比]]]
画面解像度を取得する
返値
幅, 高さ
画面の幅と高さ(ピクセル数単位)
(サンプル倍率,合成モード,アスペクト比については公式リファレンスのXSCREEN OUTをご覧ください。)
ダイレクトモードでのXSCREEN(OUT)の実行例

補足2.宇宙船の衝突判定について
初期設定時の文字の画面上の範囲は50列、30行です。グラフィックはその8倍のヨコ400、タテ240です。
従って、初期設定時の文字の座標とグラフィックの座標の比率は1:8であると言えます。
そこで宇宙船の衝突判定を扱っている31から32行の判定部分(IFとTHENの間の部分)は

上段:31行目、宇宙船の着陸が成功した場合の判定
下段:32行目、宇宙船の着陸が成功した場合の判定
変数Rは着地地点の文字の場合の座標です。
変数Xは宇宙船のグラフィックのヨコの座標です。
従って、文字とグラフィックの比率から、まず「R*8」とRを8倍しています。

動画の6分16秒あたり。原点の確認

動画の6分25秒あたり。原点は両端から24離れていることを解説しています。

動画の6分33秒あたり。31行目の判定を解説しています。原点がどの位置にある場合が有効となるのかを整理すると理解できるでしょう。動画では黄色い丸が左右に移動している範囲です。
補足3.訂正
2024年2月10日以前の「宇宙船の着陸」のプログラム(LOAD“N19_SPACESHIP”)」は以下の通りでした。

訂正箇所は31行目と32行目です。
上記で文字とグラフィックの座標の比が1:8であることを説明したにもかかわらず、更新前は9倍となっていました。また原点とスプライトの両端の距離の24の加減を判定に加えていませんでしたので、ここで訂正します。
31行目
(誤)IF R*9<X AND R*9+80 >X・・・・・
(正)IF R*8+24<X AND R*8+80-24>X・・・・・
32行目
(誤)IF (R*9>=X OR R*9+80 <=X・・・・・
(正)IF (R*8+24>=X OR R*8+80-24<=X・・・・・

動画の9分9秒あたり。アップデートとして、再びダウンロードして頂くことをお勧めします。ご手数かけて申し訳ありません。
補足4.星の背景、雪の風景
本プログラムの13行目から14行目を要約すると以下の様になります。

これはFORからNEXTまで50回繰り返しており、さらに単純化すると以下のプロセスを繰り返しています。
1.ヨコを乱数で決める
2.タテを乱数で決める
3.1.と2.で決めた座標で(色も含めて)描く
4. 1.に戻って繰り返す・・・
GFILLやRGBの扱いについては動画内の10分35秒あたりから説明しています。
動画内で扱った雪の例1

7行目で前回解説したSCROLLを使用して、雪が降っている様に画面が下がっていきます。

実行例。動画の11分27秒あたり。
動画内で扱った雪の例2(上記の例より数を少なく、文字を大きくしている)


実行例。動画の12分2秒あたり。
補足5.改造例
左上にタイマーに見立てた黄色い星が減っていき、黄色い星が無くなったタイミングで指定の着陸位置が左か中央か右に変更するので、そこを踏まえて着陸することを目的とします。

実行例


まとめ
1.文字とグラフィックの位置の比は初期値で1:8です。
2.OUTを加えた命令で現在の設定を確認できます。
3.星の背景を描くプロセスは、プログラミングにおいてよく利用されるのでおさえておきましょう。
コメント