java - 这种确定 gem 棋获胜者的方法不起作用

标签 java boolean

gem 棋是我用 Java 编写的一款有趣的游戏。在下图中,我们看到了 gem 棋游戏板。对于我的问题,您需要知道 A1-A6、B1-B6 称为坑,而大坑称为 kalahs。

The mancala game
(来源:pressmantoy.com)

A1-A6 坑和右边的 kalah 属于玩家 A,B1-B6 坑和左边的 kalah 属于玩家 B。

当游戏板一侧的所有六个坑都为空或当一名玩家的卡拉中有超过 24 个坑时,游戏结束。这是我尝试用 boolean 方法编写的程序(如果有获胜者则返回 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;
}

oppositepit() 和 nextPit() 方法有效。 myPits ArrayLists 包含属于两个各自球员的坑。

我认为这种方法应该可行,因为如果一名玩家的坑中不再有种子,游戏就会停止。每次玩家移动时都会运行 isThereAWinner() 方法。

不幸的是,该方法总是返回 false。我不知道为什么,希望这里有人能给我一些见解。

最佳答案

它总是返回 false 因为:

for (int i = 0; i < pitsOfOwner.size(); i++) {
if (pitsOfOwner.get(i).isValidPlayOption() == true) 
        return false;
}

当任何坑有种子时,它返回 false,即使另一个板完全是空的。

怎么样:

int sum1 = 0;
for (int i = 0; i < pitsOfOwner.size(); i++) {
    sum1 += pitsOfOwner.get(i).getSeed();
}
if (sum1 == 0) return true; // all pits are empty

关于java - 这种确定 gem 棋获胜者的方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18854823/

相关文章:

r - 自动将二进制变量编码为因子?

MySQL boolean 值 - 翻转值?

java - Android对象从方法中序列化自身

java - 如何在 java.awt.geom 中获得模糊的笔画

java - 如何映射 JavaFX 可观察值的值?

java - 使用 BouncyCaSTLe 进行 SHA2RSA 加密

Java trie 节点 boolean 值与 boolean 值

java - 线程中的异常 "main"java.lang.NoClassDefFoundError : Could not initialize class org. springframework.jdbc.core.StatementCreatorUtils

java8 lambda : convert a String of 0's and 1' s to basic array of booleans

php - mysql_fetch_row() 期望参数 1 是资源, boolean 值在第 34 行的/home/---/---/register.php 中给出