2014-04-03 4 views
0

나는 코딩에 초보적이다. 게임 코드를 작성하고 싶습니다. 문제가 있습니다 : 다른 클래스의 한 클래스의 객체를 호출하려고하지만 내 코드가있는 eror가 있습니다.다른 클래스에서 생성 된 한 클래스의 객체를 호출하는 방법은 무엇입니까?

나는 Game, Player, 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(); 
     } 
    } 
} 

하지만 코드를 실행할 때 오류가 있습니다. 오브젝트 플레이어는 commandReader 클래스에 대해 알려져 있지 않습니다. 클래스 commandReader에있는 클래스 Player의 다른 객체를 만들고 싶지 않고 Game 클래스에서 만든 객체 만 사용하고 싶습니다. 어떻게 호출해야합니까?

+2

이 코드는 컴파일 문제가있다. 어쩌면 프로그래밍에 대한 기본적인 지식이 필요합니다. public player; // 반드시 public Player 플레이어 여야합니다. –

+1

if 문이 작동하지 않습니다. '.equals()'를 사용하여'String'을 비교해야합니다. –

답변

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 yer from commandReader

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

새로운 것을 이해 하시길 바랍니다.

[업데이트]이

public Game(){ 
    [...] 
} 

그리고하지

private Game(){ 
    [...] 
} 

을해야하기 때문에

오른쪽 당신은 또한 commandReader 당신의 그런 게임 클래스의 생성자를 추가하지 마십시오 게임 객체를 만들어야합니다.

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(); 
    } 

} }

관련 문제