2013-10-25 91 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的二維數組。讓它保持當前分數作爲數據成員。提供適當選擇和移動棋子的方法。

我可以看到它的構造函數實例化一個棋盤。它會將每件作品放在適當的起始位置。然後每個玩家輪流移動。

不是一個小問題。