西洋跳棋走棋算法

输入:待移动的棋子所在的棋盘格sourceChecker:Checker,待移动的棋子欲到达的棋盘格destinationChecker:Checker

输出:该步棋是否合法result:Boolean,中间格列表middleSteps:List<Step>

 

查找所有必须跳过对方棋子的棋子所在的棋盘格列表candidates:List<Checker>

if:candidates NOT empty

    if:candidates中包含sourceChecker:

        return 递归查找从sourceChecker到destinationChecker的路径

    else:

        return false, empty

else:

    if:destinationChecker是sourceChecker前方相邻格且destinationChecker中没有棋子

        return true, empty

    else:

        return false, empty

 

递归查找从sourceChecker到destinationChecker的路径CheckJump(sourceChecker,destinationChecker,middleSteps)

输出:该步棋是否合法result:Boolean,中间格列表middleSteps:List<Step>

if:destinationChecker是sourceChecker跳过敌方棋子c后的格子

    return true,middleSteps

else:

    if:sourceChecker没有可以跳过的格

        return false,empty

    else:

        找到sourceChecker跳过地方棋子c后的格子m,将<m,c>放入middleSteps;

        return CheckJump(m,destinationChecker,middleSteps);

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值