#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int generateNumber();
int getInput();
int checkGuess();
void playGame();
//중복 없는 숫자 생성
int generateNumber(int num1, int num2) {
int gen_num;
while (1) {
gen_num = (rand() % 9) + 1;
if (gen_num != num1 && gen_num != num2) {
break;
}
}
return gen_num;
}
//숫자 입력 문구 출력 + 입력 받기
int getInput(int prompt) {
int get_num;
printf("%d 번째 숫자 (1~9): ", prompt);
scanf("%d", &get_num);
return get_num;
}
// 스트라이크 / 볼 계산 + 출력, 스트라이크 개수 변환
int checkGuess(int com1, int com2, int com3, int user1, int user2, int user3) {
int strikes = 0, balls = 0;
if (user1 == com1) strikes++;
if (user2 == com2) strikes++;
if (user3 == com3) strikes++;
if (user1 == com2 || user1 == com3) balls++;
if (user2 == com1 || user2 == com3) balls++;
if (user3 == com1 || user3 == com2) balls++;
printf("결과: %d 스트라이크, %d 볼\n", strikes, balls);
return strikes;
}
//야구 게임 실장 부분
void playGame() {
int com1, com2, com3;
int user1, user2, user3;
int round = 0;
com1 = generateNumber(0, 0);
com2 = generateNumber(com1, 0);
com3 = generateNumber(com1, com2);
printf("⚾ 숫자 야구 게임을 시작합니다!\n");
while (1) {
user1 = getInput(1);
user2 = getInput(2);
user3 = getInput(3);
if (user1 < 1 || user1 > 9 || user2 < 1 || user2 > 9 || user3 < 1 || user3 > 9) {
printf("1~9 사이의 숫자만 입력하세요.\n");
continue;
}
if (user1 == user2 || user1 == user3 || user2 == user3) {
printf("서로 다른 숫자를 입력하세요.\n");
continue;
}
round++;
if (checkGuess(com1, com2, com3, user1, user2, user3) == 3) {
printf("3 스트라이크! 정답입니다! 총 %d 라운드만에 성공!\n", round);
break;
}
}
}
int main(void) {
srand((unsigned)time(NULL));
playGame();
return 0;
}