
※途中で戻りたい場合は、ブラウザの「戻る」機能を使ってください。
100行目100行は解説を見ると、
まずはリストを表示してみます。 ![]() まず、変数SにSTICK関数で、キーボード(STICK(0))とポート1のジョイスティック(STICK(1))の方向を代入しています。 方向(キー)が押されていない状態は0なので、この2つの関数を足す事で、どちらかの押されている方向を取得する事が出来ます。 ここで、「スティック入力受付」の処理を行っています。 次はIF文です。 「変数Xが0より大きく」かつ「ジョイスティックボタンが押されたか、”Z”キーが押された」ならば、変数Vに変数Xの値から1を引いた数値を代入し、160行のサブルーチンへ飛ぶ事になります。 ここで、「アイスマンの左側に氷を置くかの判定処理」を行っています。 110行目110行は解説を見ると、
リストを見てみます。 ![]() まずIF文で110行で読み込んだ方向入力の結果である変数Sが3か7なら、180行のサブルーチンへ飛び、変数Sが1なら170行のサブルーチンへ飛び、変数Sが5なら190行のサブルーチンへ飛びます。 3は右で7は左なので、180行のサブルーチンは、左右の横移動の処理だとわかります。 1は上なので、170行は上移動の処理だとわかります。 5は下で、190行は下移動のしょりです。 120行目120行は解説を見ると、
リストを見てみます。 ![]() VPOKE 8196,176で「アドレス8196番地へ176+F*16を書き込む」処理です。 ちなみに8196は16進数だと2004hで、ここは「カラーテーブル」のアドレスです。 ICE-MAN(アイスマン) その2で紹介しましたが、8文字ごとに1バイトのカラーが指定されており、この場合は33キャラクタ目から8キャラクタ文の色を176にする事になります。 その33キャラクタ目から8キャラクタは何処か確認してみましょう。 ![]() わかるでしょうか? ちょうど、金塊(ゴールドフィガー)のキャラクタの箇所になります。 そこに176を指定するのですが、176は16進数でB0hです。 この場合、”B”はキャラクタの色、”0”は背景ですから、キャラクタは「明るい黄色」で背景は「周辺色と同色」なので黒となります。 またこの176にF*16を足しています。 このF*16はどういうことか調べてみると、変数Fは90行で0と−1に切り替えています。 ですから変数Fが0だと176+F*16で176。 変数Fが−1だと176−16で160となり、16進数だとA0hとなります。 この場合、”A”はキャラクタの色、”0”は背景ですから、キャラクタは「暗い黄色」で背景は「周辺色と同色」なので黒となります。 ここで金塊のキャラクターカラーを「暗い黄色」と「明るい黄色」に切り替える事で、「金塊の色切り替え」を行っているのがわかります。 次にIF文で I$=CHR$(27)の判定を行っています。 90行の I$=INKEY$でキー入力の結果を読み込んでいますので、その結果がCHR$(27)(エスケープキー)かどうかを調べている事になります。 エスケープキーが押されていれば、50行(ゲーム初期化処理→タイトル表示・・・)へ飛びます。 ここで「ギブアップ判定→入力がESCキーならタイトルへ飛ぶ」を行っているのがわかります。 ELSE IFが続いてあり、「エスケープキーが押されていなければ」この処理が実行されます。 I$=CHR$(13)とありCHR$(13)はリターンキーです。 ですから、リターンキーが押されていれば、70行(ステージ初期化処理)へ飛びます。 そうでなければ、続くELSE文が実行されます。 M=VPEEK(6209+Y*32+X)は変数Mに6209+Y*32+Xのアドレスの内容を代入します。 6209+Y*32+Xのアドレスの意味ですが、6209は主人公が動けるスペース(外枠の中)の一番左のキャラクタのアドレスです。 そこにキャラクタ座標Yに32を掛けてキャラクタ座標Xを足す事で、バッキー(アイスマン)のいるキャラクタ座標アドレスになります。 次にそのアドレスの内容(変数M)が35より大きいか小さいと90行へ飛び、そうでなければ(変数Mが35ならば)、その座標にスプライト(アイスマン)を描き、音を鳴らし、その(金塊があった場所)を空間にして、金塊の総数から1を引いてます。 |
Copyright(C) 2006. ピコピコテクノロジー All Right Reserved.