2014-05-21 38 views
-1

因此,我正在嘗試在我有玩家類的地方製作桌面遊戲。在這堂課,我想保存不同的東西,比如在棋盤上的位置,金額等。將數據保存在同一類別的單獨對象中

問題是,當我試圖讓兩名球員全線走。它將movePlayer方法中的兩個值相加並向上移動10個空格。

我在這裏錯過了一些明顯的東西嗎?

public class Board extends Component { 
private Player playerOne; 
private Player playerTwo; 
public Board(){ 
    playerOne = new Player(); 
    playerTwo = new Player(); 
} 

    g.fillOval(playerOne.getPositionX(), playerOne.getPositionY(), 50, 15); // draw player 1 

    g.fillOval(playerTwo.getPositionX(), playerTwo.getPositionY(), 15, 50); // draw player 2 

} 

public void rollDice(){ 
    playerOne.movePlayer(8); // move player1 > 8 spots 
    playerTwo.movePlayer(2); // move player2 > 2 spots    
} 
} 

movePlayer方法,以及所有與之相關聯:

public static void updatePlayerPos(int x){ 
    if (playerPos > 40){ 
     playerPos = 2; 
    } else { 
     playerPos = playerPos + x; 
    } 
} 

public static void changePosition(){ 
    if (playerPos < 12){ 
     positionX = positionX - 50; 
    }else if(playerPos < 22){ 
     positionY = positionY - 50; 
    } else if (playerPos < 32){ 
     positionX = positionX + 50; 
    }else if(playerPos < 42){ 
     positionY = positionY + 50; 
    } 
} 

public void movePlayer(int dicerolls){ 
    for (int i = 0;i < dicerolls;i++){ 
     updatePlayerPos(1); 
     changePosition(); 
    } 
} 
+0

你可以顯示你的movePlayer()的實現嗎? – Ksv3n

+0

Ksven是正確的。我們需要看到Player.movePlayer。這個問題聽起來像是你有可能使用一個靜態變量來包含玩家移動的距離,並在兩個玩家都更新時調用它。 –

+0

你說得對。實例變量是靜態的。/facepalm – MvdBeukel

回答

0

你ChangePosition方法是靜態的,並修改一些靜態變量。這意味着你沒有爲每個玩家安全的座標,但他們都共享相同的,因此這兩種方法加起來。您需要聲明沒有靜態修飾符的座標,以使它們在該類的每個實例上都是單獨的字段。

相關問題