게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
자바 초보인데 게임을 만들고 있다가 막혔습니다.. 도와주세요
게시물ID : programmer_11123짧은주소 복사하기
작성자 : 북극의낙타
추천 : 0
조회수 : 646회
댓글수 : 5개
등록시간 : 2015/06/10 21:23:43
옵션
  • 본인삭제금지
자바를 이제 막 배우고 있는 학생입니다.
 
교수님께서 패널안에 게임을 만들어서 제출하라고 하셔서 하고있는데
 
다행히 게임소스는 인터넷에서도 구해서 나름 해석해보고 적용해보려했는데
 
이해도가 아직 많이 부족한거 같네요 ....
 
제가원하는 게임은 패널안에서 1~50까지의 글씨가 쓰여있는 버튼을 생성해야 하는데 그게 잘 안되네요 .... 고수님들의 많은 조언부탁드립니다.
 
현제 실행시키면 버튼 하나만 출력됩니다..
ex.gif
 
 
 
/////////////////////////코드입니다..///////////////////////
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();
  
 }
 
}

출처 게임 소스를 얻었지만 활용 못하는 초보의 복잡한 두뇌 속
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호