将数据保存在同一个类的单独对象中

时间:2014-05-21 19:13:58

标签: java object graphics japplet

所以我试图在我拥有一个球员类的桌面游戏。在这堂课中,我想保存不同的东西,比如董事会的位置,金额等等。

问题是,当我试图让两名球员全面走动时。它将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();
    }
}

1 个答案:

答案 0 :(得分:0)

您的ChangePosition方法是静态的,并修改了一些静态变量。这意味着你没有为每个玩家安排坐标,但它们都共享相同,因此两种方法相加。您需要在没有静态修饰符的情况下声明坐标,以使它们成为该类的每个实例上的单独字段。