야구게임
야구게임 만들기
학창시절 노트에 임의로 숫자를 적고 그 숫자를 맞추는 게임을 해본적이 있을 것이다. 친구와 했던 게임을 컴퓨터를 상대로 즐겨보기로 한다.
- 컴퓨터는 중복되지 않는 무작위 숫자 3개를 생성한다. ( 1 ~ 9 )
- 숫자만 맞추면 볼, 숫자와 위치를 맞추면 스트라이크로 힌트를 준다.
- 5번의 기회안에 숫자를 맞추면 승리, 못 맞추면 패배한다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
printf("**** 야구게임을 시작합니다! ****\n\n");
printf("컴퓨터가 숫자를 정했습니다.\n");
printf("숫자를 입력하세요.\n");
int inputNum[3] = { 0 };
int randNum[3] = { 0 };
int overlap = 1;
int isGameover = 1;
int life = 5;
srand(unsigned int(time(NULL)));
while (overlap)
{
for (int i = 0; i < 3; i++)
{
randNum[i] = rand() % 9 + 1;
}
if (randNum[0] == randNum[1] || randNum[0] == randNum[2] || randNum[1] == randNum[2])
{
printf("숫자가 중복되어 다시 선택합니다.");
overlap = 1;
}
else
{
overlap = 0;
}
}
while (isGameover)
{
scanf_s("%d %d %d", &inputNum[0], &inputNum[1], &inputNum[2]);
int ball = 0;
int strike = 0;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (randNum[i] == inputNum[j])
{
if (i == j)
{
strike++;
}
else
{
ball++;
}
}
}
}
if (strike == 3)
{
printf("정답입니다. 플레이어 승리!\n");
isGameover = 0;
}
else
{
printf("%d 스트라이크, %d 볼\n", strike, ball);
life--;
printf("남은 기회 : %d\n\n", life);
if (life <= 0)
{
printf("패배했습니다. 정답 : %d %d %d\n\n", randNum[0], randNum[1], randNum[2]);
isGameover = 0;
}
}
}
}
숫자의 중복을 방지하는 코드를 개선할 여지가 있다.