所以我试图在我拥有一个球员类的桌面游戏。在这堂课中,我想保存不同的东西,比如董事会的位置,金额等等。
问题是,当我试图让两名球员全面走动时。它将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 :(得分:0)
您的ChangePosition方法是静态的,并修改了一些静态变量。这意味着你没有为每个玩家安排坐标,但它们都共享相同,因此两种方法相加。您需要在没有静态修饰符的情况下声明坐标,以使它们成为该类的每个实例上的单独字段。