やばいです!また間が空いてしまいました!
今回は簡単に前回の説明をしておきたいと思います(詳しいのは改めて)。
前回のプログラムはこんなのでした。
ACLS SP=SPSET(496) LOOP STICK 0 OUT VX,VY X=X+VX Y=Y+VY SPOFS SP,X,Y VSYNC ENDLOOP
順番に説明していきますね。
まず最初の
ACLS
ですが、これは「画面を消す」という命令です。
プチコンでは画面を意図的にクリアしない限り、前の画面が残ったままになります。
コンピューターの特徴を表す言い回しとして、「命令しないと何もしない」とよく言われますが、プログラミングの基本的な考え方としても「言われるまで余計なことはしない」みたいなのがあり、この画面を消す処理もそのあたりが表れていそうです(消せと言われるまでは消さない)。
ちなみにこれとは別にCLSという命令もあるのですが、こちらはテキスト(文字)のみを消す命令で、ACLSはスプライトやグラフィック、画面モードも全てリセットされるところが違います(スプライトやグラフィック、画面モードについては後日解説予定)。
作った人じゃないので正確なところは分かりませんが、恐らくCLSは「Clear Screen」の略、ACLSは「All Clear Screen」の略だと思われます。
さて、次の
SP=SPSET(496)
ですが、これはスプライトを用意する命令です。プチコンのスプライトについてはScratchのスプライトと同じようなものと考えてもらっていいと思います。
Scratchではスプライトを一覧から選択したり、自分で描いたり、アップロードしたりすることによってスプライトを用意しますが、プチコンでは予め用意されたスプライトの番号を指定することによりスプライトを選びます。オリジナルの画像を作って使うこともできます。
カッコの中の496というのが戦士風のスプライトの番号ということになります。
続いての
LOOP : ENDLOOP
ですが、これはScracthで言う「ずっと」ですね。テキストプログラミングではScratchなどのブロックプログラミングのように「中にいれる」というのを表しにくいため、このように「ここから〜ここまで」というように囲むことが多いです。
次の
STICK 0 OUT VX,VY
ですが、名前の通り、スティック入力を調べる命令です。スティックの横および縦方向の傾きが-1〜1の間の小数でVX、VYそれぞれに入ります。Switchのスティック入力が気軽に使えるのもプチコンのいいところです。
続いての
X=X+VX Y=Y+VY
ですが、プログラミングをかじったことのある方ならお分かりの通り、XにX+VXを代入しています。「XとX+VXは等しい」ではないので注意。Scratchだと「XをX+VXにする」ということになります。Yも同様です。
なお、Scratchでは「XをVXずつ変える」という書き方もできますが、プチコンでもINC X, VXのように書くこともできます。
さらに次の
SPOFS SP,X,Y
は、どうにも読みにくい命令ですが、「エスピーオーエフエス」と読んじゃっていいと思います。頭に「SP」とつくのは(さっきのSPSETも含めて)スプライトに関する命令で、SPOFSはスプライトの位置を設定(変更)する命令です。「Sprite Offset」の略だと思います。
LOOP〜ENDLOOPの繰り返しの中の最後、
VSYNC
ですが、これはそういう専門用語があるのですが「Virtical Synchronize」の略で、ちょっと難しいですが「垂直同期」を待つ命令です。Switchに入っているCPUはパソコン並みに高速なので、画面の書き換えなどのタイミングでタイミングを取らないと一瞬で処理してしまいます。
特に指定しない限り1フレーム(1画面)分を書き換えるタイミングで同期します。Switchは60FPS(フレーム/秒)なので1フレームは60分の1秒ということになります。
以上、ここまで駆け足で説明しましたがいかがでしたでしょうか?
次回はもう少し丁寧に一からプログラムを作っていきたいと思います!