C++에서 크랩 게임을 구현하려고하는데 규칙이 아래에 나와 있습니다. 그래서 저는 두 개의 숫자를 생성 할 함수를 만들었습니다. 때로는이 함수를 두 번 호출해야하지만, 두 번째 호출이 나에게 처음으로 준 동일한 난수를 부여 할 때 호출됩니다.두 번째 호출에서 다른 임의의 번호 생성
rollDice()
두 번째 호출에서 얻은 숫자를 무작위로 지정하고 싶습니다. 어떻게해야합니까?
출력 예 1 :
플레이어 3 + 4 = 7 압연
플레이어 획득!
출력 예 2 :
플레이어는 2 + 2 = 4
포인트 4
플레이어 2 = 4 플레이어 원 + 2 압연 롤!
출력 예 3 :
플레이어 1 + 5 = 6
포인트 6
플레이어 1 + 5 압연 롤 = 6
는 플레이어가 획득!
게임 규칙 : 규칙 : 자신의 합이 7 또는 11, 그들은 승리 인 경우 플레이어는 두 개의 6면 주사위를 던졌습니다. 합계가 2,3 또는 12 인 경우 입니다. 4,5,6,8,9,10,12이면 "포인트"이되어 플레이어가 다시 굴러 들어야합니다. 플레이어는 "포인트"를 다시 칠 때까지 롤을 계속하고 그는 에 도달하면 그는 으로 이깁니다.
코드 :
#include<iostream>
#include<ctime>
#include <cstdlib>
using namespace std;
//Generating two rand numbers from 1 to 6
int rollDice()
{
srand(time(0));
int face1 = 1 + rand()%6;
int face2 = 1 + rand()%6;
int sum = face1 + face2;
cout << "Player rolled " << face1 << " + " << face2 << " = " << sum << endl;
return sum;
}
string gameStatus; //Hold status of game; WIN, CONTINUE, LOST
int sumOfDice = rollDice();
int point = 0; //This will hold sum of dice if it's default case defined below in Switch.
int main()
{
switch(sumOfDice)
{
case 7:
case 11:
gameStatus = "WIN";
break;
case 2:
case 3:
case 12:
gameStatus = "LOST";
break;
default:
gameStatus = "CONTINUE";
point = sumOfDice;
cout << "Point is " << point << endl;
}
while (gameStatus == "CONTINUE")
{
int rollAgain = rollDice();
if (rollAgain == point)
gameStatus = "WIN";
else if (rollAgain == 7)
gameStatus = "LOST";
}
if (gameStatus == "WIN")
cout << "Player won!";
if (gameStatus == "LOST")
cout << "Player lost!";
}
매번'srand()'를 한 번 호출하지 말아야합니다. 랜덤 시퀀스를 동일한 시드로 다시 시드하므로 동일한 시퀀스의 첫 번째 시퀀스가 생성됩니다. 메인 시작시 srand를 호출하십시오. 또는 당신이 C++ 11을 사용할 수 있다면''을 사용하십시오. (나는이 주석에 대한 템플릿이 필요합니다. 나는 거의 매주이 조언을 사용합니다 ...) –
Borgleader
@Borgleader 당신은 자세하고 자기 답답한 질문을 할 수 있습니다. 다른 모든 것은 중복으로. –