我正在製作棋盤遊戲,並且我必須根據滾動的dieRoll int使玩家在棋盤上的位置發生變化。但每次玩家擲骰子時,棋盤上的位置都不會改變。從一些故障排除來看,似乎是實際玩家的X和Y位置沒有改變,而不是板子顯示不正確。調用set方法後,玩家X和Y的位置不會改變
我的骰子和移動播放器方法
public void rollDiceAndMovePlayer(){
setDice();
throwField.setText(String.valueOf(getDice()));
//player1.setPosX(2) to test PosX change, doesn't work.
player1.setPosX(2);
if(player1.getPosY() == BOARD_SIZE - 1){
if(player1.getPosX() < BOARD_SIZE - 1){
player1.setPosX(player1.getPosX()+getDice());
} else {
//only accepting winning roll
if(player1.getPosX() + getDice() == BOARD_SIZE - 1){
//CHANGE TO JOPTIONPANE ##################################
System.out.println("You win!");
}
}
}
else if(player1.getPosX()+getDice() > BOARD_SIZE -1){
player1.setPosY(player1.getPosY()+1);
player1.setPosY(player1.getPosY()+getDice() - BOARD_SIZE);
}
else{
player1.setPosX(player1.getPosX()+getDice());
}
display();
我的播放器元素類有兩個靜態變量
private int playerPosX = 0;
private int playerPosY = 0;
set和get爲X的方法和Y:
public void setPosX(int a){
int playerPosX = a;
}
public int getPosX(){
return playerPosX;
}
我已經確保板的顯示方法確實刪除舊板並重新打印。我在rollDiceAndMovePlayer方法中使用了JOptionPane來測試dieRoll和玩家X和Ys,看起來X和Ys保持爲0.我甚至讓我的教授看看我的代碼,他也找不到問題。我傾向於認爲它與setPosX/Y方法有關,但無法弄清楚。
如果有人有任何想法是什麼問題是非常感謝。
'INT playerPosX = A;'是局部聲明你的'setPosX'方法,這意味着它在你的實例字段沒有任何影響,使其'playerPosX = A;'或'this.playerPosX = A;'而不是 – MadProgrammer