c언어 기본 강의를 수강하고 "내가 배운 기초들로 무엇을 만들 수 있을까?"라고 생각이 들었다. 하지만 혼자 생각으론 아무런 생각을 해낼 수 없었다. 그래서 교수님께 조언을 구했더니 과제를 내주셨다.
우선 야구게임을 만들어 보아라. 평소 온라인 게임을 즐겨하던 나는 부담감없이 도전 할 수 있었다. 단 소스는 보지 않은 상태로.
야구게임 룰은
1. 컴퓨터가 임의로 겹치지 않은 숫자 3개를 정한다.
2. 사용자가 숫자 3개를 입력한다.
3. 숫자만 맞으면 ball, 자리와 숫자도 맞으면 strike다.
4. 3 strike가 되면 게임종료
강의에서 컴퓨터가 임의로 숫자를 선택한다는 것을 몰랐기 때문에 이 부분은 찾아보았다.
rand이라는 함수가 있었다. random의 뜻이다. 이것은 임의로 고른다는 것이고 이 함수를 사용 하려면 헤더 #include<stdlib.h>가 필요하다.
rand()[0,n] 은 정수 0 ~n-1 까지 임의로 고르는 것이다.
그런데 몇번을 해도 같은 임의의 숫자가 나올 것이다. 그래서 필요한것이 srand(()time(NULL));
가 필요한데 time를 쓰려면 헤더 time.h가 필요하다.
그렇게 설정해주면 시간에따라 임의의 숫자가 계속 변한다.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int A[3];
int B[3];
int i=1;
int j,k;
int strike;
int ball;
do{
srand(time(NULL));
A[0]=rand()%10;
A[1]=rand()%10;
A[2]=rand()%10;
if((A[0]!= A[1]))
if((A[1] != A[2]))
if((A[0] != A[2]))
{
printf("Start Game\n");
break;
}
}while(1); //서로다른 숫자를 뽑기위해 계속 실행하기위해 do while 무한반복문을 하였다.
do{
printf("3개의 숫자 선택 :");
scanf("%d %d %d",&B[0],&B[1],&B[2]);
if((A[0]==B[0])&&(A[1]==B[1])&&(A[2]==B[2])) // 모두 같으면 게임끝
{
printf("game over \n");
break;
}
else //그렇지 않으면 반복문 실행
{
strike =0;
ball=0; // 변수 초기화 한 이유는 사용자가 게임도중에 시도한 횟수에따라 계속 증가를 막기위한 이유다.
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
if(A[j]==B[k]) // 처음에는 변수를 배열로 하지 않았는데 a,b,c,d,e,f 로 하면 조건이 너무 길어져서 일단 임의의 숫자랑 사용자가 선택한 숫자가 같은 조건을 만들었다.
{
if(j==k) //배열의 값도 같고 배열 숫서도 같으면 strike를 1추가 그렇지 않으면 ball추가
strike++;
else
ball++;
}
}
}
printf("%d번쨰 도전결과 : %d strike, %d ball !!\n\n",i,strike,ball);
}
i++;
}while(1);
}
댓글 없음:
댓글 쓰기