Cute Running Puppy

Language/c

c언어) 야구 게임 만들기

R.silver 2021. 5. 6. 16:55
반응형

지금까지 배운 내용을 가지고 간단한 게임을 만들어보았습니다. 

 

규칙

  • 중복되지 않는 0~9 사이의 수를 SIZE의 수만큼 가져옴 - 아래 코드의 SIZE의 값은 3
  • 사용자가 SIZE개의 정수를 입력한 후
    • 랜덤으로 설정된 수와 위치까지 맞으면 strike
    • 수는 맞았으나 위치가 다르면 ball
    • 맞추지 못하였으면 out 

예시

SIZE == 3

컴퓨터가 랜덤으로 가져온 수: 726

입력 1: 123 -> strike: 1, ball: 0, out: 2

입력 2: 267 -> strike: 0, ball: 3, out: 0

입력 3: 726 -> strike: 3, ball: 0, out: 0

--게임 종료 --

 

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 3
int main (void)
{
        int answer[SIZE];  //정답 저장
        int user[SIZE];  //사용자가 입력한 답안 저장
        int i, j, c = 0;
        int strike = 0, ball = 0, out = SIZE;  //점수판

        srand((unsigned int)time(NULL));  //랜덤 함수 계속 중복되지 않도록 

        for (i = 0; i < SIZE; i++)  //answer[SIZE]에 랜덤 값 저장하기
        {
                answer[i] = rand() % 9;  //0 ~ 9의 랜덤한 자연수 뽑기
                for (j = 0; j < i; j++)
                {
                        if (answer[j] == answer[i])  //중복된 값 있으면 
                                answer[i] = rand() % 9;  //다시뽑기
                }
         
        } 
        do
        {
                strike = 0, ball = 0; out = SIZE;  //점수판 초기화

                printf("input %d num: ", SIZE);

                for (i = 0; i < SIZE; i++)
                       scanf("%d", &user[i]);  //user[SIZE]에 사용자 값 입력

                for (i = 0; i < SIZE; i++)  //컴퓨터가 생성한 값과 비교
                {                       
                        for(j = 0; j < SIZE; j++) 
                        {
                                if (answer[i] == user[j])  //같은 값이 있을 때
                                {
                                        if (i == j)  //위치까지 같다면
                                        {
                                                strike += 1;  //strike는 1증가
                                                out -= 1;  //out은 1 감소
                                        }
                                        else //숫자만 같다면
                                        {
                                                ball += 1;  //ball은 1증가
                                                out -= 1;  //out는 1감소
                                        }
                                }

                        }

                }

                c++;  //시도한 횟수 증가
                printf("<result %d> strike:%d, ball: %d, out: %d\n\n",c ,strike, ball, out);

        }
        while(strike != SIZE);  //strike == SIZE이면 종료 
        printf("success!\n");  //success! 출력 
}
반응형