📄 hrd_calculate.cpp
字号:
{
t=*c; t.prior=c->prior;
t.state[i][j]=t.state[i][j-1];
t.state[i+1][j]=t.state[i][j-1];
t.state[i][j-1]=BLANK;
t.state[i+1][j-1]=BLANK;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
}
if(c->state[i][j-1]==CAOCAO)//左侧是曹操
{
if(i<=3)
{
if(c->state[i+1][j-1]==CAOCAO && c->state[i+1][j]==BLANK )
{
t=*c; t.prior=c->prior;
t.state[i][j]=CAOCAO;
t.state[i+1][j]=CAOCAO;
t.state[i][j-2]=BLANK;
t.state[i+1][j-2]=BLANK;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
}
}
////////////////////////////////////////////////////////////////////////////////
// 检查空格右边
if (j<3)
{
if (c->state[i][j+1]==SOLDIER) //右侧是一兵
{
t=*c; t.prior=c->prior;
t.state[i][j+1]=BLANK;
t.state[i][j]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
if (c->state[i][j+1]>=GENERAL1 && c->state[i][j+1]<=GENERAL5)
{
if(j<=1)//右侧是一横将
{
if(c->state[i][j+2]== c->state[i][j+1])
{
t=*c; t.prior=c->prior;
t.state[i][j+2]=BLANK;
t.state[i][j]=t.state[i][j+1];
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
if(i<=3)//右侧是竖将
{
if(c->state[i][j+1]==c->state[i+1][j+1] && c->state[i+1][j]==BLANK)
{
t=*c; t.prior=c->prior;
t.state[i][j]=t.state[i][j+1];
t.state[i+1][j]=t.state[i][j+1];
t.state[i][j+1]=BLANK;
t.state[i+1][j+1]=BLANK;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
}
if(c->state[i][j+1]==CAOCAO)//右侧是曹操
{
if(i<=3)
{
if(c->state[i+1][j+1]==CAOCAO && c->state[i+1][j]==BLANK )
{
t=*c; t.prior=c->prior;
t.state[i][j]=CAOCAO;
t.state[i+1][j]=CAOCAO;
t.state[i][j+2]=BLANK;
t.state[i+1][j+2]=BLANK;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
}
}
///////////////////////////////////////////////////////////////////////////////
// 检查空格上边
if (i>0)
{
if (c->state[i-1][j]==SOLDIER) //上侧是一兵
{
t=*c; t.prior=c->prior;
t.state[i-1][j]=BLANK;
t.state[i][j]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
if (c->state[i-1][j]>=GENERAL1 && c->state[i-1][j]<=GENERAL5)
{
if(i>=2)//上侧是一竖将
{
if(c->state[i-1][j]== c->state[i-2][j])
{
t=*c; t.prior=c->prior;
t.state[i-2][j]=BLANK;
t.state[i][j]=t.state[i-1][j];
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
if(j<=2)//上侧是横将
{
if(c->state[i-1][j]==c->state[i-1][j+1] && c->state[i][j+1]==BLANK)
{
t=*c; t.prior=c->prior;
t.state[i][j]=t.state[i-1][j];
t.state[i][j+1]=t.state[i-1][j];
t.state[i-1][j]=BLANK;
t.state[i-1][j+1]=BLANK;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
}
if(c->state[i-1][j]==CAOCAO)//上侧是曹操
{
if(j<=2)
{
if(c->state[i-1][j+1]==CAOCAO && c->state[i][j+1]==BLANK )
{
t=*c; t.prior=c->prior;
t.state[i][j]=CAOCAO;
t.state[i][j+1]=CAOCAO;
t.state[i-2][j]=BLANK;
t.state[i-2][j+1]=BLANK;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
}
}
////////////////////////////////////////////////////////////////////////////////
// 检查空格下边
if (i<4)
{
if (c->state[i+1][j]==SOLDIER) //下侧是一兵
{
t=*c; t.prior=c->prior;
t.state[i+1][j]=BLANK;
t.state[i][j]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
if (c->state[i+1][j]>=GENERAL1 && c->state[i+1][j]<=GENERAL5)
{
if(i<=2)//下侧是一竖将
{
if(c->state[i+1][j]== c->state[i+2][j])
{
t=*c; t.prior=c->prior;
t.state[i+2][j]=BLANK;
t.state[i][j]=t.state[i+1][j];
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
if(j<=2)//下侧是横将
{
if(c->state[i+1][j]==c->state[i+1][j+1] && c->state[i][j+1]==BLANK)
{
t=*c; t.prior=c->prior;
t.state[i][j]=t.state[i+1][j];
t.state[i][j+1]=t.state[i+1][j];
t.state[i+1][j]=BLANK;
t.state[i+1][j+1]=BLANK;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
}
if(c->state[i+1][j]==CAOCAO)//下侧是曹操
{
if(j<=2)
{
if(c->state[i+1][j+1]==CAOCAO && c->state[i][j+1]==BLANK )
{
t=*c; t.prior=c->prior;
t.state[i][j]=CAOCAO;
t.state[i][j+1]=CAOCAO;
t.state[i+2][j]=BLANK;
t.state[i+2][j+1]=BLANK;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
}
}
/////////////////////////////////////////////////////////////////////////////
//兵拐弯走
if(j<3)
{
if(i>0)
{
if(c->state[i][j+1]==BLANK)
{
if(c->state[i-1][j]== SOLDIER)
{
t=*c; t.prior=c->prior;
t.state[i-1][j]=BLANK;
t.state[i][j+1]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
if(c->state[i-1][j+1]==SOLDIER)
{
t=*c; t.prior=c->prior;
t.state[i-1][j+1]=BLANK;
t.state[i][j]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
}
if(i<4)
{
if(c->state[i][j+1]==BLANK)
{
if(c->state[i+1][j]== SOLDIER)
{
t=*c; t.prior=c->prior;
t.state[i+1][j]=BLANK;
t.state[i][j+1]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
if(c->state[i+1][j+1]==SOLDIER)
{
t=*c; t.prior=c->prior;
t.state[i+1][j+1]=BLANK;
t.state[i][j]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
}
}
//////////////////
if(i<4)
{
if(j>0)
{
if(c->state[i+1][j]==BLANK)
{
if(c->state[i][j-1]== SOLDIER)
{
t=*c; t.prior=c->prior;
t.state[i][j-1]=BLANK;
t.state[i+1][j]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
if(c->state[i+1][j-1]==SOLDIER)
{
t=*c; t.prior=c->prior;
t.state[i+1][j-1]=BLANK;
t.state[i][j]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
}
if(j<3)
{
if(c->state[i+1][j]==BLANK)
{
if(c->state[i][j+1]== SOLDIER)
{
t=*c; t.prior=c->prior;
t.state[i][j+1]=BLANK;
t.state[i+1][j]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
if(c->state[i+1][j+1]==SOLDIER)
{
t=*c; t.prior=c->prior;
t.state[i+1][j+1]=BLANK;
t.state[i][j]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
}
}
////////////////////////////////////////////////////////////////////////////////
}
}
return next_nodes;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -