用c++编写一个21点小游戏
时间: 2023-11-27 15:02:00 浏览: 112
好的,下面给出一个简单的 21 点小游戏的 C++ 代码,其中使用了随机数生成器和基础的控制结构:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(time(0)); // 初始化随机数生成器
int playerTotal = 0; // 玩家手牌总点数
int dealerTotal = 0; // 庄家手牌总点数
char choice; // 玩家是否要牌的选择
// 发两张牌给玩家
playerTotal += rand() % 10 + 1;
playerTotal += rand() % 10 + 1;
cout << "你的牌是:" << playerTotal << endl;
// 发一张牌给庄家
dealerTotal += rand() % 10 + 1;
cout << "庄家的牌是:" << dealerTotal << endl;
// 玩家决定是否要继续要牌
while (playerTotal <= 21)
{
cout << "是否要牌?(Y/N)" << endl;
cin >> choice;
if (choice == 'Y' || choice == 'y')
{
playerTotal += rand() % 10 + 1;
cout << "你的牌是:" << playerTotal << endl;
}
else
{
break;
}
}
// 庄家继续要牌,直到手牌总点数大于等于 17
while (dealerTotal < 17)
{
dealerTotal += rand() % 10 + 1;
cout << "庄家的牌是:" << dealerTotal << endl;
}
// 判断胜负
if (playerTotal > 21)
{
cout << "你爆了,庄家赢了!" << endl;
}
else if (dealerTotal > 21)
{
cout << "庄家爆了,你赢了!" << endl;
}
else if (playerTotal > dealerTotal)
{
cout << "你赢了!" << endl;
}
else if (playerTotal < dealerTotal)
{
cout << "庄家赢了!" << endl;
}
else
{
cout << "平局!" << endl;
}
return 0;
}
```
这个代码中,首先使用 `srand(time(0))` 进行了随机数生成器的初始化,然后用两个变量 `playerTotal` 和 `dealerTotal` 分别记录玩家和庄家的手牌总点数,用一个字符变量 `choice` 记录玩家是否要牌的选择。程序先发两张牌给玩家和一张牌给庄家,然后在一个 `while` 循环中,不断询问玩家是否要牌,如果玩家选择要牌,就发一张牌给玩家,并更新手牌总点数;如果玩家选择不要牌,就跳出循环。接下来,用另一个 `while` 循环,让庄家不断要牌,直到手牌总点数大于等于 17。最后,根据玩家和庄家的手牌总点数,判断胜负并输出结果。
阅读全文