2013-02-28 2 views
1

나는 GUI와 모든 것을 가지고 sokoban 게임을 만들고있다. 나는 optimzation 작업을하고있다. 가능한 한 현명한 객체를 유지하고 싶기 때문에 클래스/객체의 메소드에서 생성자를 호출 할 수 있어야한다. . 가정 :어떻게 생성자를 호출하나요?

public class BoardGame() { 

public BoardGame)() { 
this(1) 
} 

public BoardGame(int level){ 
//Do stuff, like calling filelevel-to-board loaderclass 
} 

개체/클래스 자체에서이 개체/클래스의 생성자를 호출하는 방법을 어떻게 만듭니 까? 예 :

public BoardGame nextLevel() { 
return BoardGame(currentLevel+1); 
} 

위의 내용은 분명히 정의되지 않았습니다. 내가 다른 클래스에서이 객체를 사용하려면 내가 할 수있을 것을

같은 :

GameBoard sokoban = new GameBoard(); //lvl1 
draw(GameBoard); 
draw(GameBoard.nextLevel()); //draws lvl2 
+0

이것은 접선이지만, 아마 레벨은 자신의 클래스해야하고, 게임 보드는 레벨을 포함해야합니다. –

답변

2

당신은 생성자를 호출 할 new 키워드를 사용해야합니다.

public BoardGame nextLevel() { 
    return new BoardGame(currentLevel + 1); 
} 
+0

그게 아주 의미가 있습니다;) 나는 이것을 한 시간 동안 고민하고있었습니다. 당신이 쉽게 찾을 수 있지만 고맙게 생각할 것입니다. 감사합니다! – arynaq

0

생성자를 호출하면 new 키워드가 필요하며 항상 새 인스턴스를 만듭니다. 예를 들어, 귀하의 예제 코드에서

GameBoard sokoban = new GameBoard(); //lvl1 
draw(sokoban); 
draw(sokoban.nextLevel()); //draws lvl2 
sokoban <-- still level 1 

은 아마 당신은 게임 판은 변경 가능하려면 :

public class GameBoard { 

    public GameBoard() { 
     setLevel(1); 
    } 

    private void setLevel(int i) { 
     currentLevel = i; 
     .... 
    } 

    public void nextLevel() { 
     setLevel(currentLevel+1); 
    } 
} 
+0

현재 구현되지 않은 보드는 .txt 파일에서 레벨을로드하는 다른 클래스에서 만든 고정 배열에 있습니다. – arynaq

관련 문제