[ AMIDER(アミダー) その3 ]

※途中で戻りたい場合は、ブラウザの「戻る」機能を使ってください。

プログラムリストの解析について

プレイしてみて内容をできるだけ把握したら、本命のプログラムリストを解析してみたいと思います。

とりあえず一行一行ベタで直訳していきます(プログラム中の命令をとりあえず理解する)。

その後に、前後関係をみながらプログラムリストを理解したいと思います。

100行



10行は「'」が付いておりコメント行となっております。

「”AMIDER” by E.I.S」とあり、

プログラムタイトルと、作者の名前(?)が書かれています。

110行



コロンでいくつかの命令を記述しています。

一つ一つ分けてみてみましょう。

COLOR 15,1,1

COLOR命令のパラメーターは、「表示色,背景色,周辺色」となっているので、この場合は「表示色は白、背景色は黒、周辺色は黒」となります。

SCREEN 1,2

SCREEN命令のパラメーターは、「画面モード,スプライトサイズ,・・・」ですから、この場合は「画面モードはスクリーン1、スプライトパターン16*16ドットを標準で指定」となります。

WIDTH 32

WIDTH命令のパラメータは、「1行に表示させる文字数」なので、この場合は「32文字/行」となります。

KEYOFF


KEYOFFでファンクションキーを非表示します。

120行



コロンで区切られて、幾つかの命令が並んでいます。

CLEAR 50

(すべての変数を初期化し)文字領域の大きさを設定するということで、サイズは50となっており、デフォルトでは200に設定されている為、メモリを節約していると言うことでしょうか・・・謎です。

DEFINT A-Z

DEFINTは変数を整数型に宣言します。

この場合はA-Zと記述されており、A〜Zと言う意味ですべての変数ということになります。

何も宣言しないと、変数は単精度として扱われる為、整数型に宣言することによって、計算速度が速くなる=ゲームのスピードが速くなる(処理が早くなる)という効果が得られると言うことです。

I=RND(-TIME)

I=ということでイコールの右辺を見てみると、RND関数があります。

RND関数は乱数を発生させ、括弧の中に-TIMEというTIME関数を使うことで、実行するたびに乱数系列を変えることが出来ます。

AD=&H1800

ADという変数に&Hをつけて16進数で1800を代入しています。

ADという名前の変数と、16進数の数値を代入していることから、アドレスではないでしょうか?

130行



FOR NEXTが二重になっており一行に記述されている為、見やすいように書き出してみます(行番号は省略します)。

FOR I=0 TO 1
 B$=""
 FOR J=0 TO 7
  READ A$
  B$=B$+CHR$(VAL("&H"+A$))
 NEXT
 SPRITE$(I)=B$
NEXT
B$=""


外側と内側にFOR〜NEXT文があり、二重の繰り返し処理を行っています。

B$=""

文字列変数B$に何も無い(クリアにする)状態にするということで、ヌルストリング(文字列終端記号)のみが入ります。

READ A$

これはDATA文と対になっていて、DATA文で定義したデータを順番に読み込み変数A$に代入します。

B$=B$+CHR$(VAL("&H"+A$))

これは、いくつかの式が組み合わさって成り立っています。

大きく見てみると、左辺のB$にB$とCHR$を足したものを代入しています(つまり、CHR$の内容をB$に継ぎ足していく形になります)。

CHR$()

キャラクターダラー関数といい、カッコの中の数式の値をキャラクターコード(文字や記号などを数値で表したもの)に対応した文字を出力するので、CHR$()の結果は1文字となります。

VAL()

バリュー関数といい、文字列を数値化する命令です。

この場合は、VAL("&H"+A$)ということで、READ文でDATA文から得た文字列に&Hを頭に付ける事で、16進数の文字列を実際の数値に置き換えます。

例えば、A$に"FF"が入っていれば、VAL("&H"+A$)の結果は、VAL("&HFF")で255になります。

&Hはダブルクォーテーション("")で囲まれている為に文字列であり、A$は文字列を扱う変数の為、この足し算は文字列の連結を意味しています。

まとめると、

READ文で読み込んだ文字を数値として、その数値をキャラクターコードとして当てはまる文字を継ぎ足していく

ということになります。

SPRITE$(I)=B$

スプライトダラー関数は、スプライトパターンの定義命令です。

パターンの一段目(左上から8ドット分)が、1文字分のデータ(1バイト=8ビット)に対応していますので、カッコの中の数字(ここでは変数 I の値)のスプライト番号へパターン情報である文字列(ここではB$の内容)を代入してパターンを定義しています。

スプライトパターン定義については、少し複雑なので後で改めてまとめてみたいと考えております。

 

Copyright(C) 2006. ピコピコテクノロジー All Right Reserved.