java 2008. 12. 1. 17:14

JAVA 스윙 야구게임 프로그래밍

오랜전에 교육센터 있던 시절 심심해서 만들었던거 같은데...

오래전에 만든거라 지금 보면 코드가 지저분하네요...

참고용으로만 보시는게 좋을듯해요..









/*Baseball*/

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;


public class Baseball extends JFrame  {
  
  JMenuBar bar ;
  JMenu control;
  JMenuItem replay;
  JMenuItem show;
  JMenuItem exit;
  JPanel p;
  JButton submit;
  JTextField tf1,tf2,tf3;
  JTextArea ta;

  int strike;
  int ball;
  int attemp;
  String msg ;
  int[] array;
  int[] userNo;
    
  public Baseball(){
   super("Baseball Game");
   init();
   event();
   start();
   this.setSize(300, 400);
   Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
   Dimension frm = super.getSize();
   int xpos = (int) (screen.getWidth() / 2 -frm.getWidth() / 2);
   int ypos = (int) (screen.getHeight() / 2 - frm.getHeight() / 2);
   this.setLocation(xpos, ypos);
   this.setVisible(true);
  }
  
    
  public void init(){
   array = new int[3];
   userNo = new int[3];
   attemp =0 ;
   this.setJMenuBar(bar = new JMenuBar());
   this.add(p = new JPanel(),BorderLayout.NORTH);
   this.add(ta = new JTextArea(),BorderLayout.CENTER);
   
   bar.add(control = new JMenu("Control"));
   control.add(replay = new JMenuItem("다시하기"));
   control.add(show = new JMenuItem("정답보기"));
   control.addSeparator();
   control.add(exit = new JMenuItem("종료"));
   
   p.setLayout(new FlowLayout());
   p.add(new JLabel("수 : "));
   p.add(tf1 = new JTextField(3));
   p.add(new JLabel("수 : "));
   p.add(tf2 = new JTextField(3));
   p.add(new JLabel("수 : "));
   p.add(tf3 = new JTextField(3));
   p.add(new JLabel("     "));
   p.add(submit =new JButton("확인"));
   p.setBackground(Color.lightGray);
  }
  
  /*이벤트를 발생시키는 내부클래스를 초기화하는 메소드*/
  public void event(){
   
   /*확인 버튼 누를시 게임시작 및 결과출력*/
   submit.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
     userNo[0]=Integer.parseInt(tf1.getText());
     userNo[1]=Integer.parseInt(tf2.getText());
     userNo[2]=Integer.parseInt(tf3.getText());
     
     /*각 필드에 같은 번호 입력체크*/
     if(userNo[0]==userNo[1] || userNo[1]==userNo[2] || userNo[2]==userNo[0]){
      ta.append("각 필드에 다른 번호를 입력해주세요\n");
      return;
     }
     
     strike = 0;
     ball = 0;
     check();
     attemp++; //시도한횟수 카운트
     if(strike!=0 || ball !=0){
      ta.append("입력한숫자 : "+userNo[0]+" "+userNo[1]+" "+userNo[2]+" [ "+"Strike : " + strike +"개"+ "   ball : " + ball+"개 ]\n");
       if(strike == 3){
        ta.setBackground(Color.orange);
        ta.append("당신이 시도한 횟수는 :" + attemp+"번 입니다. \n");
       }
     }else
      ta.setText(msg);
    } 
   });
   
   /* 종료버튼 누를시 종료되는 이벤트*/
   exit.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
      System.exit(0);
    } 
   });
   
   /*정답보기 이벤트*/
   show.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
      ta.setText("포기하셨군요....ㅠ-ㅠ 정답은 : " +array[0]+array[1]+array[2]+"\n");
      tf1.setText("");
      tf2.setText("");
      tf3.setText("");
    } 
   });
   
   /*게임다시 시작이벤트*/
   replay.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
      ta.setText("");
      tf1.setText("");
      tf2.setText("");
      tf3.setText("");
    } 
   });
   
   /* 윈도우 창 종료*/
   this.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
     System.exit(0); //프로그램종료
   }
  }); 
  }
  
  /*시작시 랜덤하게 중복되지 않는 번호 받아오는 메소드*/
  public void start(){
   label:for(int i=0 ; i<array.length ; ){
     array[i]=(int)(Math.random()*9+1);
      for(int j=0 ;j<i ; j++){
       if(array[j] == array[i])
        continue label;
      }
    i++;
   }
  }
  
  /*strike or ball 체크*/
  public void check(){
   for(int i = 0 ; i<array.length;i++){
    for(int j = 0 ; j<array.length ; j++){
     if(array[i]==userNo[j]){
      if(i==j)
       strike++;
      else
       ball++;
     }  //strike,ball check;
     else
      msg = "맞춘 숫자가 없습니다.\n";
    } //inner for loop
   } //outter for loop
  }

  public static void main(String[] args){
    new Baseball();
  }
}