2013-10-25 60 views
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; 
} 
+1

什么变量代表'以前的得分'? – nhgrif

+0

“每次分数都会回到零。”你什么意思是“每次”?每次运行程序或每次在同一个正在运行的程序中调用'scoreKeeper'时? –

回答

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],而不是把他们作为参数。

+0

感谢iShaalan,你能给我任何提示我可以做一个getValue方法吗?我是否也需要班级数据成员?真的很感激它。 – Daniel

+0

同样,你应该对这些变量名称更具描述性。获取总数...? –

1

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

class Game { 
    static int score; 

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

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

1

我怀疑你有一个糟糕的抽象。我想你想要一个Chessboard来隐藏Chessmen的二维数组。让它保持当前分数作为数据成员。提供适当选择和移动棋子的方法。

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

不是一个小问题。