题目:模拟骰子游戏
描述:
编写一个C++程序来模拟一个简单的骰子游戏。游戏规则如下:
- 初始化随机数种子:
- 程序首先提示用户输入一个无符号整数作为随机数种子,以确保每次运行程序时生成的随机数序列不同。
- 第一轮投骰子:
- 程序模拟投掷两个六面骰子(每个骰子的点数范围为1到6),并计算它们的和。
- 显示第一轮投骰子的和数。
- 判断第一轮结果:
- 如果第一轮投骰子的和数为7或11,则玩家获胜,游戏结束。
- 如果第一轮投骰子的和数为2、3或12,则玩家失败,游戏结束。
- 否则,将第一轮投骰子的和数设为“点数”,游戏继续。
- 继续游戏:
- 玩家继续投掷两个骰子,直到以下情况之一发生:
- 如果当前轮投骰子的和数等于“点数”,则玩家获胜,游戏结束。
- 如果当前轮投骰子的和数为7,则玩家失败,游戏结束。
- 玩家继续投掷两个骰子,直到以下情况之一发生:
- 游戏结束:
- 根据玩家的获胜或失败情况,输出相应的消息,并终止程序。
源代码:
#include <iostream>
#include <cstdlib> // 引入stdlib.h以使用rand()和srand()
#include <ctime> // 引入time.h以使用time() using namespace std;// 模拟投骰子并返回两个骰子的和
int rolldice() {// 使用rand()生成随机数,并通过%6+1确保结果在1到6之间 int dice1 = rand() % 6 + 1;int dice2 = rand() % 6 + 1;return dice1 + dice2;
}int main() {unsigned int seed;cout << "请输入一个无符号整数作为随机数种子: ";cin >> seed;srand(seed); // 设置随机数种子 // 初始化变量 int firstRollSum, point = 0;bool gameOver = false;// 第一轮投骰子 firstRollSum = rolldice();cout << "第一轮投骰子和数为: " << firstRollSum << endl;// 根据第一轮投骰子的结果判断游戏是否结束 if (firstRollSum == 7 || firstRollSum == 11) {cout << "恭喜你,你赢了!" << endl;gameOver = true;}else if (firstRollSum == 2 || firstRollSum == 3 || firstRollSum == 12) {cout << "很遗憾,你输了!" << endl;gameOver = true;}else {point = firstRollSum; // 设置点数为第一轮的和数 }// 如果游戏未结束,则继续游戏 while (!gameOver) {int currentRollSum = rolldice();cout << "当前轮投骰子和数为: " << currentRollSum << endl;if (currentRollSum == point) {cout << "恭喜你,你赢了!" << endl;gameOver = true;}else if (currentRollSum == 7) {cout << "很遗憾,你输了!" << endl;gameOver = true;}}return 0;
}
运行截图: