欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

投骰子的随机游戏

程序员文章站 2022-07-07 10:38:57
...

每个骰子有六面,点数分别为1、2、3、4、5、6。游戏者在程序开始时输入一个无符号整数,作为产生随机数的种子。 每轮投两次骰子,第一轮如果和数为7或11则为胜,游戏结束;和数为2、3或12则为负,游戏结束;和数为其它值则将此值作为自己的点数,继续第二轮、第三轮...直到某轮的和数等于点数则取胜,若在此前出现和数为7则为负。 由rolldice函数负责模拟投骰子、计算和数并输出和数。

#include <iostream>
#include <cstdlib>
using namespace std;
 
//投骰子、计算和数、输出和数
int rollDice() {
	int die1 = 1 + rand() % 6;
	int die2 = 1 + rand() % 6;
	int sum = die1 + die2;
	cout << "player rolled " << die1 << " + " << die2 << " = " << sum << endl;
	return sum;
}
enum GameStatus { WIN, LOSE, PLAYING };
 
int main() {
	int sum, myPoint;
	GameStatus status;
 
	unsigned seed; 
	cout << "Please enter an unsigned integer: ";
	cin >> seed;//输入随机数种子
	srand(seed);//将种子传递给rand()
 
	sum = rollDice(); //第一轮投骰子、计算和数
switch (sum) {
	case 7:   //如果和数为7或11则为胜,状态为WIN
	case 11:
	  status = WIN;
	  break;
	case 2:   //和数为2、3或12则为负,状态为LOSE
	case 3: 
	case 12:
	  status = LOSE;
	  break;
	default:   //其它情况,游戏尚无结果,状态为PLAYING,记下点数,为下一轮做准备
	  status = PLAYING;
	  myPoint = sum;
	  cout << "point is " << myPoint << endl;
	  break;
	}
while (status == PLAYING) { //只要状态仍为PLAYING,就继续进行下一轮
	  sum = rollDice();
	  if (sum == myPoint)    //某轮的和数等于点数则取胜
	    status = WIN;
	  else if (sum == 7)    //出现和数为7则为负
	    status = LOSE;
	}

	//当状态不为PLAYING时上面的循环结束,以下程序段输出游戏结果
	if (status == WIN)
	  cout << "player wins" << endl;
	else
	  cout << "player loses" << endl;

	return 0;
}