Mancala 是我用 Java 编写的一款引人入胜的游戏。在下图中,我们看到了一个 Mancala 游戏板。对于我的问题,您需要知道 A1-A6、B1-B6 称为坑,而大坑称为 kalahs。
(来源:pressmantoy.com)
坑 A1-A6 和右 kalah 属于玩家 A,坑 B1-B6 和左 kalah 属于玩家 B。
当游戏板一侧的所有六个坑都为空或一名玩家的卡拉超过 24 个坑时,游戏结束。这是我尝试在布尔方法中编程的内容(如果有获胜者则返回 true,因此我可以使用其他方法来判断它是谁):
public boolean isThereAWinner() {
ArrayList <SuperPit> pitsOfOwner = owner.getmyPits();
ArrayList <SuperPit> pitsOfOpponent = owner.getopponent().getmyPits();
for (int i = 0; i < pitsOfOwner.size(); i++) {
if (pitsOfOwner.get(i).isValidPlayOption() == true)
return false;
}
for (int i = 0; i < pitsOfOpponent.size(); i++) {
if (pitsOfOpponent.get(i).isValidPlayOption() == true)
return false;
}
if (owner.getKalah().getSeed() > 24) return true;
return false;
}
在哪里:
protected int seed;
public int getSeed() {
return seed;
}
public boolean isValidPlayOption() {
if (getSeed() > 0) return true;
else return false;
}
相反pit() 和nextPit() 方法有效。myPits ArrayLists 包含属于两个各自玩家的坑。
我认为这种方法应该有效,因为如果一个玩家的坑中不再有种子,游戏应该停止。每次玩家移动时,都会运行 isThereAWinner() 方法。
不幸的是,该方法总是返回 false。我不知道为什么,希望这里有人可以为我提供一些见解。