中国象棋 将军和杀棋 算法

carryme2020 2009-09-19 09:32:18
如题,就像中国游戏里的中国象棋一样的,不是吃将判断输赢的,那位大侠给我说说思路啊,详细一点,不用给出算法,不过你愿意也可以给出。谢谢了
还有,我现在已经写好了象棋的规则算法,
const BYTE CChessManager::InitChessMap[10][9] =
{
{13,14,15,16,17,16,15,14,13},
{0,0,0,0,0,0,0,0,0},
{0,12,0,0,0,0,0,12,0},
{11,0,11,0,11,0,11,0,11},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{1,0,1,0,1,0,1,0,1},
{0,2,0,0,0,0,0,2,0},
{0,0,0,0,0,0,0,0,0},
{3,4,5,6,7,6,5,4,3}
};
这个是记录棋盘信息的,小于10的代表我方棋子,大于10的代表对手的。
由于我的规则是按照这个棋盘写的,所以棋盘不能变了。。。请给出一种可行的判断方案,谢谢了
...全文
502 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
an_bachelor 2009-09-20
  • 打赏
  • 举报
回复
你可以做一个snapshot 或者直接在你的棋子队列中移动了你的棋子而不在界面中反映出来
然后测试移动了之后 对方有没有棋子可以吃你的帅/对方将是否和你帅会面
实际情况并不会很慢 你还可以把代表棋子的列表中 死子随时清除掉 总共才16个子而已 我几年前做过一个玩 duron850 256M内存 速度飞一样的快 人格担保
carryme2020 2009-09-19
  • 打赏
  • 举报
回复
我判断将军的思路是:以将为中心搜查将旁边的3个点是不是兵,然后搜查8个马位。。之后车,炮也是这样搜查。这样可以判断是不是被将军,可是到了判断杀棋我就傻了,难道真的要把我方的所有子的走法都遍历一次吗。。这样不就是很慢?
dirdirdir3 2009-09-19
  • 打赏
  • 举报
回复
一般是用A*+一些经验模式来做吧...........将军可以判断敌人的下一步落点,如果会使自己的将军被杀的话就是被将军......
dirdirdir3 2009-09-19
  • 打赏
  • 举报
回复
一般是用A*+一些经验模式来做吧...........将军可以判断敌人的下一步落点,如果会使自己的将军被杀的话就是被将军......
dirdirdir3 2009-09-19
  • 打赏
  • 举报
回复
一般是用A*+一些经验模式来做吧...........将军可以判断敌人的下一步落点,如果会使自己的将军被杀的话就是被将军......

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧