프로그래밍언어/C

[c] 숫자 야구 게임 만들기

dan2el 2021. 8. 25. 22:42
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int compare_s(int strike, int num1, int num2, int num3, int en_num1,
              int en_num2, int en_num3);
int compare_b(int ball, int num1, int num2, int num3, int en_num1, int en_num2,
              int en_num3);

int main(void) {
  int num1 = 0;
  int num2 = 0;
  int num3 = 0;
  int en_num1 = 0;
  int en_num2 = 0;
  int en_num3 = 0;
  int strike = 0;
  int ball = 0;
  int round = 0;

  srand((unsigned int)time(NULL));

  printf("숫자 야구 게임입니다. 3자리 숫자를 중복되지 않게 넣어주세요!\n");

  while (1) {
    en_num1 = rand() % 9 + 1;
    en_num2 = rand() % 9 + 1;
    en_num3 = rand() % 9 + 1;

    if (en_num1 != en_num2 && en_num1 != en_num3 && en_num2 != en_num3) {
      break;
    }
  }

  while (1) {

    round++;

    scanf("%d %d %d", &num1, &num2, &num3);

    while (1) {
      if (num1 == num2 || num1 == num3 || num2 == num3) {
        printf("중복된 숫자가 있습니다. 다시 입력해주세요.\n");
        scanf("%d %d %d", &num1, &num2, &num3);

      } else {
        break;
      }
    }

    strike = compare_s(strike, num1, num2, num3, en_num1, en_num2, en_num3);
    ball = compare_b(ball, num1, num2, num3, en_num1, en_num2, en_num3);

    printf("%d 회차 :\t%d스트라이크\t%d볼\n\n", round, strike, ball);

    strike = 0;
    ball = 0;

    if (en_num1 == num1 && en_num2 == num2 && en_num3 == num3) {

      printf("%d회차만에 승리하셨습니다!\n", round);

      return 0;
    }
  }

} // main

int compare_s(int strike, int num1, int num2, int num3, int en_num1,
              int en_num2, int en_num3) {

  if (en_num1 == num1) {
    strike++;
  }
  if (en_num2 == num2) {
    strike++;
  }
  if (en_num3 == num3) {
    strike++;
  }

  return strike;
}

int compare_b(int ball, int num1, int num2, int num3, int en_num1, int en_num2,
              int en_num3) {

  if (en_num1 == num2) {
    ball++;
  }
  if (en_num1 == num3) {
    ball++;
  }
  if (en_num2 == num1) {
    ball++;
  }
  if (en_num2 == num3) {
    ball++;
  }
  if (en_num3 == num1) {
    ball++;
  }
  if (en_num3 == num2) {
    ball++;
  }

  return ball;
}