카테고리 없음
Java 문제풀이. 야구게임. 랜덤한 숫자 맞추기 !
mim
2022. 1. 4. 19:53
반응형
문제
/*
* 숫자 야구게임 만들기 길이 4의 정수 배열을 만들고 각 인덱스에는 0 ~ 9까지의 중복되지 않는 난수를 저장한다.
* 4자리 숫자를 입력받아
* 스트라이크, 볼 등의 힌트를 주며 4자리 난수 숫자를 맞추는 게임이다.
* 숫자와 자리가 모두 맞는 경우 스트라이크, 숫자는 맞지만 자리는
* 맞지 않는 경우는 볼 이다. 예) 9183 으로 난수가 발생하면 9356 입력 시 1S 1B이다.
*
* 단, 기회는 총 10번이며, 10번 이내에 맞추는 경우 "정답입니다." 출력 후 게임 종료 10번의 기회가 모두 소진 되면
* "10번의 기회를 모두 소진하셨습니다. 프로그램을 종료합니다." 출력 후 종료
*
* 또한 4자리의 정수를 입력하지 않은 경우에는 "4자리의 정수를 입력해야 합니다." 출력 후 입력을 다시 받을 수 있되 횟수는 차감하지
* 않는다.
*
* -- 프로그램 예시 (난수 7416 의 경우) --
*
* 10회 남으셨습니다. 4자리 숫자를 입력하세요 : 1234 아쉽네요 0S 2B 입니다. 9회 남으셨습니다. 4자리 숫자를 입력하세요 :
* 5678 아쉽네요 0S 2B 입니다. 8회 남으셨습니다. 4자리 숫자를 입력하세요 : 7416 정답입니다.
*/
작성한 코드)
public class Application {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] random = new int[4];
/*랜덤 숫자 발생*/
for (int i = 0; i < 4 ; i++) {
random[i] = (int)(Math.random() * 10);
for (int j = 0; j < i; j++) {
if (random[i] == random[j]) {
i--;
}
}
}
System.out.print("실행확인용 random 값 : ");
for(int i : random) {
System.out.print(i);}
System.out.println();
int tryNum = 10; //시도횟수
int s = 0; //스트라이크
int b = 0; //볼
while(true) {
System.out.println(tryNum + "회 남으셨습니다.");
System.out.print("4자리의 정수를 입력하세요 : ");
String str = sc.nextLine();
/*4자리 정수인지 확인*/
if(str.length() != 4) {
System.out.println("4자리의 정수를 입력해야 합니다.");
continue;
}
/*입력한 값을 배열에 저장 */
int[] answer = new int[4];
for (int i = 0; i < 4; i++) {
char ch = str.charAt(i); // 문자열을 문자로
answer[i] = ch - 48;
// 문자를 배열에 값저장 유니코드 int로 값 변환하려면 -48 하기!
}
/*스트라이크 확인*/
for (int i = 0; i < 4; i++) {
if (answer[i] == random[i]) {
s++; //스트라이크
b--; // 볼 중복제거
}
/*정답인 경우*/
if(s==4) {
System.out.println("정답입니다.");
return;
}
}
/*볼 확인*/
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (answer[i] == random[j]) {
b++; //볼
}
}
}
/*정답이 아닌 경우*/
if(s!=4) {
System.out.println("아쉽네요 " + s + "S, " + b + "B 입니다.");
tryNum--; // 시도횟수 -1회
s = 0; // 스트라이크 개수 초기화
b = 0; // 볼 개수 초기화
/*시도 횟수가 0번이 되면 게임 종료*/
if (tryNum==0) {
System.out.println("10번의 기회를 모두 소진하셨습니다. 프로그램을 종료합니다.");
break;}
}
}
}
}
되게 재밌게 푼 문제 ㅎ
반응형