슈팅게임... 스테이지 선택화면과 쓰레드

조회수 1116회
package shoot;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class Stage extends shoot{
    public ImageIcon icon;
    public ImageIcon button;
    private int stageNumber;

public void setStage1(Graphics g){
    icon = new ImageIcon("C:\\Users\\USER\\Desktop\\stage.jpg");
    Image img = icon.getImage();
    g.drawImage(img,0,0,500,500, this);
}

public void setStageSelect(Graphics g){
    icon = new ImageIcon("C:\\Users\\USER\\Desktop\\stageselect.jpg");

    Image img = icon.getImage();
    g.drawImage(img,0,0,500,500,this);   
    JButton button = new JButton("stage1");
    button.setBounds(100,100,100,100);

    this.add(button);

    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            stageNumber = 1;
            repaint();
        }
    });

}

public void paintComponent(Graphics g){

    setStageSelect(g);
    if(stageNumber == 1)
    {
        setStage1(g);
        player.drawPlayer(g);
        super.paintComponent(g);

    }
 }

}

슈팅게임에서 스테이지 선택화면을 만들기 위해 만들어본 코드입니다. setStageSelect에서 배경을 그리고 버튼을 하나 추가하여 버튼을 클릭하면 stageNumber가 1로 되게 설정하였습니다. stageNumber가 1이 되면 게임화면을 불러오게 하였고요.. 여기서 문제는 저는 버튼을 눌러 게임화면으로 들어가면 쓰레드를 실행시키고 싶은데 현제 게임을 실행시키면 바로 쓰레드가 시작이 되어 스테이지 선택화면에서도 쓰레드가 실행되고 있습니다. (start 와 run 은 부모 클래스에 있습니다. 또한 현제 쓰레드를 시작하는 부분은 메인클래스에 있습니다.)

그리고 한가지 더 문제점은 버튼을 눌러 setStage1을 실행시키게 되면 플레이어가 움직이지를 않습니다. 플레이어의 움직임을 조정하는 키 이벤트 메소드는 shoot 클래스에 구현이 되어있고 setStage1을 하기 전 setStageSelect에서는 정상적으로 작동됩니다.

저는 버튼을 누름으로써 배경과 플레이어를 draw한것밖에 없는데 왜 키이벤트가 갑자기 작동을 안하는지 모르겠습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)