上一节写到,能够走棋了,只是没有规则,随便怎么走都可以。今天,就来制定规则。
在走棋之前需要判断是否可以走。所以必须有个函数来判断是否可以走棋,这个判断函数需要的参数是走的哪颗棋子,走到哪里去,是否吃棋。
bool canMove(int moveid,int row,int col,int killid);
实现该函数。
1、如果选择的颜色和要吃的颜色是一样的,也可以形容点错了,想换个要走的棋子。
if(_s[moveid]._red == _s[killid]._red) //颜色一样
{
//换选择
_selectid=killid;
update();
return false;
}
return true;
2、实现每个不同类型棋子的规则
将问题简单化,划分几个小问题来解决。
switch (_s[moveid]._type)
{
case Stone::CHE:
return canMoveChe(moveid, killid, row, col);
case Stone::MA:
return canMoveMa(moveid, killid, row, col);
case Stone::PAO:
return canMovePao(moveid, killid, row, col);
case Stone::BING:
return canMoveBing(moveid, killid, row, col);
case Stone::JIANG:
return canMoveJiang(moveid, killid, row, col);
case Stone::SHI:
return canMoveShi(moveid, killid, row, col);
case Stone::XIANG:
return canMoveXiang(moveid, killid, row, col);
}
函数一:将
现在依次实现每个函数,函数1,是关于将的实现方法。1、首先目标位置在九宫内,2、移动