U E D R , A S I H C RSS

Number Baseball Game/jeppy

~cpp 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <conio.h> 

void make_number(char *p); /* 임의 세자리 숫자를 생성하는 함수 */
void check_num(char *dest, char *src); /* 입력된 숫자와 비밀숫자를 맞춰보는 함수 */

void main() { 
	char hidden_num[3] = {'\0',}; 
	char number_log[10][4] = {'\0',}; 
	int i; 
	char num[3];
	clrscr(); 
	// make hidden_number; 
	make_number(hidden_num); 
	for (i=0; i<10; i++) { 
		printf("%d input number : ", i+1); 
		scanf("%s", &num); 
		if (num[0] == num[1] || num[0] == num[2] || num[1] == num[2])
		{
			printf(" 중복된 숫자를 입력하시면 안됩니다. 다시 입력해주세요.\n");
			i--;
		}
		else strncpy(number_log[i], num, 3);
		//printf("%d : %s\n", i, number_log[i]);
		check_num(number_log[i], hidden_num);
	}
	printf("You lose~\nThe answer is %c%c%c", hidden_num[0], hidden_num[1], hidden_num[2]);
} 

void make_number(char *p) { 
	int number[3];
	int i, temp_i, num, j; 
	randomize(); 
	printf("Make number..\n"); 
	for(i=0; i<3; i++) { 
		temp_i=i; 
		num = rand() % 10; 
		if (i<1) number[i] = num; 
		else
			for (j=0; j<temp_i; j++)
				if (number[j]==num) i--; 
				else number[i] = num; 
		p[i] = (char) number[i] + 48;
	}
	
	//printf("%c %c %c \n", p[0], p[1], p[2]); 
	//printf("%d %d %d \n", number[0], number[1], number[2]); 
} 

void check_num(char *dest_num, char *src_num) {
	int i, j, k;
	int strike = 0;
	int ball = 0;
	for (i=0; i<3 ;i++ )
	{
		for (j=0; j<3 ;j++ ) {
			if (dest_num[i] == src_num[j])
				if (i == j) strike++;
				else ball++;
		}
	}
	if (strike == 3) {
		printf("You win~!!\n");
		exit(-1);
	}
	else
		if (strike == 0 && ball == 0)
			printf("out!!\n");
		else printf("%dstrike %dball\n", strike, ball);
}

/* 지화니네 집에서 할일없이 뒹굴거리다가 ZeroWiki에서 보고 함 해봤음 --v 
    음.. 근데 역시 플밍을 안하다가 하니까 이것도 어렵넹..
	이것저것 해봐야겠당~ editplus 사용해도 꽤 괜찮넹.. 답답한 도스환경에서 해방~
	
	근데 스팩이 좀 이상한거 아닌가.. 중복된 숫자가 나오면 풀 수 있는건가? --a
	ex) 223 이라고 나오면 쉽게 풀 수 있을까? 흐음..
	
*/
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:52
Processing time 0.0102 sec