자바를 이제 막 배우고 있는 학생입니다.
교수님께서 패널안에 게임을 만들어서 제출하라고 하셔서 하고있는데
다행히 게임소스는 인터넷에서도 구해서 나름 해석해보고 적용해보려했는데
이해도가 아직 많이 부족한거 같네요 ....
제가원하는 게임은 패널안에서 1~50까지의 글씨가 쓰여있는 버튼을 생성해야 하는데 그게 잘 안되네요 .... 고수님들의 많은 조언부탁드립니다.
현제 실행시키면 버튼 하나만 출력됩니다..
/////////////////////////코드입니다..///////////////////////
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class NumberGame extends JFrame implements ActionListener, ItemListener {
Random rand=new Random();
//int [][]Number; // 퍼즐배열
int check; // 순서가 맞는지 체크
String Num1; // 박스에 써있는 숫자
int Num2; // 박스에 쓰인 숫자가 맞는지 체크
int BoxNum[]=new int[50]; // 박스에 숫자를 쓰기위한 배열
int checkNumber = 1; //순서에 맞는 숫자인지 체크하기 위한 변수
Choice Level; // 레벨선택
JButton btnStart, btnFinish;// 시작 및 종료버튼 선언
JButton btnHowto; // 게임방법을 알려줌
JButton randBtn[]=new JButton[51]; // 숫자가 쓰이는 버튼
//Event e= new Event();
public NumberGame(){
FrameSetup();
//new Event();
Play();
}
// 프레임 구성
public void FrameSetup(){
Container contentPane = getContentPane();
setTitle("Java NumberGame v1.0, Copyrights(C) 2015.");
setDefaultCloseOperation(EXIT_ON_CLOSE); // 닫기 버튼을 클릭하면 프로그램 종료처리
setSize(700, 700); // 화면 크기 설정
setMinimumSize(new Dimension(400, 400));// 화면 최소크기 설정
// 화면 레이아웃 지정
contentPane.setLayout(new BorderLayout());
// 각 패널 구성
setTitlePanel(contentPane); // 제목부분의 패널
setMainPanel (contentPane); // 메인부분의 패널 (그림)
setButtonPanel(contentPane); // 버튼부분의 패널
setVisible(true); // 프레임을 보여줌
}
// 제목부분의 패널 구현
public void setTitlePanel(Container contentPane){
JPanel panTitle= new JPanel(); // 제목부분 패널
JLabel panLabel= new JLabel(); // 텍스트를 적기위한 레이블 생성
panTitle.add(panLabel); // 레이블을 패널에 삽입한다.
panLabel.setText("테스트용 단어입니다 "); // 테스트용 단어 출력
panTitle.setBorder(BorderFactory.createEtchedBorder()); // 구분선 출력
contentPane.add(panTitle, BorderLayout.NORTH); // 북쪽
}
// 게임이 이뤄지는 부분의 패널
public void setMainPanel(Container contentPane){
JPanel panMain=new JPanel();
panMain.setLayout(new GridLayout());
panMain.setBorder(BorderFactory.createEtchedBorder());
contentPane.add(panMain, BorderLayout.CENTER); // 가운데
} // 시작 종료 및 기타 버튼 부분 패널
public void setButtonPanel(Container contentPane){
JPanel panButton = new JPanel(); // 버튼을 삽입할 패널을 생성한다.
panButton.setLayout(new FlowLayout()); // 좌->우, 상->하로 순서대로 배치
Level =new Choice();
btnStart = new JButton("시작"); // 시작버튼
btnFinish= new JButton("종료"); // 종료버튼
btnHowto= new JButton("게임방법"); // 게임방법 설명
panButton.add(Level);
panButton.add(btnHowto);
panButton.add(btnStart); // 버튼삽입.
panButton.add(btnFinish);
// 게임 레벨 설정
for (int i=5; i<=10; i++) {
Level.add(String.format("레벨 %02d", i-4));
}
Level.select(0); // 1~25 까지의 게임이 기본
btnStart.addActionListener(this);
btnFinish.addActionListener(this);
btnHowto.addActionListener(this);
panButton.setBorder(BorderFactory.createEtchedBorder()); // 구분선 출력
contentPane.add(panButton, BorderLayout.SOUTH); // 남쪽
}
public void Play(){
for (int i=0; i<BoxNum.length; i++)
{
BoxNum[i] = rand.nextInt(50)+1;
for(int j=0; j<i; j++)
{
if(BoxNum[i]== BoxNum[j] && i !=j)
{
i--;
break;
}
}
}
for(int n=1; n<51; n++)
{
add(randBtn[n] = new JButton(String.valueOf(n)));
}
for (int i = 1; i < randBtn.length; i++)
{
randBtn[i].addActionListener(this);
}
}
public void itemStateChanged(ItemEvent e) {
}
public void actionPerformed(ActionEvent e) {
}
class Event extends NumberGame implements ActionListener{
public Event(){
}
public void actionPerformed(ActionEvent e) {
JButton btn = (JButton) e.getSource();
for( int i=1; i<randBtn.length; i++){
if ( btn == randBtn[i]){
Num1 = randBtn[i].getText();
Num2 = Integer.parseInt(Num1);
System.out.print(Num1); // 테스트용
System.out.println(Num2);
if(Num2 == checkNumber){
System.out.println(i);
randBtn[i].setVisible(false);
checkNumber++; // 맞는 번호면 다음으로
}else{
return;
}
}
}
}
}
public static void main(String[] args) {
NumberGame n=new NumberGame();
}
}