【发布时间】:2019-03-02 13:43:10
【问题描述】:
我正在 SFML - Checkers 中做我的第一个 C++ 项目。 不幸的是,我在发明一个递归函数时遇到了困难,它可以让我检查每一个可能的跳跃组合,并返回坐标。
我该怎么做?查了很多网页,没找到答案 所以我认为这比我想象的要容易。
编辑#1:
if (player2.isSelected(pos_x + blockSize, pos_y + blockSize))
if (isBoardBlockEmpty(pos_x + 2 * blockSize, pos_y + 2 * blockSize))
return true;
if (player2.isSelected(pos_x - blockSize, pos_y + blockSize))
if (isBoardBlockEmpty(pos_x - 2 * blockSize, pos_y + 2 * blockSize))
return true;
if (player2.isSelected(pos_x + blockSize, pos_y - blockSize))
if (isBoardBlockEmpty(pos_x + 2 * blockSize, pos_y - 2 * blockSize))
return true;
if (player2.isSelected(pos_x - blockSize, pos_y - blockSize))
if (isBoardBlockEmpty(pos_x - 2 * blockSize, pos_y - 2 * blockSize))
return true;
【问题讨论】:
-
你已经有单跳的代码了吗?
-
@NicoSchertler 当然,它检查所选棋子的位置 + 1 块是否等于对手棋子,以及棋子的位置 +2 是否空闲(每个方向的代码相同)。 (我将编辑主帖子并将其粘贴在那里)
-
一种方法是将棋盘状态作为参数添加到该函数。然后,根据你正在调查的跳跃修改状态(移除对手,改变自己棋子的位置)并从目标位置递归再次检查。