キャラ同士(自機and敵)の描画順(ソート順)をどうやって組み込んだら良いのかわからず
ココに質問をしにきました
(過去のソースは検索で見つけたのですが、古いverのソースで、理解できませんでした)
よろしくお願いいたします
(以下のソースは、基本部分だけを抜粋したものです)
screen 0,480,320 //ウィンドウID 0を初期化 dim EX,TEKIKAZU //敵の座標 dim EY,TEKIKAZU dim ELIVE,TEKIKAZU //敵の生存フラグ //----------------------------------------------------- //■初期設定 *START gmode 2 //画面コピーモード 透明色付きコピー gosub *SETMAP //map初期設定 //----------------------------------------------------- //■メインループ *DRAWLOOP1 redraw 0 //仮想画面を書き換えるだけ gosub *MOVEME //自機の移動 gosub *DRAWMAP //画面表示 redraw 1 //実際の画面にも反映 await 16 goto *DRAWLOOP1 //----------------------------------------------------- //■マップ表示 *DRAWMAP color 128,128,128 :boxf 0,0,479,479 //480*480灰色box表示 //敵の表示 repeat TEKIKAZU if ELIVE(cnt)=1{ //敵の生存flag判定 //敵01の影描画 pos EX(cnt),EY(cnt) color 0,0,0 circle EX(cnt),EY(cnt),EX(cnt)+32,EY(cnt)+16 //敵01の描画 pos EX(cnt),EY(cnt)-64 color 255,0,0 boxf EX(cnt),EY(cnt)-64,EX(cnt)+32,EY(cnt)-10 } //敵の当たり判定描画 color 255,255,255 line EX(cnt),EY(cnt),EX(cnt)+32,EY(cnt) line EX(cnt),EY(cnt)+16,EX(cnt)+32,EY(cnt)+16 line EX(cnt),EY(cnt),EX(cnt),EY(cnt)+16 line EX(cnt)+32,EY(cnt),EX(cnt)+32,EY(cnt)+16 loop //自機の影描画 pos MX,MY color 0,0,0 :circle MX,MY,MX+32,MY+16 //自機の描画 pos MX,MY-64 color 255,255,255 :boxf MX,MY-64,MX+32,MY-10 //自機の当たり判定描画 color 255,255,255 line MX,MY,MX+32,MY :line MX,MY+16,MX+32,MY+16 line MX,MY,MX,MY+16 :line MX+32,MY,MX+32,MY+16 //debug color 0,0,0 :font "MS ゴシック",12,1 pos 32,0 :mes "MX=" + MX :pos 96,0 :mes "MY=" + MY return //----------------------------------------------------- //■自機の移動(dot化) *MOVEME MDX=0 :MDY=0 //自機の移動量の初期化 stick KY,15,0 //キー入力情報取得 if KY=1 :MDX=-4 :HOUKOU=4 //カーソルキー左(←) if KY=4 :MDX=4 :HOUKOU=6 //カーソルキー右(→) if KY=2 :MDY=-4 //カーソルキー上(↑) if KY=8 :MDY=4 //カーソルキー下(↓) MX=MX+MDX :MY=MY+MDY //自機の移動先の座標 //MAP端の処理 if MX<0 :MX=0 :if MX>448 :MX=448 if MY<64 :MY=64 :if MY>304 :MY=304 return //===========================================================// //■マップ初期化 *SETMAP dim MAP,16,11 MAP(0,0) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 MAP(0,1) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 MAP(0,2) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 MAP(0,3) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 MAP(0,4) =0,0,0,0,4,0,0,0,0,0,0,0,0,0,0 MAP(0,5) =0,0,0,0,0,0,4,0,0,0,0,0,0,0,0 MAP(0,6) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 MAP(0,7) =0,0,0,0,0,0,0,4,0,0,0,0,0,0,0 MAP(0,8) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 MAP(0,9) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 repeat 11 //縦幅 RCNT=cnt repeat 15 //横幅 if MAP(cnt,RCNT)=4 { //敵を配置 EX(TEKIKAZU)=cnt*32 //敵の座標 EY(TEKIKAZU)=RCNT*32 ELIVE(TEKIKAZU)=1 //敵の生存フラグ TEKIKAZU=TEKIKAZU+1 //敵の数を設定していく } loop loop return