728x90
1. 난수 발생 만들기
- 난수의 필요성
= 게임은 항상 상대가 있어야 한다. 그 상대는 적이 될 수도 있고, 어떠한 목표가 될 수도 있다.
= 컴퓨터 판단의 기본이 되기 떄문이다.
- 난수 생성 함수
1) rnad()함수
= srand()로 인해 생성된 값을 바탕으로 난수를 생성하는 함수이다.
= 생성되는 난수의 범위를 지정하는 방법
: rand() % (마지막 값 - 시작 값 + 1) + 시작 값
2) srand() 함수
= 호출할 때 전달 받은 인자를 기반으로 난수를 초기화하는 함수이다.
= 정해진 순서가 안 나오도록 여러 개 만들어 매번 다른 난수표를 읽도록 만듦. 이 난수표를 선택하는 동작을 시드(Seed)라고 한다.
= 사용할때 srand((unsigbed int) time(NULL); 이런식으로 사용한다.
EX) 만약 100 ~ 200 안에 있는 난수를 얻고 싶다면? 아래 코드처럼 사용하면 된다.
#include <iostream>
using namespace std;
int main()
{
srand((unsigned int)time(NULL));
cout << rand() % 101 + 100;
}
위에서 배운 것을 활용하여 아래처럼 "스타포스 강화 게임"도 만들 수 있다.
#include <iostream>
using namespace std;
int main()
{
srand((unsigned int)time(NULL));
cout << "=================" << endl;
cout << "스타포스 강화 게임" << endl;
cout << "=================" << endl << endl;
int iUpgrade = 0;
float fPercent = 0.f;
cout << "현재 무기는 몇성인가요?" << endl;
cin >> iUpgrade;
switch (iUpgrade)
{
case 0:
case 1:
case 2:
fPercent = 90;
break;
case 3:
case 4:
case 5:
fPercent = 50;
break;
case 6:
case 7:
case 8:
case 9:
fPercent = 10;
break;
default:
fPercent = 1;
break;
}
cout << "현재 무기 UPgrade : " << iUpgrade << "성" << endl;
cout << "강화 확률 Percent : " << fPercent << "%" << endl;
cout << "강화하시겠습니까? 예:1 , 아니오: 0" << endl;
int iInput;
cin >> iInput;
if (iInput == 0) //종료조건 처리.
return 0;
if (fPercent > rand() % 101 + 1)
cout << "강화 성공";
else
cout << "강화 실패";
}
iostream에 srand(), rand()와 같은 함수가 들어 있다고한다. 굳이 time.h를 넣을 필요가 없다.
728x90
'GGM > 게임프로그래밍' 카테고리의 다른 글
20230306 - 게임프로그래밍 - 숫자 다루기, 케잌 자르 (0) | 2023.03.07 |
---|
댓글