#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 1~9 사이 숫자 중 n1, n2와 다른 무작위 수 생성
int generateNumber(int n1, int n2) {
int num;
do {
num = rand() % 9 + 1;
} while (num == n1 || num == n2);
return num;
}
// 안내 문구 출력하고 사용자 입력받기
int getInput(char* prompt) {
int num;
printf("%s", prompt);
scanf("%d", &num);
return num;
}
// 스트라이크, 볼 판정 및 출력
int checkGuess(int com1, int com2, int com3, int user1, int user2, int user3) {
int strike = 0;
int ball = 0;
if (user1 == com1) strike++;
if (user2 == com2) strike++;
if (user3 == com3) strike++;
if (user1 == com2 || user1 == com3) ball++;
if (user2 == com1 || user2 == com3) ball++;
if (user3 == com1 || user3 == com2) ball++;
printf("결과: %d 스트라이크, %d 볼\n\n", strike, ball);
return strike;
}
// 게임 전체 흐름 제어
void playGame() {
int com1, com2, com3;
int user1, user2, user3;
int round = 0;
int strike;
printf("⚾ 숫자 야구 게임을 시작합니다!\n");
com1 = generateNumber(0, 0);
com2 = generateNumber(com1, 0);
com3 = generateNumber(com1, com2);
do {
round++;
// 사용자 입력 반복: 유효성 검사 포함
do {
user1 = getInput("첫 번째 숫자 (1~9): ");
} while (user1 < 1 || user1 > 9);
do {
user2 = getInput("두 번째 숫자 (1~9): ");
} while (user2 < 1 || user2 > 9 || user2 == user1);
do {
user3 = getInput("세 번째 숫자 (1~9): ");
} while (user3 < 1 || user3 > 9 || user3 == user1 || user3 == user2);
strike = checkGuess(com1, com2, com3, user1, user2, user3);
} while (strike < 3);
printf("3 스트라이크! 정답입니다! 총 %d 라운드 만에 성공!\n", round);
}
int main() {
srand(time(NULL));
playGame();
return 0;
}