Daily coding
Java Basic : day 8 - Example 01: Baseball 게임 클래스로 구현하기 본문
Language/Java_basic
Java Basic : day 8 - Example 01: Baseball 게임 클래스로 구현하기
sunnnkim 2019. 11. 27. 20:08package day8.example;
import java.util.Random;
import java.util.Scanner;
public class Baseball {
//TODO : Field
private int[] rNum;
private int[] uNum;
private boolean[] _switch;
private boolean clear;
private int ball;
private int strike;
private int count=0;
// 생성자
public Baseball() {
rNum = new int[3]; // 난수 세개 담을 배열 생성
uNum = new int[3]; // 유저 입력 담을 배열 생성
_switch = new boolean[10]; // 중복검사할 boolean 배열
setRandomNumber(); // 초기화할 때 난수 생성함
clear = false;
}
// 테스트용 getter
public int[] getrNum() {
return rNum;
}
public void printrNum() {
System.out.print("[ ");
for (int i = 0; i < rNum.length; i++) {
System.out.print(rNum[i] + " ");
}System.out.print(" ]\n");
}
public void printuNum() {
System.out.print("[ ");
for (int i = 0; i < uNum.length; i++) {
System.out.print(uNum[i] + " ");
}System.out.print(" ]\n");
}
// 난수 생성하는 메소드
private void setRandomNumber() {
Random r = new Random();
int ran;
int w = 0;
while (w < 3) {
ran = r.nextInt(10);
if (_switch[ran] == false) {
_switch[ran] = true;
this.rNum[w] = ran + 1;
w++;
}
}
}
// private
// 유저 입력받기
private void setUserNumber(int num1, int num2, int num3) {
this.uNum[0] = num1;
this.uNum[1] = num2;
this.uNum[2] = num3;
}
// public
// 유저 입력 받는 인터페이스
public void printUserMenu() {
Scanner sc = new Scanner(System.in);
// user input
int num[] = new int[3];
while (true) {
for (int i = 0; i < uNum.length; i++) {
System.out.print((i + 1) + "번째 수 = ");
num[i] = sc.nextInt();
}
if (num[0] != num[1] || num[0] != num[2] || num[1] != num[2]) {
break;
}
System.out.println("잘못입력했습니다");
}
setUserNumber(num[0],num[1],num[2]);
sc.close();
}
// private
// 답이 맞는지 비교하기
private boolean getScore() {
int score = strike();
if(score == 3) return true;
return false;
}
// 게임하기
public void playGame() {
System.out.println("< Baseball Game > ");
while (!this.clear && count < 10) {
count++;
printUserMenu();
this.clear = getScore();
if(!clear) { // 성공시
ball();
strike();
}
printResult();
}
printResult();
}
public void printResult() {
if(this.clear) {
System.out.println("정답입니다!");
System.out.println(count + "회 만에 맞췄습니다.");
return;
}
if( count == 10) {
System.out.println(" 실패 !!");
System.out.println("기회를 모두 사용했습니다.");
System.out.print("정답 : ");
printrNum();
}
else {
System.out.println(ball + " ball" );
System.out.println(strike + " strike" );
}
}
// ball
private int ball() {
this.ball = 0;
for (int i = 0; i < rNum.length; i++) {
for (int j = 0; j < rNum.length; j++) {
if (rNum[i] == uNum[j] && i != j) {
ball++;
}
}
}
return ball;
}
// strike
private int strike() {
this.strike = 0;
for (int i = 0; i < rNum.length; i++) {
if (rNum[i] == uNum[i]) {
strike++;
}
}
return strike;
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 8 - Example 03: 파일 입출력 / 생성 클래스 구현하기 (0) | 2019.11.27 |
---|---|
Java Basic : day 8 - Example 02: Sorting 정렬 클래스 구현하기 (0) | 2019.11.27 |
Java Basic : day 8 - OOP: this 참조 (0) | 2019.11.27 |
Java Basic : day 8 - OOP: 생성자 (0) | 2019.11.27 |
Java Basic : day 8 - OOP: Class 특징 - 1. 은닉화 (0) | 2019.11.27 |