📄 maze.h
字号:
{ max=markall[x][y+1] ;}
num=0;
if(max==markall[x-1][y]) num+=1;
if(max==markall[x][y+1]) num+=8;
tag++;
HumanSubAllocate(num,_stackarray,n,position,markall,mark,pos,tag);
}
}
}
else
{
dir=3;
if(tag==4)
{
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
tag=0;
return ;
}
turn=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=2;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=1;
max=markall[x-1][y];
if(max<markall[x][y+1])
{ max=markall[x][y+1] ;}
num=0;
if(max==markall[x-1][y]) num+=1;
if(max==markall[x][y+1]) num+=8;
tag++;
HumanSubAllocate(num,_stackarray,n,position,markall,mark,pos,tag);
}
}
}
}
}
break;
case 7:
// all go to (x-1,y) and (x+1,y) and (x,y-1)
turn=0;
for(i=0;i<n;i++)
{
if(EqualElement(_stackarray[i].GetCurrentPosition(),position))
{
if(tag==4)
{
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
tag=0;
return ;
}
switch(turn)
{
case 0:
dir=0;
turn=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=2;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=3;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=0;
dir=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
}
}
}
}
break;
case 1:
dir=2;
turn=2;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=3;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=1;
dir=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
}
}
}
}
break;
case 2:
dir=3;
turn=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=2;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=2;
dir=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
}
}
}
}
break;
}
}
}
break;
case 8:
// all go to (x,y+1)
for(i=0;i<n;i++)
{
if(EqualElement(_stackarray[i].GetCurrentPosition(),position))
{
dir=1;
if(tag==4)
{
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
tag=0;
return ;
}
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
max=markall[x-1][y];
if(max<markall[x+1][y])
{ max=markall[x+1][y];}
if(max<markall[x][y-1])
{ max=markall[x][y-1];}
num=0;
if(max==markall[x-1][y]) num+=1;
if(max==markall[x+1][y]) num+=2;
if(max==markall[x][y-1]) num+=4;
tag++;
HumanSubAllocate(num,_stackarray,n,position,markall,mark,pos,tag);
}
}
}
break;
case 9:
// all go to (x-1,y) and (x,y+1)
turn=0;
for(i=0;i<n;i++)
{
if(EqualElement(_stackarray[i].GetCurrentPosition(),position))
{
dir=0;
if(tag==4)
{
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
tag=0;
return ;
}
if(turn==0)
{
turn=1;
dir=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=0;
max=markall[x+1][y];
if(max<markall[x][y-1])
{ max=markall[x][y-1] ;}
num=0;
if(max==markall[x+1][y]) num+=2;
if(max==markall[x][y-1]) num+=4;
tag++;
HumanSubAllocate(num,_stackarray,n,position,markall,mark,pos,tag);
}
}
}
else
{
dir=1;
turn=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=1;
max=markall[x+1][y];
if(max<markall[x][y-1])
{ max=markall[x][y-1];}
num=0;
if(max==markall[x+1][y]) num+=2;
if(max==markall[x][y-1]) num+=4;
tag++;
HumanSubAllocate(num,_stackarray,n,position,markall,mark,pos,tag);
}
}
}
}
}
break;
case 10:
// all go to (x+1,y) and (x,y+1)
turn=0;
for(i=0;i<n;i++)
{
if(EqualElement(_stackarray[i].GetCurrentPosition(),position))
{
dir=0;
if(tag==4)
{
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
tag=0;
return ;
}
if(turn==0)
{
turn=1;
dir=2;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=0;
max=markall[x-1][y];
if(max<markall[x][y-1])
{ max=markall[x][y-1] ;}
num=0;
if(max==markall[x-1][y]) num+=1;
if(max==markall[x][y-1]) num+=4;
tag++;
HumanSubAllocate(num,_stackarray,n,position,markall,mark,pos,tag);
}
}
}
else
{
dir=1;
turn=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=1;
max=markall[x+1][y];
if(max<markall[x][y-1])
{ max=markall[x][y-1] ;}
num=0;
if(max==markall[x+1][y]) num+=2;
if(max==markall[x][y-1]) num+=4;
tag++;
HumanSubAllocate(num,_stackarray,n,position,markall,mark,pos,tag);
}
}
}
}
}
break;
case 11:
// all go to (x-1,y) and (x+1,y) and (x,y+1)
turn=0;
for(i=0;i<n;i++)
{
if(EqualElement(_stackarray[i].GetCurrentPosition(),position))
{
dir=0;
if(tag==4)
{
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
tag=0;
return ;
}
switch(turn)
{
case 0:
dir=0;
turn=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=2;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=0;
dir=3;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
}
}
}
}
break;
case 1:
dir=2;
turn=2;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=1;
dir=3;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
}
}
}
}
break;
case 2:
dir=1;
turn=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=2;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=2;
dir=3;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
}
}
}
}
break;
}
}
}
break;
case 12:
// all go to (x,y-1) and (x,y+1)
turn=0;
for(i=0;i<n;i++)
{
if(EqualElement(_stackarray[i].GetCurrentPosition(),position))
{
dir=0;
if(tag==4)
{
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
tag=0;
return ;
}
if(turn==0)
{
turn=1;
dir=3;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=0;
max=markall[x-1][y];
if(max<markall[x+1][y])
{ max=markall[x+1][y] ;}
num=0;
if(max==markall[x-1][y]) num+=1;
if(max==markall[x+1][y]) num+=2;
tag++;
HumanSubAllocate(num,_stackarray,n,position,markall,mark,pos,tag);
}
}
}
else
{
dir=1;
turn=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=3;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=1;
max=markall[x-1][y];
if(max<markall[x+1][y])
{ max=markall[x+1][y] ;}
num=0;
if(max==markall[x-1][y]) num+=1;
if(max==markall[x+1][y]) num+=2;
tag++;
HumanSubAllocate(num,_stackarray,n,position,markall,mark,pos,tag);
}
}
}
}
}
break;
case 13:
// all go to (x-1,y) and (x,y-1) and (x,y+1)
turn=0;
for(i=0;i<n;i++)
{
if(EqualElement(_stackarray[i].GetCurrentPosition(),position))
{
dir=0;
if(tag==4)
{
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
tag=0;
return ;
}
switch(turn)
{
case 0:
dir=0;
turn=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=3;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=0;
dir=2;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
}
}
}
}
break;
case 1:
dir=3;
turn=2;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=1;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=1;
dir=2;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
}
}
}
}
break;
case 2:
dir=1;
turn=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=3;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
turn=2;
dir=2;
if(_stackarray[i].TestDir(dir,markall,mark,pos)==false)
{
dir=0;
_stackarray[i].HumanTestDirection(dir,markall,mark,pos);
}
}
}
}
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -