[ ICE-MAN(アイスマン) その6 ]

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



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行は解説を見ると、
  • 金塊の色切り替え
  • ギブアップ判定→入力がESCキーならタイトルへ飛ぶ
  • リトライ判定→入力がリターンならそのステージのはじめから
  • 金塊を取ったかの判定処理
となっています。


リストを見てみます。




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.