tris::common_chek(int direction)::final
/*Update by 2022.04.18*/
int common_chek(int direction)
{
int ii,kk;
int[,] tmp = new int[MAPY,MAPX];
for(ii=0; ii <MAPY; ii++)
for(kk=0; kk<MAPX; kk++)
{
tmp[ii,kk]=comm[ii,kk];
}
for(ii=0; ii<ARR; ii++)
for(kk=0; kk<ARR; kk++)
{
if(design[ii,kk]==1)
{
if(ypos+ii>MAPY-1) continue;
if(xpos+kk>MAPX-1) continue;
if(xpos+kk<0) continue;
tmp[ypos+ii,xpos+kk]=0;
}
}
if(direction==D_RIGHT) xpos++;
if(direction==D_LEFT) xpos--;
if(direction==D_DOWN) ypos++;
ff=0;
for(ii=0; ii<ARR; ii++)
for(kk=0; kk<ARR; kk++)
{
if(design[ii,kk]==1)
{
if(ypos+ii>MAPY-1) continue;
if(xpos+kk>MAPX-1) continue;
if(xpos+kk<0) continue;
tmp[ypos+ii,xpos+kk] += 1;
if(tmp[ypos+ii,xpos+kk]>1) ff++;
}
}
if(ff>0)
{
if(direction==D_RIGHT) xpos--;
if(direction==D_LEFT) xpos++;
if(direction==D_DOWN) ypos--;
return(FAIL);
}
else
{
for(ii=0; ii<MAPY; ii++)
for(kk=0; kk<MAPX; kk++)
{
comm[ii,kk]=tmp[ii,kk];
}
}
return(SUCC);
}