📄 movebak.cpp
字号:
#include"basic.h"
//extern myarmy *soldier;
//extern TABLE table[34][34];
POINT Howtogo(POINT nowHL,int dect,POINT objectplace,myarmy *soldier,TABLE table[34][34])
{POINT placetogo=nowHL;
int diret=DecideDect(nowHL,soldier->placetogo);
if(soldier->around==0xff){soldier->bAround=TRUE;//ready to stop;
soldier->around=0;}
soldier->around|=diret;
switch(dect){
case EAST:
case EASTSOUTH:
if(((soldier->placetogo.x-nowHL.x)<=1)
&&((soldier->placetogo.x-nowHL.x)>=-1)
&&((soldier->placetogo.y-nowHL.y)<=1)
&&((soldier->placetogo.y-nowHL.y)>=-1))
{ if((table[soldier->nowHL.x][soldier->nowHL.y+1].whatin>=HILL)
&&(table[soldier->nowHL.x+1][soldier->nowHL.y].whatin>=HILL)
&&(table[soldier->nowHL.x+2][soldier->nowHL.y+1].whatin>=HILL)
&&(table[soldier->nowHL.x+1][soldier->nowHL.y+2].whatin>=HILL))
{placetogo.y=-99;
return(placetogo);
}
else if(table[soldier->placetogo.x+1][soldier->placetogo.y+1].whatin<HILL)
{
if((diret==EASTSOUTH)
&&(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)
&&(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL))
return(objectplace);
else if((diret==WESTSOUTH)
&&(table[nowHL.x-1+1][nowHL.y+1+1].whatin<HILL)
&&(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL))
return(objectplace);
else if((diret==WESTNORTH)
&&(table[nowHL.x-1+1][nowHL.y+1].whatin<HILL)
&&(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL))
return(objectplace);
else if((diret==EASTNORTH)
&&(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)
&&(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL))
return(objectplace);
else if((diret==EAST)||(diret==SOUTH)
||(diret==WEST)||(diret==NORTH))
return(objectplace);
}
else
{placetogo.x=-1;
return(placetogo);
}
}
else if((soldier->maxl.x==0)&&(soldier->maxl.y==0))
soldier->nowdir=RIGHT;
if(soldier->nowdir==RIGHT||soldier->nowdir==NULL)
{//if(IsMovingCar(2,1)==TRUE){placetogo.y=-99;return(placetogo);} //for waiting
if(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)
{
if((table[nowHL.x+1+1][nowHL.y+1+1].whatin<HILL)
&&(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL))
{ if (((soldier->placetogo.x-nowHL.x)>=1)
&&((soldier->placetogo.y-nowHL.y)>1))
{}// return(objectplace);
else if((table[nowHL.x+1+1][nowHL.y-1+1].whatin<HILL)
&&(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL))
{if(((soldier->placetogo.y-nowHL.y)<-1)
&&(table[nowHL.x+1-1][nowHL.y-1+1].whatin>=HILL))
{
placetogo.y-=1;
soldier->nowdir=UP;}
// return(placetogo);}
else if((soldier->placetogo.y-nowHL.y)>1)
{
placetogo.y+=1;
soldier->nowdir=DOWN;}
//return(placetogo);}
else{}// return(objectplace);
}
else {
placetogo.x+=1;
soldier->nowdir=RIGHT;}
//return(placetogo);}
}
else {
placetogo.x+=1;
soldier->nowdir=RIGHT;}
// return(placetogo);}
}
//if(IsMovingCar(1,2)==TRUE){placetogo.y=-99;return(placetogo);} //for waiting
else if(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL)
{
placetogo.y+=1;
soldier->nowdir=DOWN;}
//return(placetogo);}
//if(IsMovingCar(0,1)==TRUE){placetogo.y=-99;return(placetogo);} //for waiting
else if(table[nowHL.x-1+1][nowHL.y+1].whatin<HILL)
{
placetogo.x-=1;
soldier->nowdir=LEFT;}
//return(placetogo);}
//if(IsMovingCar(1,0)==TRUE){placetogo.y=-99;return(placetogo);} //for waiting
else if(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)
{
placetogo.y-=1;
soldier->nowdir=UP;}
//return(placetogo);}
else if((table[soldier->nowHL.x][soldier->nowHL.y+1].whatin>=CAR)
||(table[soldier->nowHL.x+1][soldier->nowHL.y].whatin>=CAR)
||(table[soldier->nowHL.x+2][soldier->nowHL.y+1].whatin>=CAR)
||(table[soldier->nowHL.x+1][soldier->nowHL.y+2].whatin>=CAR))
{placetogo.y=-99;
return(placetogo);
}
else
{placetogo.x=-1;
return(placetogo);}
} //for stop
else if(soldier->nowdir==DOWN)
{//if(IsMovingCar(1,2)==TRUE){placetogo.y=-99;return(placetogo);} //for waiting
/* if(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL)
{
if((nowHL.y>=soldier->maxl.y)
&&(table[nowHL.x+1+1][nowHL.y+1+1].whatin<HILL)
&&(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL))
{ if(((soldier->placetogo.x-nowHL.x)>1)
||
((table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)
&&(table[nowHL.x+1+1][nowHL.y-1+1].whatin<HILL)))
{}// return(objectplace);
else
{
placetogo.x+=1;
soldier->nowdir=RIGHT;
// return(placetogo);
}
}
else {
placetogo.y+=1;
soldier->nowdir=UP|DOWN;
//return(placetogo);
}
} */
if(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL)
{
if((nowHL.y>=soldier->maxl.y)
&&(table[nowHL.x+1+1][nowHL.y+1+1].whatin<HILL)
&&(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL))
{
if(((soldier->placetogo.y-nowHL.y)>1)
&&((soldier->placetogo.x-nowHL.x)>1) )
{}//return(objectplace);
else if((table[nowHL.x+1+1][nowHL.y-1+1].whatin<HILL)
&&(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL))
{if(((soldier->placetogo.y-nowHL.y)<-1)
&&((soldier->placetogo.x-nowHL.x)>1) )
{}//return(objectplace);
else if((soldier->placetogo.x-nowHL.x)<-1)
{ if(table[nowHL.x-1+1][nowHL.y+1].whatin>=HILL)
{
placetogo.y+=1;
soldier->nowdir=DOWN;
//return(placetogo);
}
else {
placetogo.x+=1;
soldier->nowdir=RIGHT;
//return(placetogo);
}
}
else {}
//return(objectplace);
}
else
{
placetogo.x+=1;
soldier->nowdir=RIGHT;
//return(placetogo);
}
}
else {
placetogo.y+=1;
soldier->nowdir=(DOWN|UP);
//return(placetogo);
}
}
//if(IsMovingCar(2,1)==TRUE){placetogo.y=-99;return(placetogo);} //for waiting
else if(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)
{
placetogo.x+=1;
soldier->nowdir=RIGHT;
//return(placetogo);
}
//if(IsMovingCar(0,1)==TRUE){placetogo.y=-99;return(placetogo);} //for waiting
else if(table[nowHL.x-1+1][nowHL.y+1].whatin<HILL)
{
placetogo.x-=1;
soldier->nowdir=LEFT;
//return(placetogo);
}
//if(IsMovingCar(1,0)==TRUE){placetogo.y=-99;return(placetogo);} //for waiting
else if(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)
{
placetogo.y-=1;
soldier->nowdir=UP;
// return(placetogo);
}
else if((table[soldier->nowHL.x][soldier->nowHL.y+1].whatin>=CAR)
||(table[soldier->nowHL.x+1][soldier->nowHL.y].whatin>=CAR)
||(table[soldier->nowHL.x+2][soldier->nowHL.y+1].whatin>=CAR)
||(table[soldier->nowHL.x+1][soldier->nowHL.y+2].whatin>=CAR))
{placetogo.y=-99;
return(placetogo);
}
else
{placetogo.x=-1;
return(placetogo);
}
} //for stop
else if(soldier->nowdir==LEFT)
{
if(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL)
{
placetogo.y+=1;
soldier->nowdir=DOWN;
// return(placetogo);
}
else if(table[nowHL.x-1+1][nowHL.y+1].whatin<HILL)
{
placetogo.x-=1;
soldier->nowdir=LEFT;
//return(placetogo);
}
else if(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)
{
placetogo.y-=1;
soldier->nowdir=UP;
//return(placetogo);
}
else if(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)
{
placetogo.x+=1;
soldier->nowdir=UP|RIGHT;
//return(placetogo);
}
else if((table[soldier->nowHL.x][soldier->nowHL.y+1].whatin>=CAR)
||(table[soldier->nowHL.x+1][soldier->nowHL.y].whatin>=CAR)
||(table[soldier->nowHL.x+2][soldier->nowHL.y+1].whatin>=CAR)
||(table[soldier->nowHL.x+1][soldier->nowHL.y+2].whatin>=CAR))
{placetogo.y=-99;
return(placetogo);
}
else
{placetogo.x=-1;
return(placetogo);
}
} //for stop
else if(soldier->nowdir==UP)
{
if(table[nowHL.x-1+1][nowHL.y+1].whatin<HILL)
{
placetogo.x-=1;
soldier->nowdir=LEFT;
//return(placetogo);
}
else if(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)
{
placetogo.y-=1;
soldier->nowdir=UP;
//return(placetogo);
}
else if(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)
{
placetogo.x+=1;
soldier->nowdir=UP|RIGHT;
//return(placetogo);
}
else
if(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL)
{
placetogo.y+=1;
soldier->nowdir=UP|DOWN;
//return(placetogo);
}
else if((table[soldier->nowHL.x][soldier->nowHL.y+1].whatin>=CAR)
||(table[soldier->nowHL.x+1][soldier->nowHL.y].whatin>=CAR)
||(table[soldier->nowHL.x+2][soldier->nowHL.y+1].whatin>=CAR)
||(table[soldier->nowHL.x+1][soldier->nowHL.y+2].whatin>=CAR))
{placetogo.y=-99;
return(placetogo);
}
else
{placetogo.x=-1;
return(placetogo);
}
} //for stop
else if(soldier->nowdir==(UP|DOWN))
{
if(table[nowHL.x+1+1][nowHL.y+1].whatin<HILL)
{if((nowHL.y>=soldier->maxl.y)
&&(table[nowHL.x+1+1][nowHL.y+1+1].whatin<HILL)
&&(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL))
{if(((soldier->placetogo.y-nowHL.y)>1)
||
((table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)
&&(table[nowHL.x+1+1][nowHL.y-1+1].whatin<HILL)))
{}//return(objectplace);
else
{
placetogo.x+=1;
soldier->nowdir=RIGHT;
//return(placetogo);
}
}
else{
placetogo.x+=1;
soldier->nowdir=UP|RIGHT;
//return(placetogo);
}
}
else if(table[nowHL.x+1][nowHL.y+1+1].whatin<HILL)
{
placetogo.y+=1;
soldier->nowdir=UP|DOWN;
// return(placetogo);
}
else if(table[nowHL.x-1+1][nowHL.y+1].whatin<HILL)
{
placetogo.x-=1;
soldier->nowdir=UP|LEFT;
//return(placetogo);
}
else if(table[nowHL.x+1][nowHL.y-1+1].whatin<HILL)
{
placetogo.y-=1;
soldier->nowdir=UP;
//return(placetogo);
}
else if((table[soldier->nowHL.x][soldier->nowHL.y+1].whatin>=CAR)
||(table[soldier->nowHL.x+1][soldier->nowHL.y].whatin>=CAR)
||(table[soldier->nowHL.x+2][soldier->nowHL.y+1].whatin>=CAR)
||(table[soldier->nowHL.x+1][soldier->nowHL.y+2].whatin>=CAR))
{placetogo.y=-99;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -