number_baseball.cpp
number_baseball.exe
//[3-7-3] 숫자야구 2014.9.15 이용진 자리수,20번에서 맟추었다고 하는 에러,중복에러 수정
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int playgame();
int make_num();
char com[4]="123";
int main()
{
int result;
char ch;
while(1)
{
make_num();
printf("================================\n");
printf("숫자야구 게임(3자리수 맞추기)\n");
printf("================================\n");
result=playgame();
printf("\n%d 번에 맞춤\n\n계속하시겟습니까? (y/n)",result);
ch=getch();
if(ch=='n')
{
puts("");
break;
}
else
{
system("cls");
}
}
return 0;
}
int make_num()
{
srand(time(NULL));
int x;
while(1)
{
x=rand()%899+100;
itoa(x,com,10);
if(com[0]==com[1] || com[0]==com[2] || com[2]==com[1])
{
continue;
}
else
{
return 0;
}
}
}
int playgame()
{
int count=0;
int strike=0,ball=0;
char user[4];
for(;;)
{
count++;
printf("%d번째 3자리수: ",count);
scanf("%s",&user);
if(user[0]==NULL || user[3]!=NULL) //숫자면 계산이 쉬워지지만 문자인 경우 사용
{
printf("잘못입력(3자리수를 입력하세요)\n");
count--;
continue;
}
if(user[0]==user[1] || user[1]==user[2] || user[0]==user[2])
{
printf("잘못입력(중복금지)\n");
count--;
continue;
}
fflush(stdin);
strike=ball=0;
for(int i=0;i<3;i++)
{
if(user[i]==com[i])
{
strike++;
}
}
if(user[0]==com[1] || user[0]==com[2])
{
ball++;
}
if(user[1]==com[0] || user[1]==com[2])
{
ball++;
}
if(user[2]==com[0] || user[2]==com[1])
{
ball++;
}
if(strike>2)
{
break;
}
printf("%d strike,%d ball\n",strike,ball);
strike=ball=0;
if(count==10)
{
printf("=======================\n");
printf("첫번째 숫자 (%c x x)\n",com[0]);
printf("=======================\n");
}
else if(count==15)
{
printf("=======================\n");
printf("두번째 숫자 (%c %c x)\n",com[0],com[1]);
printf("======================\n");
}
else if(count==20)
{
printf("=======================\n");
printf("정답: %s\n",com);
printf("=======================\n");
printf("탈락\n");
return 0;
}
}
return count;
}