본문 바로가기
프로그래머의 길/C & C++

C로 만든 숫자 야구 프로그램

by 제이콥케이 2007. 3. 24.
반응형

#include <stdio.h>
#include <windows.h>
#include <time.h>

int main()
{
 int baseball[4];
 int user[4];
 int i, j, flag=1;
 int st, ball, out=0;

 srand(time(NULL));

 baseball[0] = rand() % 10;

 while(baseball[0] == 0)  // 처음값은 0이 들어가면 안된다.
  baseball[0] = rand() % 10;
 
 for(i=1; i<4; i++)
 {
  baseball[i] = rand() % 10;

  // 앞의 값과 비교하여 다른 값을 저장한다.
  while(1) // 같은 값이 나오면 계속 다시 랜덤 수 만들어 비교
  {
   flag=0;
   for (j=0; j<i; j++)
   {
    if (baseball[j] == baseball[i])
    {
     baseball[i] = rand() % 10;    
     flag=1;
     break;
    }   
   }
   if (flag == 0)
    break;
  }
 }

/*
 for(i=0; i<4; i++)
 {
  printf("%d  ", baseball[i]);
  //printf("%d  ", user[i]);
 }
 printf("\n");
*/

 printf("숫자 야구 게임 스타트!!\n");
 printf("포아웃이면 게임 종료!!\n");
 printf("포기는 음수를 입력!!\n\n");

 while(1)
 {
  printf("숫자를 입력하세요(4자리) : ");
  for (i=0; i<4; i++)
  {
   scanf("%d", user+i);
   if (user[i] < 0)
   {
    printf("\n그것도 못맞춰? 게임종료!!\n");
    printf("정답은 : ");
    for(i=0; i<4; i++)
     printf("%d ", baseball[i]);    
    printf("입니다.\n");
    exit(1);
   }
  }

  printf("입력한 숫자 카운트 결과  : ");
  st = ball = 0;
  for(i=0; i<4; i++)
  { 
   for (j=0; j<4; j++)
   {
    if(user[i] == baseball[j])
    {
     if (i==j)
      st++;
     else
      ball++;
    }   
   }  
  }

  // 카운트에 맞는 출력문
  if (st==0)  
  {
   if (ball==0)
   {
    out++;
    printf("%d아웃!\n\n", out);
   }
   else
    printf("%d볼~\n\n", ball);
  }
  else if (ball==0)
   printf("%d스트라이크!\n\n", st);
  else
   printf("%d스트라이크! %d볼~\n\n", st, ball);


  // 게임 종료 상황
  if (out == 4) // 4아웃일 경우!! 
  {
   printf("\n게임이 종료되었습니다.\n");
   printf("정답은 : ");
   for(i=0; i<4; i++)
    printf("%d ", baseball[i]);    
   printf("입니다.\n");
   exit(1);
  }

  if (st == 4) // 정답을 맞출 경우!!
  {
   printf("축하합니다.!! 정답입니다!!\n");
   printf("게임이 종료되었습니다.\n");
   exit(1);
  }
 }
 return 0;
}

반응형