import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;
import javax.swing.SwingConstants;
import java.awt.Font;
public class Baseball extends JFrame {
private JPanel contentPane;
private JTextField num1;
private JTextField num2;
private JTextField num3;
private JButton button;
private JTextArea ingGameArea;
//랜덤생성된 숫자 저장될 변수
private int[] pitcher = {0,0,0};
//내가 넣은 숫자가 저장될 변수
private int[] batter = {0,0,0};
//스트라이크 카운트
private int strike = 0;
//볼넷 카운트
private int ball4 = 0;
//회차 저장 1~10회까지
private int ballnumber = 0;
//게임진행상황 저장
private String ingGame = "";
//경기끝 상황 변수
private int status = 0;
private JLabel result;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Baseball frame = new Baseball();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Baseball() {
setTitle("야구게임");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 303, 368);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
num1 = new JTextField();
num1.setBounds(12, 101, 37, 21);
contentPane.add(num1);
num1.setColumns(10);
num2 = new JTextField();
num2.setColumns(10);
num2.setBounds(61, 101, 37, 21);
contentPane.add(num2);
num3 = new JTextField();
num3.setColumns(10);
num3.setBounds(110, 101, 37, 21);
contentPane.add(num3);
//공 던지기 실행 클래스======================================================================================================
JButton btnNewButton = new JButton("던지기!");
btnNewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
try{
result.setText("");
//"타석에 들어서기" 눌럿는지 확인
if(pitcher[0] == 0 && pitcher[1] == 0 && pitcher[2] == 0){
JOptionPane.showMessageDialog(Baseball.this, "마운드에 오르세요 ^^" , "경고" , JOptionPane.INFORMATION_MESSAGE );
result.setText("마운드에 오르세요 ^^");
}else{
//두자리수 이상의 숫자를 입력받을 경우 입력값을 ""으로 바꿔서 예외처리로 보냄
if(Integer.valueOf(num1.getText()) >= 10){num1.setText("");}
if(Integer.valueOf(num2.getText()) >= 10){num2.setText("");}
if(Integer.valueOf(num3.getText()) >= 10){num3.setText("");}
//내가 입력한 숫자를 batter에 넣음
batter[0] = Integer.parseInt(num1.getText());
batter[1] = Integer.parseInt(num2.getText());
batter[2] = Integer.parseInt(num3.getText());
//내가 입력한 숫자중에 중복값이 있는지 검사
if(batter[0] == batter[1] || batter[1] == batter[2] || batter[0] == batter[2]){
JOptionPane.showMessageDialog(Baseball.this, "같은 숫자를 넣지 마세요" , "경고" , JOptionPane.INFORMATION_MESSAGE );
result.setText("같은 숫자를 넣지 마세요");
num1.setText("");
num2.setText("");
num3.setText("");
}else{
//스트라이크, 볼 검사
for(int i = 0 ; i < 3 ; i++){
for(int a = 0 ; a < 3 ; a++){
if(pitcher[i] == batter[a]){
if(i == a){
strike = strike + 1;
result.setText("스트라이크!!");
}else{
ball4 = ball4 + 1;
result.setText("볼~~ ㅠ_ㅠ");
}
}
}
}
//진행상황 저장 & 표시
ingGame = ingGame + (ballnumber+1) + " 회 : " + batter[0] + " - " + batter[1] + " - " + batter[2] + " [" + String.valueOf(strike)+ "스트라이크 / " + String.valueOf(ball4)+ "볼" + "]"+"\n";
ingGameArea.setText(ingGame);
System.out.println("스트라이크 : " + strike + " / 볼넷 : " + ball4 ); //스트라이크,볼넷 횟수 표시
ballnumber = ballnumber + 1; //공격횟수 증가
//게임종료 조건
if(ballnumber > 9){
status = 3;
EndGame();
status = 0;
}
if(strike > 2){
status = 1;
EndGame();
status = 0;
}
if(ball4 > 3){
status = 2;
EndGame();
status = 0;
}
}
}
//==============================================================================
}catch (NumberFormatException asd){
JOptionPane.showMessageDialog(Baseball.this, "0~9까지의 숫자를 입력해주세요." , "경고" , JOptionPane.INFORMATION_MESSAGE );
result.setText("0~9까지의 숫자를 입력해주세요."); //숫자입력 확인
num1.setText("");
num2.setText("");
num3.setText("");
}
}
});
btnNewButton.setBounds(174, 100, 97, 23);
contentPane.add(btnNewButton);
//마운드에 오르기 클래스======================================================================================================
button = new JButton("마운드에 오르기");
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
result.setText("준비");
//공격횟수,볼넷,스트라이크 초기화(EndGameClass)
EndGame();
//랜덤 숫자 3개 생성
Random r = new Random(); //random class 선언
//겹치지 않는 3개의 숫자 생성하여 pitcher 변수에 넣음
for(int i=0 ; i < 3 ; i++){
pitcher[i] = r.nextInt(10);
for(int a = 0 ; a < i ; a++){
if(pitcher[i] == pitcher[a]){
i--;
}
}
}
System.out.print(pitcher[0]);
System.out.print(pitcher[1]);
System.out.println(pitcher[2]);
}
});
button.setBounds(61, 10, 158, 23);
contentPane.add(button);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(12, 136, 259, 188);
contentPane.add(scrollPane);
ingGameArea = new JTextArea();
scrollPane.setViewportView(ingGameArea);
result = new JLabel("진행상황");
result.setFont(new Font("굴림", Font.BOLD, 14));
result.setHorizontalAlignment(SwingConstants.CENTER);
result.setBounds(12, 43, 259, 48);
contentPane.add(result);
}
//경기종료 클래스선언======================================================================================================
public void EndGame(){
if(status == 0){
result.setText("경기준비");
num1.setText("");
num2.setText("");
num3.setText("");
ingGameArea.setText("");
}
if(status == 1){
result.setText("3진 아웃!! 경기끝!");
ingGame = ingGame +"정답 : " + pitcher[0] + " - " + pitcher[1] + " - " + pitcher[2];
ingGameArea.setText(ingGame);
}
if(status == 2){
result.setText("포볼!! 경기끝!");
ingGame = ingGame +"정답 : " + pitcher[0] + " - " + pitcher[1] + " - " + pitcher[2];
ingGameArea.setText(ingGame);
}
if(status == 3){
result.setText("경기시간 종료");
ingGame = ingGame +"정답 : " + pitcher[0] + " - " + pitcher[1] + " - " + pitcher[2];
ingGameArea.setText(ingGame);
}
pitcher[0] = 0; pitcher[1] = 0; pitcher[2] = 0;
batter[0] = 0; batter[1] = 0; batter[2] = 0;
strike = 0;
ball4 = 0;
ballnumber = 0;
ingGame = "";
}
}
결과물
'JAVA' 카테고리의 다른 글
Socket, ServerSocket 기본실습 : 서버에 접속하기 (0) | 2013.02.28 |
---|---|
Socket, ServerSocket 기본실습 : 포트 개방여부 스캐너 (0) | 2013.02.28 |
JTable 기본 실습 (0) | 2013.02.08 |
스윙 관련 강의자료 (pdf) (0) | 2013.02.07 |
JOptionPane 기본 실습 -메세지창 띄우기 (0) | 2013.02.07 |