ひろじいべーしっくch(旧:ひろじいチャンネル) 第六回の動画の解説・補足。(0-006)
結論
GCLS、FOR~NEXT、SPシリーズ(SPSHOW、SPHIDE)の命令などを紹介するよ。
GCLS グラフィック画面のみクリアスクリーンするよ。
FOR~NEXT 一定数回、FORとNEXTの間を繰り返すよ。
SPSHOW スプライトを表示するよ。
SPHIDE スプライトを非表示にするよ。
プログラム
今回のプログラムはこちら。(公開キー44425K433、LOAD“N06_RUNNING”)
このブログにおいてはなるべく専門用語を使用せずに非常に短く簡潔に説明しています。
詳細を知りたい方は公式リファレンス等も参照してください。
GCLS
GCLS [色コード]
読み方は「ジークリアスクリーン」。英語graphic clear screenの省略。
グラフィックページ(下記の「動作の説明」参照)を色コード(#Cで始まる色のコード又はRGB命令)で塗りつぶします。色コードを省略すると透明色で塗りつぶします。
バックカラーページ(下記の「動作の説明」参照)が最も奥です。BACKCOLORという命令で背景色を設定できます。例えばBACKCOLOR#C_REDを実行した後に透明色であるGCLSを実行した場合、画面は赤いままになります。
FOR~NEXT
FOR 引数=初期値 TO 終了値[STEP 増分]NEXT
読み方は「フォア~ネクスト」、「フォア~トゥ~ステップ~ネクスト」です。NEXT命令までの処理を指定回数繰り返します。
FOR引数=初期値
引数とは、ループのたびに自動更新される変数(ループ変数)のことで、1ループごとに増分が加算されます。
初期値とはループ開始時のループ変数の値です。
TO 終了値
終了値とは、ループを終了させるループ変数の値です。ループ変数の値がこの値を超えるとループを終了させます。
STEP 増分
増分とは、ループ終わりにループ変数に加算する値のことをいいます。
STEPは省略できます。省略時には1が増分値として使用されます。
負の数を指定すると値が減る方向にループさせる事ができます。
増分が小数の場合は、演算に誤差が生じることがあり、意図した回数にならない可能性があります。
NEXT
FORループの終わりを示す命令です。
対応するFOR変数を更新し、TOの値を超えていなければFOR直後の命令にジャンプし、超えていればNEXT直後の命令にジャンプします。
(ここで、再び説明しますが)FOR変数にはSTEPがあればSTEPの値を加算し、STEPがなければ1を加算します。
SPSHOW
SPSHOW スプライト番号
読み方は「エスピーショー」。SPSETの前に使うとエラー。スプライト番号のSPを表示させます。
SPHIDE
SPHIDE スプライト番号
読み方は「エスピーハイド」。SPSETの前に使うとエラー。スプライト番号のSPを表示を隠します。表示を隠すだけで、スプライトを削除するわけではないです。
動作の説明
ここでスプライトや文字、背景の表示においてどういう重なり方になるか、それらの表示の基本、レイヤー構造について解説します。
FADERが最も手前で、BACKCOLORが最も奥です。
文字については、特に指定が無い限りTEXT4として前から2層目となります。ヨコ50タテ30が基本設定で、TSCREENで設定を変更できます。同様にTSCREENでTEXT0からTEXT3まで設定を変更できます。
グラフィックについては、奥から2層目、最大ヨコ1280タテ720です。XSCREENで設定を変更できます。
スプライトについては、前から3層目となります。
さて、今回のプログラムはこちらであり、
簡易的に略したフローチャートは以下の様になります。
5行目から8行目で0号(ここでの「号」というのは便宜上、スプライト番号のことです。)は6409の絵、1号は6410の絵、2号は6417の絵、3号は6418の絵、4号は6421の絵、5号は6422の絵、6号は6413の絵、7号は6414の絵をSPSETで設定しています。
動画内の3分9秒あたりから説明している図は以下の通りです。
10行目はFOR~NEXT文により、SPSCALEで0号から7号まで全部タテヨコ3倍することを繰り返しています。
12行目で「ボタンのサブルーチン」に移っています。(@BOTAN)
20行目から23行目でボタンによって0号から7号のどれかを変数C(スプライト番号のC号)を設定しています。
例えば20行目の後半において、
0号は右向きのパターン、1号は右向きで0号と反対の足が前にあるパターンです。
要するに0号と1号を交互に出すことで歩いている(走っている)様に見える仕様です。
IF C==0 THEN C=1 ELSE C=0
ここで何を設定しているのかというと、0号であったのに再度右ボタンである場合は1号にする、そうでないならば0号にする、ということで交互に設定しているのです。
加速のステップにあたる変数Sは、プログラム開始時においては4行目でS=1としています。
24行目でAボタンを押したらその時間を示す変数Tを60に設定し直しています。25行目でTを減らしてTが1未満になったら加速(変数S)を初期値1に戻すことにより、時間経過によって加速を初期値に戻しています。
14行目で変化前のスプライト(人物キャラ)を(0号から7号まで)全てSPHIDEで消して、
15行目のSPSHOWでC号を表示、SPOFSでヨコXタテYの位置にC号を移動させています。
16行目で繰り返しています。
終了は26行目でXボタンを押した時です。
さて、参考までにSPHIDEやSPSHOWの役目として解説します。例えば14行「FOR I=0 TO 7:SPHIDE I:NEXT」を削除した場合には、次の様に0号から7号がSPOFSよって移動しつつもボタンによって設定が変更される変数Cが変わる度に、それまで該当していた絵が残像の様に残ることになります。
そこでこの様な状態を防止するために、一旦SPHIDEで全て消して、必要なものだけSPSHOWで出現させています。なお、この方法は一例にすぎませんので、このような現象を踏まえてそれぞれ工夫して下さい。
まとめ
GCLS グラフィック画面のみクリアスクリーンにします。色コードでその色に塗りつぶします。
FOR~NEXT 一定数回、FORとNEXTの間を繰り返します。
SPSHOW スプライトを表示します。
SPHIDE スプライトを非表示にします。
コメント