0

我是 Java 新手,如果有人能提供以下帮助,我将不胜感激。我正在尝试为我的棋盘制作记分员。此刻,分数将每次归零。我如何能够保存以前的分数并在每一步中添加它?谢谢!

public static int scoreKeeper(Chessmen[][] chessboard, int X, int Y, int X1, int Y1, int currentNumber, int totalNumber){

    AbstractPiece knight = new Knight();
    AbstractPiece bishop = new Bishop();
    AbstractPiece pawn = new Pawn();
    AbstractPiece king = new King();
    AbstractPiece queen = new Queen();
    AbstractPiece rook = new Rook();

    if ((chessboard[Y][X] == Chessmen.WHITE_KNIGHT) || 
            (chessboard[Y][X] == Chessmen.BLACK_KNIGHT)){
        currentNumber = currentNumber+totalNumber+knight.relativeValue();
        return currentNumber;
    }else return totalNumber;
}
4

3 回答 3

1

最简单的解决方案是将您的分数存储为类数据成员:

class Game {
    static int score;

    public static int updateScore(... some inputs...) {
        if(some condition is true) {
            score = score + whatever you want to add;
        }
    }
}

该类在方法调用之间保留“分数”的值。

于 2013-10-25T17:22:05.990 回答
1

我怀疑你有一个糟糕的抽象。我认为您想要Chessboard隐藏Chessmen. 让它保持当前分数作为数据成员。Provide methods to select and move pieces appropriately.

我可以看到它的构造函数实例化了一个棋盘。它会将每个部分设置在适当的起始位置。然后每个玩家将轮流移动。

不是小问题。

于 2013-10-25T17:23:16.017 回答
1

您遇到的主要问题是您将 currentNumber 的值作为参数传递,这意味着它不会在此方法之外更改此示例将说明我的观点

public class Test{

   public static void main (String[] args){
       int a = 0 ;
       changeValue(a);
       System.out.print(a);
   }
   public static  void changeValue(int a){
       a=20;
   }
}

输出将始终为 0 。

您可以通过编写方法 getValueOfCurrentNumber()getValueOfTotalNumbe()来解决它

获取值[currentNumber 和 totalNumbe] 而不是将它们作为参数。

于 2013-10-25T17:32:20.857 回答