2.6 랜덤값을 얻어보자
게임제작에 필요한 난수값을 얻기 위한 함수. 반복할때마다 동일한 값이 아닌 계속해서 다른값이 필요한 부분에서 사용하게 된다. C언어 자체에서의 난수 함수도 있지만 DX라이브러리를 위한 난수 함수는 GetRand함수이며 레퍼런스는 여기를 확인 하자.
선언 |
int GetRand( int RandMax ) ; |
기능 |
난수값 획득 |
인수 |
RandMax : 반환되는 난수값의 최대치 |
반환값 |
0부터 RandMax에서 설정된 수치 사이의 난수 |
사용예제
int a = GetRand(3); |
단, 난수는 정확하게 말하면 난수처럼 보이는 수일 뿐이다. 이 난수를 정말 랜덤한 값으로 보이게 하기 위해 초기값을 설정하여 난수값을 얻어낸다. 다시말하면 초기값이 변하게 되면 난수값도 역시 변하게 되는것이다. 보통은 현재의 시각을 밀리초단위로 바꾼 값을 초기값으로 많이 사용한다.
- 난수의 초기값이 같으면 같은 난수가 생성된다.
- DX라이브러리에서는 초기값를 지정하지 않으면 자동적으로 각자 다른 초기값를 부여하기 때문에 자연스럽게 난수값이 획득가능.
난수의 초기값을 설정하기 위해서 SRand함수를 사용한다. 임의의 int형 값을 인수로 사용하기 때문에 별도의 설명은 하지 않는다.
사용예제
#include <DxLib.h> int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); int Random[8]; int Green = GetColor( 0, 255, 0 ); SRand( 123456 ); // 난수의 초기값 설정 Random[0] = GetRand( 100 ); // 0~100사이의 난수 생성 Random[1] = GetRand( 100 ); Random[2] = GetRand( 100 ); Random[3] = GetRand( 100 ); SRand( 123456 ); // 난수의 초기값 재설정 Random[4] = GetRand( 100 ); // 0~100사이의 난수 생성 Random[5] = GetRand( 100 ); Random[6] = GetRand( 100 ); Random[7] = GetRand( 100 ); while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){ for( int i=0; i<8; i++ ){ DrawFormatString( 0, 20*i, Green, "%d", Random[i] ); } } DxLib_End(); return 0; } |
실행결과
처음 4개의 랜덤치는 난수생성이 이루어지고 있었지만 초기값을 다시 설정해준 이후 처음 네개의 생성값과 동일한 난수값을 생성하는 모습을 확인 가능하다.
'DX라이브러리' 카테고리의 다른 글
2.8 이미지를 분할하여 로드 (0) | 2014.12.23 |
---|---|
2.7 효과음 재생 (0) | 2014.12.23 |
2.5 텍스트 표현 (0) | 2014.12.23 |
2.4 가산블렌딩 (0) | 2014.12.23 |
2.3 알파블렌딩 (0) | 2014.12.23 |