西洋跳棋走棋算法

来源:互联网 发布:阿法狗 人工智能 编辑:程序博客网 时间:2024/05/17 05:09

输入:待移动的棋子所在的棋盘格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);

 

原创粉丝点击