第29章.「背景とキャラクターの表示」


 背景とキャラクターの表示方法ですが、キャラクターの表示については第21章で行っているので、忘れている人はそちらを復習してください!

 第28章で学んだ背景に、キャラクターを追加表示するだけですので、あまり新しい知識はありません。

 ただ、今回はキャラクターのサイズを背景に合わせているので、第21章のプログラムをそのまま使うことはできません。



 プログラムが一画面に入りきらないので、二枚の画像になっていますが、重複している行に注意して入力してください!

 また、DATAが全て見えていませんが、第28章の最後のプログラムと同じですので、それを保存してあればコピーして入力できます。

 入力したプログラムを実行すると、このように表示されます!

 上下左右の方向ボタンで自由に歩くことができます♪



 ただし、まだ当たり判定を付けていないので、山の上も歩けてしまいます…。

 これを防ぐには、山に当たり判定を付ける必要があります!

 3号の時は BGGET という命令がありましたが、4 にはありません。

 その代わりに、CHKCHR という命令があります!

 それを使って、当たり判定を付けることになります。

 キャラクターが上下左右に動くので、当たり判定も上下左右の移動時に行うことにします。

 なので、画像のように四ヵ所それぞれに当たり判定を付けます。

 今回の判定はキャラクターが移動できない場所を作るためなので、その位置よりも手前でキャラクターが止まる必要があります!

 そこで、座標のチェック時に数値を工夫して、キャラクターの位置を調節します。



 当たり判定を付ける以外は変わらないので、直前のプログラムを一部だけ変更して追加すれば作業終了です。

 当たり判定を付けたプログラムを実行すると、このように表示され、山の手前でキャラクターが止まるようになります。

 キャラクターが通れない場所を作りたい場合は、このプログラムのように入力すれば良いのです。



 それでは、別の背景素材に変えてみましょう!

 ここで注意が必要なのですが、当たり判定の数値も合わせて変更しないと、当たり判定が無効になってしまいます!

 DATAの数値をこの画像と同じように変更してください!

 前回の背景と同じ並びなので、置換を使えば簡単に入力できますよ♪

 ちなみに、置換で数値を変えると、当たり判定の数値も一緒に変えられます。



 素材の数値を変えたプログラムを実行すると、このように表示されます!

 ちゃんと壁にぶつかる前でキャラクターが止まるのを確認してくださいね。

 次に、宝箱階段などを表示できるようにしましょう!

 それらがどの位置にあるのか?この画像で確認できます。



 背景素材の文字コードは、スマイルツールで調べることもできます!

 ただ、携帯モードで見た場合、各素材が小さ過ぎてよく見えないでしょう。

 なので、スマイルツールで調べるよりは、お絵描きツールで調べるほうが良い気がします。

 宝箱や階段などは識別しやすいので、スマイルツールでも調べやすいとは思います。

 宝箱(閉)1728 なのが上部を見れば分かります。



 X軸+(64*Y軸)=文字コード番号です!

 X軸Y軸ともに 0 から始まりますので、素材画像の一番左上にある素材(透明)が 0,0 となります。

 スマイルツールで計算した番号が正しいかを確認することもできます。

 では、計算式で求めた文字コード番号を利用して、背景を変えてみましょう!

 このプログラムから背景を二つのレイヤーで表現するように変えるので、奥のレイヤーから順に表示します。

 17行目鍵のフラグを初期状態にしておきます。(※今回は扉を開く鍵をまだ入手できません!)

 扉のレイヤーが 2 なので、当たり判定の数値も 2 になります。(※注意!)



 今回の背景では扉に当たるのは左右からだけですが、別の背景では上下左右から扉に当たる場合もあるので、当たり判定を上下左右で行うようにしています。

 DATAの数値を間違えないように入力してください!

 プログラムを実行してみて違っていたら、修正してください。



 入力し終わったプログラムを実行すると、このように表示されます!

 もしどこか違っていたら、プログラムを修正してください。

 今回はまだ宝箱を開けられないので、扉を開けることはできません…。

 Xボタンでプログラムを終了してください。

 宝箱を開けて鍵を入手したり、

 鍵で扉を開けたり、

 階段で別のフロアに移動したいと思うでしょう?

 でも、一気にそれらを入力するのは大変なので、今回はここまでの内容にしました。

 …というわけで、次の章にて続きを解説します!(`・ω・´)ゞ

 今回のプログラムを保存しておけば、次回のプログラムの入力がラクになりますよ♪