
※途中で戻りたい場合は、ブラウザの「戻る」機能を使ってください。
プログラムリストの解析についてプレイしてみて内容をできるだけ把握したら、本命のプログラムリストを解析してみたいと思います。とりあえず一行一行ベタで直訳していきます(プログラム中の命令をとりあえず理解する)。 その後に、前後関係をみながらプログラムリストを理解したいと思います。 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.