c++中模拟剪刀石头布 s p r
时间: 2024-10-07 15:04:48 浏览: 36
在 C++ 中,你可以创建一个简单的剪刀、石头、布(Scissors-Paper-Rock, SPRT)游戏来模拟人机对战。首先,你需要定义三个枚举类型来表示三种选择:
```cpp
enum class GameItem {
SCISSORS = 0,
PAPER,
ROCK
};
```
然后创建一个用户输入函数来获取玩家的选择:
```cpp
GameItem getUserChoice() {
int choice;
cout << "请输入您的选择 (0-剪刀, 1-纸, 2-石头): ";
cin >> choice;
return static_cast<GameItem>(choice);
}
```
接着定义机器随机出拳的函数:
```cpp
GameItem getComputerChoice() {
srand(time(0)); // 初始化随机数种子
int randomNum = rand() % 3; // 生成0到2之间的随机数
switch (randomNum) {
case 0:
return GameItem::SCISSORS;
case 1:
return GameItem::PAPER;
default:
return GameItem::ROCK;
}
}
```
最后编写一个比较两个选择的函数并输出结果:
```cpp
void compareChoices(GameItem user, GameItem computer) {
if (user == computer) {
cout << "平局!\n";
} else if ((user == GameItem::SCISSORS && computer == GameItem::PAPER) ||
(user == GameItem::PAPER && computer == GameItem::ROCK) ||
(user == GameItem::ROCK && computer == GameItem::SCISSORS)) {
cout << "电脑赢了!(" << GameItemToString(user) << " 对 " << GameItemToString(computer) << ")\n";
} else {
cout << "你赢了!(" << GameItemToString(user) << " 对 " << GameItemToString(computer) << ")\n";
}
}
string GameItemToString(GameItem item) {
switch (item) {
case GameItem::SCISSORS:
return "剪刀";
case GameItem::PAPER:
return "纸";
case GameItem::ROCK:
return "石头";
}
}
```
将所有部分组合起来,你可以创建一个主函数来运行整个游戏流程:
```cpp
int main() {
GameItem userChoice = getUserChoice();
GameItem computerChoice = getComputerChoice();
compareChoices(userChoice, computerChoice);
return 0;
}
```
运行这个程序,用户和计算机可以交替出拳,展示剪刀石头布的对决。
阅读全文