Java简单的游戏测试错误

时间:2012-03-09 20:25:30

标签: java game-engine

我在java中创建简单的棋盘游戏,并且它们运行顺利,但是我在测试时遇到2次失败,我不理解它们背后的逻辑。

失败#1:玩家1克隆了他的国王并占据了预期的< 8>但它是< 1>

失败#2:符号应被视为空单元格。预期的< 1>但它是< 0>

这是我的代码:

import java.io.ObjectInputStream.GetField;

public class ChessBoard {
    public static boolean belongsToPlayer(final char piece, final int player) { // method to check a piece is related to player 1 or 2
        if (player == 0 && Character.isUpperCase(piece)) {
            return true;
        }
        if (player == 1 && Character.isLowerCase(piece)) {
            return true;
        }
        return false;
    }

     public static int getCount(final String[] board, final int player) { // method to return the number of pieces belonging to each player
         int count = 0;

         if (board.length == 0) {
             return count = 0;
         }
         else if (board.length == 1) {
             return count = 1;
         }
         else {
        int size = board.length;
        for (int i = 1; i < size; i++) {        
            for (int j = 0; j < board[i].length(); j++) {

                if (belongsToPlayer(board[i].charAt(j), player)) {
                    count++;
                }
            }
        }
        }
        return count;
    }

}

and these are the test methods:
test #1
@Test(timeout = 1000)
    public void test8KingsPlayer1() {
        String[] board = {
                "kkkkkkkk"
            };
        assertEquals("Player 1 has cloned his king and has dominated", 
                8, instance.getCount(board, PLAYER1));
    }

test #2
@Test(timeout = 1000)
    public void testAPieceOfCode() {
        String[] board = {
                "int factorIal(int n) {",
                "    int n = 8, r = 1; ",
                "    while (n-- > 1)   ",
                "        r *= n;       ",
                "    return r;         ",
                "}                     "
            };
        assertEquals("Symbols should be treated as empty cells.", 
                1, instance.getCount(board, PLAYER0));
    }

谁知道如何解决问题?

1 个答案:

答案 0 :(得分:2)

失败1:

else if (board.length == 1) {
    return count = 1;
}

它立即返回1,因为你传递了一个带有1个元素的String []。

失败2:

for (int i = 1; i < size; i++) {
    ...
        if (belongsToPlayer(board[i] ...

数组索引从0开始。您从1开始,跳过数组中的第一个字符串。由于首都我在第一排,所以没有计算。