2010년 4월 17일 토요일

숫자 야구 게임~

#include // rand(), srand() 함수를 사용하기 위해서 인클루드 함
#include // time() 함수를 사용하기 위해서 인클루드 함
#include
#include

int random(int);

void ran (int num[4]);
void guess(int num1[4]);

void main()
{
int num[4];

srand(time(0)); //매번 실행 할때 마다 같은 순서의 난수값을 발생시키 않기 위해 현재 시간값을 준다.

ran(num); //난수발생 함수 호출

/*//4개 난수 출력결과
for(i=0 ; i<4; i++){
printf("%d",num[i]);
}*/

printf("\n");
printf(" 신 프로야구!! 숫자 4개를 누르세요^^ \n\n");
guess(num); //맞춰보는 함수 호출
}

void ran(int num[4]){

int i,j, res1,temp;

for(i=0 ; i<4; i++){

num[i] = random(10);
}

res1 = random(4); //같은 난수가있을때 바꿀 난수 하나 미리 선언

for(i=0 ; i<3; i++){

for(j=i+1 ; j<4 ; j++){

if(num[i] == num[j]){

if(num[j] == res1){ //새로 받은 난수가 바꿀려는 수와 같을때

while(1){ //같지않을때까지 루프을 돌리면서 난수 발생

res1 = random(10);

if(num[j] != res1){ //같지않으면 그난수를 선언 핳고 루프 탈출
num[j] = res1;
break;
}//안쪽 if 끝
}//while끝
}//if끝

else { //바꿀려는 수와는 다른데 나머지와 같을때...
while(1){
temp = 0;
for(i=0; i<4;i++){
if(num[i] == res1){ temp++;} //나머지랑같을때
}

if(temp == 0) { num[j] = res1; break;}//나머지숫자와 같은게 없으면 선언 후 빠져나간다.
else { res1 = random(10); }
}//while끝
}//else끝
}//if끝


else{ //두수는 다른데 나머지랑 같을 경우

while(1){
temp = 0;
for(i=0; i<4;i++){
if(num[i] == res1){ temp++;} //나머지랑같을때
}

if(temp == 0) { num[j] = res1; break;}//나머지숫자와 같은게 없으면 선언 후 빠져나간다.
else { res1 = random(10); }
}//while 끝
} //else 끝

}//안쪽 for문 끝

}//바깥 for문 끝
}

void guess(int num1[4])
{
char set[4];
int i,j;
int strike=0, ball=0, count=1;

while(1)
{
printf("# %3d차 : ",count);

for(i=0 ; i<4 ; i++){

set[i] = getche();
}

for(i=0 ; i<4 ; i++){
for(j=0 ; j<4 ; j++){

if(num1[i]==(set[j]-'0')){ //두배열 비교 같은수가 있을때

if(i==j){ strike++; } // 숫자 같고 자리도 같으면 스트라이크
else { ball++; } // 숫자 같고 자리 틀리면 볼

}
}
}

//같은 숫자가 없을경우 4개일 경우 아니면 머가 있을경우

if(strike == 0 && ball == 0) { printf(" NO!! 그런숫자 없다니까!!\n"); }

else if(strike == 4){
printf(" Ok!!! \n");

if(count <= 10) {printf("열번 만에 역시 훌륭해 훌륭하구만~ \n");}

printf("\n Game Over !!!!! \n아무키나 누르면 끝납니다~^^\n");
getchar();

break;
}

else { printf(" %dS %dB \n",strike,ball); }

strike=0; ball=0; // 누적변수 초기화

count++;

/*재미를 위해~*/
if(count == 15) {printf(" 머리 삥글삥글 그거 안대~???\n");}
else if(count == 20) {printf(" 머 댈래~ 커서 머댈래~ 머대~~~\n");}
else if(count == 25) {printf(" 니 머리 개 쑤레기!! \n");}
}
}


int random(int n)
{
int res;
res = rand() % n; //0에서 n-1까지 난수 발생
return res;
}

댓글 없음:

댓글 쓰기