以前よりお世話になっておりますiceです。
今DXライブラリで、RPG(2次元ドットタイプ)を制作しているのですが
PCとNPCが重なるときに
NPCより上に居るときはPCが隠れる
NPCより下に居るときはPCが見える
というふうにしたいのですが、どうすればいいでしょうか。
以下はPCの移動、NPCの描画で使用してるソースです。
void playercontrol1()
{
DrawGraph( (int)pl[1].x , (int)pl[1].y , pl[1].img , TRUE ) ;//キャラの描画
dash=1;
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_C )
{
dash=2;
}
if(pl[1].kou==0)
if(pl[1].kou>=0)
{
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_UP && GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_LEFT )
pl[1].kou=8;
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_UP && GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_RIGHT )
pl[1].kou=2;
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_DOWN && GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_LEFT )
pl[1].kou=6;
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_DOWN && GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_RIGHT )
pl[1].kou=4;
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_UP && ( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_RIGHT ) == 0 && ( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_LEFT ) == 0 )
pl[1].kou=1;
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_DOWN && ( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_RIGHT ) == 0 && ( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_LEFT ) == 0 )
pl[1].kou=5;
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_LEFT && ( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_UP ) == 0 && ( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_DOWN ) == 0 )
pl[1].kou=7;
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_RIGHT && ( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_UP ) == 0 && ( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_DOWN ) == 0 )
pl[1].kou=3;
if(( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_UP ) == 0 &&( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_RIGHT ) == 0
&&( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_DOWN ) == 0 &&( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) & PAD_INPUT_LEFT ) == 0 )
pl[1].kou=0;
}
}
void npc()
{
DrawGraph( (int)en[1].x , (int)en[1].y , en[1].img , TRUE ) ;//NPCの描画
if( pl[1].kou==1 )
en[1].y+=2.5*dash;
if( pl[1].kou==2 )
en[1].y+=2.5*dash,en[1].x-=2.5*dash;
if( pl[1].kou==3 )
en[1].x-=2.5*dash;
if( pl[1].kou==4 )
en[1].y-=2.5*dash,en[1].x-=2.5*dash;
if( pl[1].kou==5 )
en[1].y-=2.5*dash;
if( pl[1].kou==6 )
en[1].y-=3*dash,en[1].x+=2.5*dash;
if( pl[1].kou==7 )
en[1].x+=2.5*dash;
if( pl[1].kou==8 )
en[1].y+=2.5*dash,en[1].x+=2.5*dash;
}
背景スクロールタイプなのでこのようなソースになってます。簡略化できるところとかあれば加えてご教授お願いします。
またNPCを複数出したい際に同じソースを何度も書かなくて良いようにする方法はありますでしょうか。
以上よろしくお願いします。