728x90
▷ c++ 난수생성
#include <cstdlib>
#include <ctime>
std::srand(time(NULL)); // 매번 같은 값을 생성하려면 srand() 함수에 seed 전달.
int randomNumber = std::rand(); // 0 ~ 32767 사이의 랜덤한 숫자.
int num = randomNumber % 25 + 1; // 범위를 한정하고 싶다면 나머지 이용 하기
cout << randomNumber << endl;
cout << num << endl;
랜덤함수를 이용하여 베스킨라빈스31 게임을 만들어 보았다.
사용자는 1~3개의 숫자를 고르고, 컴퓨터는 난수생성으로 숫자를 고르게 하여 게임이 진행된다.
실행코드
#include <iostream>
#include <cstdlib>
// 베스킨라빈스31게임
using std::cin;
using std::cout;
using std::endl;
std::string playGame();
int main()
{
std::string winner;
std::srand(time(NULL));
winner = playGame();
cout << "\n게임 종료 !!" << winner << "의 승리입니다." << endl;
}
std::string playGame() {
int num = 0, userNum, comNum;
std::string win;
cout << " ▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽" << endl << endl;
cout << " ▷▷▷ 베스킨라빈스31 게임 START ◁◁◁" << endl << endl;
cout << " △△△△△△△△△△△△△△△△△△△△" << endl << endl << endl;
while (1) {
cout << "사용자가 부를 숫자의 개수를 입력하세요 : ";
cin >> userNum;
if (1 <= userNum && 3 >= userNum) {
cout << "☞ USER : ";
for (int i = 0; i < userNum; i++) {
num++;
cout << num << " ";
if (num == 31) {
win = "컴퓨터";
return win;
}
}
cout << endl;
//컴퓨터 1~3 랜덤 숫자 선택.
comNum = std::rand() % 3 + 1;
cout << "☞ COM : ";
for (int j = 0; j < comNum; j++) {
num++;
cout << num << " ";
if (num == 31) {
win = "사용자";
return win;
}
}
cout << endl<< endl;
}
else {
cout << "1~3 사이의 수를 입력해주세요." << endl;
}
}
}
실행결과
보완점
: 컴퓨터는 자동으로 난수생성만 하다보니 31을 피할 수 있는 상황에서도 안 피하고 31도 말하게 되어버린다.
컴퓨터가 난수로 숫자를 부르지만도 31을 피할 수 있는 로직도 구현해보고싶다 !
728x90
반응형
'BE > C++' 카테고리의 다른 글
[C++] 숫자 야구 게임 ( 랜덤숫자 3개로 Strike, Ball ) (1) | 2023.11.09 |
---|---|
[C++] 마방진 만들기 (1) | 2023.11.09 |
[C++] 배열을 이용한 로또당첨 숫자 맞추기 (2) | 2023.10.26 |
[C++] 타임어택 끝말잇기 게임 (0) | 2023.10.26 |
[C++] dynamic_cast (타입 캐스트 연산자) (0) | 2023.09.15 |
댓글