烏賊先生のプログラミング道場

プチコン3号


参考資料

§ 基本マップ(仮想スクリーン) §

平面(バードビュー)マップ移動

仮想スクリーンの利用

ロールプレイングゲームやアクションゲーム等に於いて、キャラクタ(スプライト)の進める処、進めない処を判別するのに、仮想スクリーンを用いるのが一般的で有る。

下記のプログラムでは、進める処と進めない処を判別するのに、直接キャラクタの進行方向の配列MAP1とMAP2(孰れのマップを対象とするかは変数CMに依り判別)の値を調べて居ます。詳細に付いては、平面マップ2側面マップ2を参照して下さい。

下記のプログラムでは、進める処と進めない処を判別する為の関数CHKMOVEをコード末で定義して居る。猶、進めない処を格納する配列NA1とNA2には、夫々現在1個(海を表す12と壁を表す0)しか設定されて居ないが、将来の拡張の為に、配列と仕て居る。

即ち、関数CHKMOVEでは、キャラクタの進行方向の配列MAP1とMAP2の値を調べ、配列NAに含まれる値なら、進めない事を意味するフラグFALSEを返し、含まれない値なら、進める事を意味するフラグTRUEを返します。

猶、DEFステートメントで定義する関数の引数は、参照渡しではなく、値渡しと成るので、関数本体の中で、其の値を変更しても、呼出元に影響を与える事は有りません。

マップ内のワープは、特定の位置にキャラクタが来た時に、其の座標を変更して、別の場所に表示する事で実現出来ます。亦、マップ間の移動は、同じく、特定の位置にキャラクタが来た時に、其の座標を変更すると共に、別のマップを描画する事で実現出来ます。プチコン3号では、一画面位のマップの描画は、一瞬に仕て行われるので、特に問題は有りません。但し、巨大なマップと成ると、別レーヤーに予め描画して置き、表示の切り替えで画面転換を行う方が良い場合も有り得ます。

※ マップを表示する迄のコードは、マップエディタ(公開キー:D23P4PD)で生成されます。

プログラムの説明

下記のプログラムでは、スプライトが、 ボタンで上下左右にアニメーションしながら動き、↑と↓の位置で互いにワープし、階段の位置でマップ移動します。海や壁の部分には進めません。



BGGET関数の利用

プチコン3号(Smile BASIC)では、BGGET関数に依り、BGキャラの情報を取得出来るので、仮想スクリーンを用いなくても、BG画面の情報で、マップ情報を知る事が出来る。

即ち、BGGET関数で取得したBG画面のBGキャラ情報が、配列NAに含まれない時は、進める処と判別すれば良い。猶、BGGET関数の第4引数は、座標系フラグで、0の時(又は省略時)はキャラクタ(グリッド)単位で、1の時はドット(ピクセル)単位と成ります。




ゲームプログラミング道場 ニンテンドー3DS Smile BASIC  Visual Basic,Visual C#

Copyright © King of Squid, All rights reserved.