티스토리 뷰
이제 GameStart에 화살표가 위치한 상태에서 엔터키를 눌렀을 경우 화면이 게임화면으로 교체되어야 한다
우선 ViewController 클래스에 화면을 바꾸는 메소드를 추가한다.
public void showGamePanel(){ contentPane.remove(introPanel); //introPanel을 제거한다 contentPane.add(new GamePanel()); //새로운 Panel을 추가한다. mainFrame.setVisible(false); //메인프레임을 보이지 않게한 후 mainFrame.setVisible(true); //다시 보이게 한다. }
다음은 setVisible을 해주는 이유는 컴포넌트를 교체 후에는 화면이 바뀌지 않는다.
그래서 찾은 방법이 setVisible 메소드를 이용하여 false 와 true를 다시 해주면 컴포넌트가 교체되는것을 볼수 있다.
여기서 GamePanel 클래스가 나오는데 아직 게임화면을 구성하지 않았으므로 GamePnael은 Label 하나만 달아서 화면이 바뀌는것을 확인해본다.
--GamePanel Class--
import java.awt.Graphics; import java.awt.Label; import javax.swing.JPanel; public class GamePanel extends JPanel{ public GamePanel() { this.add(new Label("게임 매인화면입니다.")); } }
화면 교체 메소드와 게임화면 클래스를 만들었으니 이제 엔터를 눌렀을때의 이벤트처리를 해보자
화면 전환메소드는 ViewController 클래스에 있는데 IntroPanel에서 이벤트가 발생하므로 IntroPanel 은 생성자로 viewController 를 받는다.
ViewController 클래스의 intit 메소드에서 introPanel을 생성할때 자기 자신을 생성자 인자로 넣어준다
introPanel = new IntroPanel(); -> introPanel = new IntroPanel(this);
그리고 IntroPanel 클래스는 생성자로 viewController를 받는다.
IntroPanel 클래스에 viewController controller; 변수를 추가하고
생성자를 다음과 같이 수정한다.
public IntroPanel(viewController controller) { this.controller = controller; //<-- 받은 생성자를 여기에서 controller 라는 변수로 사용 //기본툴킷 객체로부터 getImage메소드를 활용하여 이미지를 불러온다. intro_image = Toolkit.getDefaultToolkit().getImage("intro_image.jpg"); this.addKeyListener(new IntroKeyEvent(this)); }
그리고 gameStart() 라는 메소드를 추가한다.
public void gameStart(){ controller.showGamePanel(); }
다음 IntroKeyEvent클래스의 keyPressed(KeyEvent e)메소드를 다음과 같이 변경한다.
public void keyPressed(KeyEvent e) { //키값이 40 즉,방향키 위쪽 이면 if(e.getKeyCode() == 38){ introPanel.select =0; //키값이 38 즉,방향키 아래쪽 이면 }else if(e.getKeyCode() ==40){ introPanel.select= 1; }else if(e.getKeyCode() ==10){//엔터 키 //select =1 즉 화살표가 gameStart옆에 위치해있을때 //엔터를 누를경우에 게임시작 if(introPanel.select == 0) introPanel.gameStart(); else if(introPanel.select ==1) //화살표가 Quit에 위치한 상태일때 System.exit(0); //프로그램 종료 } //패널을 다시 그려준다. introPanel.repaint(); }
그리고 실행 하고난뒤 GameStart에 화살표가 있을때 엔터를 누르면 게임화면으로 변경된다.
이벤트에서 엔터키를 판별한뒤 게임시작 메소드흐름은
IntroKeyEvent 클래스에서 IntroPanel.gameStart() 호출 ->IntroPanel 클래스에 서 ViewControlle.showGamePanel() 메소드 호출
--실행 결과--
'내맘대로 게임(Java)' 카테고리의 다른 글
CardGame(완성.) (0) | 2014.08.19 |
---|---|
Java로 만들어본 CardGame(3) (0) | 2014.07.21 |
Java로 만들어본 CardGame(2) (0) | 2014.07.20 |
Java로 만들어본 CardGame(1) (0) | 2014.07.20 |