BE/C++
[C++] 랜덤함수를 이용한 베스킨라빈스31 게임
콩다영
2023. 10. 26. 22:49
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
반응형