야구게임이란 임의의 3개의 숫자를 생각한 뒤에 그 숫자를 맞추는 게임이다.
숫자를 입력했을때, 숫자의 순서와 값이 맞으면 Strike
값이 맞았지만 , 순서가 틀렸을때 ball로 힌트를 주게 된다.
가령 임의의 숫자로 3, 6, 9 라는 숫자가 답일 경우..
3, 6, 9
--------
1, 2, 3 --- > 3 이 맞았지만, 순서가 틀리므로 1 ball 이 된다.
3, 4, 5 --- > 3 이 맞고, 순서도 같으므로 1strike 이다.
6, 9, 3 --- > 모든 값이 있지만, 순서가 다르므로 3 ball 이다.
이런 식으로 3 strike 를 만드는 것이 목표인 게임.
------------------------------------------------------------------------------------
무엇보다 필요한 건 임의의 숫자를 정하는 방법인데,
임의의 숫자를 구하기 위해 Random 함수를 이용한다.
랜덤함수 rand() 를 사용하기 위해서는 <stdlib.h>를 첨부 시켜줘야 한다.
#include <stdlib.h>
printf("%d",rand()) 난수의 생성 범위는 [0, n] 사이인데, n 은 <stdlib.h> 파일 내에 있는
RAND_MAX 상수에 의해 정의된다. 비쥬얼 C++ 에서는 0 ~ 32767 사이의 난수를 생성한다.
생성되는 난수의 범위 따로 0~ n 사이로 정해주기 위해서는
rand() % n + 1 라는 수식을 이용한다.
rand() 함수를 그냥 사용하면 항상 같은 수만 반복해서 발생하는데, 이를 해결하기 위해
랜덤함수의 SEED 값을 매번 다르게 주어야 한다.
시드값을 주기 위해서 srand() 함수를 호출하게 되는데, 이 시드값은 일반적으로 time()
으로 반환되는 값을 srand()의 인자로 활용하게 됨으로 써 달리 줄 수 있다.
time(NULL) <-- 경과한 시간을 초 단위로 반환하는 함수. <time.h> 이 필요하다.
즉 시드값을 달리 주기위해, srand(time(NULL)) 호출하면 된다.
Ex) 0에서 45 사이의 난수 6개를 생성하기 위해서는 다음과 같이 하면 된다.
------------------------------------------------
srand(time(null));
for(i = 0; i< 6; i++)
{
num = rand()%45 + 1;
printf("%d",num);
}
------------------------------------------------
** 터보 C random 함수 = 비주얼 C에서는 rand 함수
** 터보 C randomize 함수는 = 비주얼 C 에서는 srand 함수
스무살 피부 슈즈붐 아쿠아블루 스쿨2001 그녀의 방 레이지본 행복한 땡글이 추억저장소 일상은 카메라모드 그린벤치
댓글을 달아 주세요