2014-04-03 35 views
0

我只是開始編碼。我想寫一個遊戲代碼,我有一個問題: 我想在另一個類中調用一個類的對象,但是我的代碼存在一個錯誤。如何調用已經在另一個類中創建的一個類的對象?

我有三個類:遊戲,播放器,commandReader。

類球員:

public class Player{ 

    public void moveUp(){ 
    ... 
    } 
} 

,我已創建的類播放器的一個對象在遊戲類:

public class Game{ 

    public Player player; 

    private Game(){ 
     player = new Player; 
    } 

    // methods omitted 
} 

我要在另一個名爲commandReader類調用對象的「玩家」:

public class commandReader{ 

    public readCommand(String command){ 
     if(command == "Up"){ 
     player.moveUp(); 
     } 
    } 
} 

但我運行代碼時出現錯誤。目標玩家對於class commandReader是未知的。我應該提到,我不想在類commandReader中創建類Player的另一個對象,而只是使用已在Game類中創建的對象。 我應該怎麼稱呼?

+2

這段代碼有編譯問題。也許你需要一個關於編程的基本知識。 public Player; //必須是公共播放器播放器; –

+1

你的if語句不會工作。你必須使用'.equals()'來比較'字符串'。 –

回答

1

您必須將對遊戲類的引用傳遞給commandReader的構造函數。

Game game; 

public commandReader(Game game) 
{ 
    this.game = game; 
} 

然後你就可以調用

game.player.moveUp(); 
0

嗯,有一些錯誤。

在必須聲明那樣的變量玩家類遊戲:在遊戲類

player = new Player(); 

哪些不能在因爲調用構造函數

public Player player; 

然後球員類沒有構造函數

class Player{ 

    //CONSTRUCTOR (initialize the object) 
    public Player(){ 

    } 

    [...] 

} 

經過這種調整後,您可以調用pla從指令閱讀器與

Game.player.moveUp();//Only if it's a static variable 

希望你明白一些新的東西。

[更新]

右鍵你也別在commandReader添加在遊戲類的構造函數,因爲它必須

public Game(){ 
    [...] 
} 

而且不

private Game(){ 
    [...] 
} 

然後必須創建一個遊戲對象

Game game = new Game(); 

然後玩家

game.player.moveUp(); 
0

的commandReader類沒有任何地方展示一個遊戲對象。

public class commandReader{ 

    Game myGame = new Game(); 
    public readCommand(String command){ 
     if(command == "Up"){ 
     myGame.player.moveUp(); 
    } 

}}

相關問題