昔の記憶が蘇る

金塊の場所がブロックで、ブロックの所が金塊になっている PICO-8
金塊の場所がブロックで、ブロックの所が金塊になっている

ICE-MAN for PICO-8で、キャラクターの移動を実装中。

移動しようとする方向のキャラクターを調べて、ブロックやアイスブロックなら進めない様にコードを書かなくてはならず、if文を何回も並べて書かなくてはならず、躊躇していた所、昔の記憶がよみがえりました。

ステージ上には、主人公バッキーの他にブロック、ハシゴ、金塊、アイスブロックが存在します。

それをブログラム上では、各キャラクターを数値化して管理しています。

主人公バッキーの移動で、移動方向にブロックやアイスブロックがあれば、行くことが出来ないルールを記述します。

これを一方向に対して、キャラクタ毎にチェックをしないといけないので、大量のif文を記述しなければなりません。

仕方なく、取り掛かろうとした時に、ふと昔の記憶が蘇ったのです。

オリジナルのMSX版のICE-MANは、BASICで記述されていて、ソースコードを読んで解析していました。

そして、移動のルールを記述しある所で、「特定の数値より少なければ、進むことが出来る」という様な事が書かれていました。

ここで、空間は0、金塊は1、ハシゴは2、ブロックは3、アイスブロックを4と数値化することで、「進行方向のキャラクタが、2(ハシゴ)以下なら、行くことが出来る」とコードを書くことが出来ます。

空間はもちろん、金塊は重なることで取得できますので進めますし、ハシゴも進めます。

という事で、このキャラクタを数値化する記述方法で、変更しました。

今では、0が空間、1がブロック、2がハシゴ、3が金塊で、4がアイスブロックになっていましたので、1のブロックと3の金塊を入れ替えました。

金塊とブロックの番号を入れ替えた

金塊とブロックの番号を入れ替えた

手の画像とメッセージを表示

コチラが正しい表示

金塊の場所がブロックで、ブロックの所が金塊になっている

金塊の場所がブロックで、ブロックの所が金塊になっている

これで、処理しやすいように数値化したので、移動処理に取り掛かります。

 

コメント

タイトルとURLをコピーしました