Dev C++ 实现石头剪刀布游戏:代码示例、说明及注意要点
以下是一个用 C++ 语言在 Dev C++ 中实现石头剪刀布游戏的代码示例: ```cpp #include <iostream> #include <cstdlib> #include <ctime> // 定义枚举类型来表示石头、剪刀、布 enum Choice { ROCK, PAPER, SCISSORS }; // 函数用于获取玩家的选择 Choice getPlayerChoice() { int choice; do { std::cout << "请选择:1. 石头 2. 布 3. 剪刀: "; std::cin >> choice; if (choice < 1 || choice > 3) { std::cout << "无效的选择,请重新输入。" << std::endl; } } while (choice < 1 || choice > 3); return static_cast<Choice>(choice - 1); } // 函数用于获取电脑的随机选择 Choice getComputerChoice() { // 设置随机数种子 std::srand(static_cast<unsigned int>(std::time(nullptr))); // 生成 0 到 2 之间的随机数 int random = std::rand() % 3; return static_cast<Choice>(random); } // 函数用于判断游戏结果 void determineWinner(Choice player, Choice computer) { if (player == computer) { std::cout << "平局!" << std::endl; } else if ((player == ROCK && computer == SCISSORS) || (player == PAPER && computer == ROCK) || (player == SCISSORS && computer == PAPER)) { std::cout << "你赢了!" << std::endl; } else { std::cout << "你输了!" << std::endl; } } // 函数用于输出选择对应的名称 std::string choiceToString(Choice choice) { switch (choice) { case ROCK: return "石头"; case PAPER: return "布"; case SCISSORS: return "剪刀"; default: return ""; } } int main() { // 获取玩家的选择 Choice playerChoice = getPlayerChoice(); // 获取电脑的选择 Choice computerChoice = getComputerChoice(); std::cout << "你选择了:" << choiceToString(playerChoice) << std::endl; std::cout << "电脑选择了:" << choiceToString(computerChoice) << std::endl; // 判断游戏结果 determineWinner(playerChoice, computerChoice); return 0; } ``` 代码说明 1. 枚举类型 `Choice`:用于表示石头、剪刀、布三种选择。 2. `getPlayerChoice` 函数:获取玩家的输入,并确保输入是有效的(1 - 3)。 3. `getComputerChoice` 函数:使用随机数生成器生成电脑的选择。 4. `determineWinner` 函数:根据玩家和电脑的选择判断游戏结果。 5. `choiceToString` 函数:将枚举类型转换为对应的字符串,方便输出。 6. `main` 函数:调用上述函数完成游戏流程。 需要小心的地方 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 随机数种子的设置:如果不设置随机数种子,每次运行程序时电脑的选择可能是相同的。需要使用 `std::srand` 函数设置随机数种子。 2. 输入验证:在获取玩家输入时,需要确保输入是有效的,避免程序崩溃。 3. 枚举类型的使用:在使用枚举类型时,需要注意类型转换,确保代码的正确性。 ######[AI写代码神器 | 873点数解答 | 2025-10-26 19:00:16]
- 生活大爆炸升级版猜拳游戏:代码实现、解释与复杂度分析(字节豆包 | 656点数解答 | 2025-11-26 18:54:37)59
- 超燃年会来袭!诗舞歌戏轮番上阵,共赴欢乐盛宴! (字节豆包 | 206点数解答 | 2025-01-08 10:59:43)350
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)33
- Java 继承实现:重温经典剪刀石头布游戏(字节豆包 | 451点数解答 | 2024-10-20 19:57:58)469
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)351
- 工程师必知:软件系统用户文档编写九大要点揭秘(百度文心 | 350点数解答 | 2023-11-09 18:23:53)197
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)274
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)271
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)322
- Three.js 示例代码解析:优化场景渲染与注意要点(字节豆包 | 164点数解答 | 2025-02-27 23:30:20)268
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)475
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)361