완성 코드
package javaAPI;
import java.util.Scanner;
//랜덤 숫자 발생해주는 클래스
class RandomNumMaker {
private int Answer1 = (int)(Math.random() * 10);
private int Answer2 = (int)(Math.random() * 10);
private int Answer3 = (int)(Math.random() * 10);
public RandomNumMaker() {
while(Answer2 == Answer1) {
Answer2 = (int)(Math.random() * 10);
}
while((Answer3 == Answer1) || (Answer3 == Answer2)) {
Answer3 = (int)(Math.random() * 10);
}
}
public int getAnswer1() {
return Answer1;
}
public int getAnswer2() {
return Answer2;
}
public int getAnswer3() {
return Answer3;
}
}
//게임설명 클래스
class HowGame {
//게임설명
public void howGameDisp() {
System.out.println("--------------------게임설명--------------------");
System.out.println("1. 정답의 경우 0~9 중에서 임의의 서로 다른 정수 숫자 3개가 생성되어 알 수 없는 순서로 배치됩니다. 0~9까지의 숫자 3자리를 입력하세요.");
System.out.println("2. 입력한 3개의 숫자 중, 숫자는 맞고 자리는 틀렸다면 N볼을, 숫자도 맞고 자리까지 맞았다면 N스트라이크 라고 알려줍니다.");
System.out.println("만약 정답이 123일 경우에 사용자가 045를 입력한다면 0스트라이크 0볼, 035를 입력한다면 0스트라이크 1볼. 이런 식입니다.");
System.out.println("그럼 게임을 시작해볼까요? (y/n)");
}
}
//게임진행 클래스
class OnGoingGame {
RandomNumMaker rnm = new RandomNumMaker();
//사용자의 답변을 담는 변수
int replyByUser1 = 0;
int replyByUser2 = 0;
int replyByUser3 = 0;
public void onGoingGame() {
Scanner sc = new Scanner(System.in);
rnm.getAnswer1();
rnm.getAnswer2();
rnm.getAnswer3();
int []getAnswerArr = new int[3];
//정답을 배열로 저장.
getAnswerArr[0] = rnm.getAnswer1();
getAnswerArr[1] = rnm.getAnswer2();
getAnswerArr[2] = rnm.getAnswer3();
//정답 여부를 저장하는 변수
boolean isAnswer = false;
//게임 도전 횟수를 저장하는 변수
int howManyChallenge = 0;
//게임진행
while(isAnswer == false) {
System.out.println("");
System.out.println("이제 0~9 사이의 정수 숫자 3개를 입력하세요");
System.out.println(">>> ");
replyByUser1 = sc.nextInt();
replyByUser2 = sc.nextInt();
replyByUser3 = sc.nextInt();
if (replyByUser1 == replyByUser2 || replyByUser1 == replyByUser3 || replyByUser2 == replyByUser3) {
System.out.println("서로 다른 숫자 3개를 입력하세요!");
continue;
}
//사용자 답변을 배열로 저장.
int [] replyByUserArr = new int[3];
howManyChallenge++;
replyByUserArr[0] = replyByUser1;
replyByUserArr[1] = replyByUser2;
replyByUserArr[2] = replyByUser3;
int strike = 0;
int ball = 0;
for (int i = 0; i < 3; i++) {
if (replyByUserArr[i] == getAnswerArr[i]) {
strike++;
} else {
for (int j = 0; j < 3; j++) {
if (i != j && replyByUserArr[i] == getAnswerArr[j]) {
ball++;
}
}
}
}
if(strike == 3) {
System.out.println("축하합니다!!! 😊😍");
isAnswer = true;
}
System.out.println("[ "+howManyChallenge + "번째 시도 ]");
System.out.println(strike + "스트라이크 " + ball + "볼");
}
sc.close();
}
}
//main 클래스
public class NumberGame{
HowGame hg = new HowGame();
OnGoingGame ogg = new OnGoingGame();
public static void main(String[] args) {
NumberGame fc = new NumberGame();
System.out.println("숫자야구 게임 시작 !!!");
System.out.println(" 1번.게임시작!\t 2번.게임설명\t 3번.게임종료");
Scanner sc = new Scanner(System.in);
int mode = sc.nextInt();
if (mode == 1) {
fc.ogg.onGoingGame();
}
else if (mode == 2) {
fc.hg.howGameDisp();
char reply2 = sc.next().charAt(0);
if(reply2 == 'y' || reply2 == 'Y') {
fc.ogg.onGoingGame();
}
else {
System.out.println("게임을 종료합니다.");
}
}
else if (mode == 3){
System.out.println("게임을 종료합니다.");
}sc.close();
}
}