Etc 숙제 야구게임
관련링크
본문
package javaAwtBaseball;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class BaseballMain {
private Frame mainFrame;
private Label headerLabel;
private Label msgLabel;
private Label statusLabel;
private Panel inputPanel;
private Panel controlPanel;
private Font font = new Font("Sans-Serif", Font.BOLD, 30); //Font("글자체",글자style(Font.BOLD, Font.ITALIC, Font.PLAIN)
public BaseballMain() {
prepareGUI();
}
public static void main(String[] args) {
BaseballMain awtControlDemo = new BaseballMain(); // 메인객체를(생성자호출)
awtControlDemo.showButton(); //
}
// 프레임을 만들고 레벨을 붙이고 버튼을 넣을 판넬을 깐다
private void prepareGUI() {
// Frame 에 대한 셋팅
mainFrame = new Frame("신나는 야구게임");
mainFrame.setSize(400, 400);
mainFrame.setLayout(new GridLayout(6, 1)); // 그리드셋팅
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});
// 상단에 있는 라벨
headerLabel = new Label();
headerLabel.setAlignment(Label.CENTER);
headerLabel.setText("Wellcom Baseball Center");
headerLabel.setFont(font);//폰트크기셋팅
//상황알림 라벨
msgLabel = new Label();
msgLabel.setAlignment(Label.CENTER);
msgLabel.setText("숫자를 3개 신속하게 넣으시오");
// 하단 상태값 라벨
statusLabel = new Label();
statusLabel.setText("Status Lable");
statusLabel.setAlignment(Label.CENTER);
statusLabel.setSize(350, 100);
inputPanel = new Panel();
inputPanel.setLayout(new FlowLayout()); // 따라가는 배치
controlPanel = new Panel();
controlPanel.setLayout(new FlowLayout()); // 따라가는 배치
mainFrame.add(headerLabel);
mainFrame.add(msgLabel);
mainFrame.add(inputPanel);
mainFrame.add(controlPanel);
mainFrame.add(statusLabel);
mainFrame.setVisible(true);
}
private void showButton() {
TextField userText = new TextField("",10);
userText.setFont(font);//폰트크기셋팅
Button btnOk = new Button(" 벳팅 ");
Button btnSubmit = new Button("계속하기");
Button btnCancel = new Button(" 종료 ");
btnOk.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
statusLabel.setText("Ok Button clicked.");
}
});
btnSubmit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
statusLabel.setText("Submit Button clicked.");
}
});
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
userText.addKeyListener(new KeyListener() {
int num_count;
String toString;
@Override
public void keyReleased(KeyEvent e) {
if (isStringDouble(userText.getText())) {//숫자인지 정검한다
num_count = userText.getText().length(); //길이판정
//중복검사
if (num_count == 3) {
// 게임판정
//컴퓨터 숫자 출력
//내숫자 출력
//판정문 출력
toString = Long.toString(num_count);
statusLabel.setText(toString);
} else {
statusLabel.setText("3자리 수를 입력하시요");
}
} else {
statusLabel.setText("숫자만 유효합니다");
}
}
@Override
public void keyPressed(KeyEvent e) {
statusLabel.setText("키를 눌렀다");
}
@Override
public void keyTyped(KeyEvent e) {
statusLabel.setText("어떤 이벤트냐");
}
});
inputPanel.add(userText);
controlPanel.add(btnOk);
controlPanel.add(btnSubmit);
controlPanel.add(btnCancel);
mainFrame.setVisible(true);
}
//숫자인지 검사하는 메소드(함수)
public static boolean isStringDouble(String s) {
try {
Double.parseDouble(s);
return true;
} catch (NumberFormatException e) {
return false;
}
}
}
////////////////////////////////////////////////////////////////////////////
import java.util.Scanner;
public class Ball_computer {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] pc = new int[3];
int[] my = new int[3];
int[] result = new int[10];
int count = 0;
boolean bool = false;
for (int j = 0; j < pc.length; ++j) {
do {
bool = false;
pc[j] = (int) (Math.random() * 10);
// 생성된 임의의 수가 같은 수일 때 다시 생성하도록.
for (int i = 0; i < j; ++i) {
if (pc[j] == pc[i]) {
bool = true;
}
}
} while (bool); // true일때 계속 do while문 실행 /false일때 빠져나감
// System.out.println(pc[j] + "\t"); // 정답 출력
} // end for i
while (true) {
int strike = 0, ball = 0;
System.out.println("3가지의 숫자를 입력하세요");
for (int i = 0; i < my.length; ++i) {
my[i] = scan.nextInt();
}
for (int i = 0; i < my.length; ++i) {
for (int j = 0; j < my.length; ++j) {
if (my[i] == pc[j]) { // 스트라이크 볼을 카운트
if (i == j) {
strike++;
} else {
ball++;
}
} // end if
} // end for j
} // end for i
System.out.println(strike + "strike," + ball + "ball");
count++;
if (strike == 3) {
break;
}
} // end while
System.out.println(count + "번만에 쓰트라이크 아웃!!");
}
}