티스토리 뷰

이제 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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함