#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define SIZE 3 //배열 크기

void numCheck(int *number, int *in);
void numRandom();

int in[SIZE]; //입력받을 값 전역변수로 선언
int number[SIZE]; //난수받을 값 전역변수로 선언
int strike; //스트라이크 갯수 저장할 카운트 전역변수로 선언
int ball; //볼 갯수 저장할 카운트 전역변수로 선언

void main()
{
	int i;

	numRandom(); //numRandom 호출
	printf("숫자 야구 게임! 3자리 숫자를 맞춰보세요.(0~9)\n");
	printf("ex) 1 2 3\n");
	while(1)
	{
		if (strike == 3) //정답이면 출력
		{
			printf("-----------\n");
			printf("All Strike!\n");
			printf("-----------\n");
			for (i=0; i<SIZE; i++)
			{
				printf("%d ",number[i]);
			}
			printf("\n-----------\n");
			break;
		}else{ //숫자 입력받는 부분
			scanf("%d %d %d",&in[0],&in[1],&in[2]);
			numCheck(number,in);
			printf(" : %d Strike, %d Ball 입니다.\n",strike,ball);
		}
	}
}

//중복되지 않는 난수 발생시켜서 저장하는 함수
void numRandom()
{
	int i,j,random;

	srand((unsigned) time(NULL));

	for (i=0; i<SIZE; )
	{
		random = rand()%10;
		//난수를 발생시켜 random변수에 저장

		for (j=0; j<i; j++)
		{
			if (number[j] == random) break;
			//number배열 첫번째부터 받은 난수와 비교해서 같으면 빠져나오기
		}
		
		if (i==j) //i와 j가 같으면
		{
			number[i++] = random;
			//number배열에 난수값 저장하고 i를 증가
		}
	}
}

//입력받은 숫자와 난수의 일치여부 체크하는 함수
void numCheck(int *number, int *in)
{
	int i,j;
	strike=0; // trike 0으로 초기화
	ball=0; //ball 0으로 초기화

	for (i=0; i<SIZE; i++)
	{
		for (j=0; j<SIZE; j++)
		{
			if (number[i] == in[j] && i==j)
				//숫자와 자릿수가 일치하면 strike 값 증가
			{
				strike++;
			}else if (number[i] == in[j] && i!=j )
				//숫자가 일치하고 자릿수가 틀리면 ball 값 증가
			{
				ball++;
			}
		}
	}
}

2007/04/26 21:56 2007/04/26 21:56

Trackback URL : http://mysilpir.net/trackback/193

Leave a comment

« Previous : 1 : ... 125 : 126 : 127 : 128 : 129 : 130 : 131 : 132 : 133 : ... 270 : Next »

블로그 이미지

일상의 이야기를 나누는 공간입니다.

- 실피

Calendar

    «   2009/01   »
            1 2 3
    4 5 6 7 8 9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30 31

Total 157576 hit (Today 21, Yesterday 185)

Admin Write Post