검색결과 리스트
Swing에 해당되는 글 1건
- 2008.12.01 JAVA 스윙 야구게임 프로그래밍
글
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();
}
}
RECENT COMMENT