#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int generateNumber(int n1, int n2) {
int n0;
do {
n0 = rand() % 9 + 1;
} while (n0 == n1 || n0 == n2);
return n0;
}
int getInput(int order, int other1, int other2) {
int val;
while (1) {
if (order == 1) {
printf("첫 번째 숫자 (1~9): ");
} else if (order == 2) {
printf("두 번째 숫자 (1~9): ");
} else {
printf("세 번째 숫자 (1~9): ");
}
scanf("%d", &val);
if (val < 1 || val > 9) {
printf("1에서 9 사이의 숫자를 입력하세요.\n");
continue;
}
if (val == other1 || val == other2) {
printf("이전에 입력한 숫자와 중복됩니다. 다시 입력하세요.\n");
continue;
}
break;
}
return val;
}
int checkGuess(int com1, int com2, int com3, int user1, int user2, int user3) {
int strike = 0, ball = 0;
if (com1 == user1) strike++;
if (com2 == user2) strike++;
if (com3 == user3) strike++;
if (com1 == user2 || com1 == user3) ball++;
if (com2 == user1 || com2 == user3) ball++;
if (com3 == user1 || com3 == user2) ball++;
printf("결과: %d 스트라이크, %d 볼\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);
while (1) {
round++;
user1 = getInput(1, 0, 0);
user2 = getInput(2, user1, 0);
user3 = getInput(3, user1, user2);
strike = checkGuess(com1, com2, com3, user1, user2, user3);
printf("\n");
if (strike == 3) {
printf("3 스트라이크! 정답입니다! 총 %d 라운드 만에 성공!\n", round);
break;
}
}
}
int main() {
srand(time(NULL));
playGame();
return 0;
}