使用C++程序实现的石头剪刀布游戏代码(调试通过)

### 使用C++程序实现的石头剪刀布游戏代码解析 #### 一、程序概述 本文将详细介绍一个使用C++编写的“石头剪刀布”游戏的代码实现过程。该程序利用了`srand`和`rand`函数来实现人机对战功能。玩家可以通过输入数字来选择石头(0)、剪刀(1)或布(2),而计算机则随机生成其选择,并根据游戏规则判断输赢。 #### 二、关键函数解释 ##### 2.1 `show(int input)` 此函数用于显示玩家或计算机的选择。它接收一个整型参数`input`,并根据该参数的值打印出相应的文字表示: - 如果`input`为0,则输出“石头”; - 如果`input`为1,则输出“剪刀”; - 如果`input`为2,则输出“布”。 **示例代码:** ```cpp void show(int input) { switch (input) { case 0: cout << "石头!"; break; case 1: cout << "剪刀!"; break; case 2: cout << "布!"; break; } } ``` ##### 2.2 `compare(int inputPlay, int inputComputer)` 此函数用于比较玩家与计算机的选择,并根据结果输出胜负情况。它接收两个整型参数`inputPlay`(玩家的选择)和`inputComputer`(计算机的选择),然后根据游戏规则进行比较: - 如果玩家出的是石头而计算机出的是剪刀,或者玩家出的是剪刀而计算机出的是布,或者玩家出的是布而计算机出的是石头,则输出“玩家胜利”; - 如果两者选择相同,则输出“平局”; - 其他情况下,输出“计算机胜利”。 **示例代码:** ```cpp void compare(int inputPlay, int inputComputer) { if (inputPlay == 0 && inputComputer == 1 || inputPlay == 1 && inputComputer == 2 || inputPlay == 2 && inputComputer == 0) { cout << "\n玩家胜利!\n"; } else if (inputPlay == inputComputer) { cout << "\n平局!\n"; } else { cout << "\n计算机胜利!\n"; } } ``` #### 三、主函数详解 ##### 3.1 初始化与用户交互 在`main`函数中,首先进行了必要的库导入,并初始化了`srand`函数以确保每次运行程序时计算机产生的随机数不同。接着,程序进入一个循环,允许玩家连续进行多轮游戏。 **示例代码:** ```cpp #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { char a; int inputPlay; int inputComputer; cout << "欢迎来到石头剪刀布游戏!\n"; cout << "游戏说明:\n\n"; cout << "石头--0, 剪刀--1, 布--2\n"; srand(time(NULL)); do { cout << "\n请输入您的选择(0/1/2):\n"; cin >> inputPlay; if (inputPlay >= 0 && inputPlay <= 2) { cout << ""; show(inputPlay); inputComputer = rand() % 3; cout << ""; show(inputComputer); compare(inputPlay, inputComputer); } else { cout << "输入错误!\n"; cout << "\n请按照规则输入: 石头--0, 剪刀--1, 布--2\n"; } cout << "\n是否继续玩?(Y/N)"; cin >> a; } while (a != 'n'); return 0; } ``` #### 四、注意事项 1. **输入验证**:在用户输入部分,添加了简单的输入验证机制,如果输入不在0~2之间,则提示错误并要求重新输入。 2. **循环控制**:通过一个字符变量`a`来控制游戏是否继续,当玩家输入'n'时,退出循环结束游戏。 3. **随机种子**:通过调用`srand(time(NULL))`设置随机种子,确保每次运行程序时都能获得不同的随机数序列。 #### 五、总结 本程序通过简单的用户界面实现了石头剪刀布游戏的基本功能,不仅提高了用户的互动体验,还展示了如何在C++中运用条件语句、循环结构以及随机数生成等基础知识。对于初学者而言,这是一个很好的学习案例,能够帮助理解面向过程编程的基本思想及其应用。





























#include <stdlib.h>
#include <time.h>
void show(int input)
{
switch(input)
{case 0:cout<<"出的是石头!";break;
case 1:cout<<"出的是剪子!";break;
case 2:cout<<"出的是布!";break;
}
}
void compare(int inputPlay,int inputComputer)
{
if(inputPlay==0&&inputComputer==1||
inputPlay==1&&inputComputer==2||
inputPlay==2&&inputComputer==1)
{cout<<("\n玩家胜!\n");}
else
if(inputPlay==inputComputer)
{cout<<("\n平局!\n");}
else{cout<<("\n电脑胜!\n");}
}
void main()
{
char a;
int inputPlay;
int inputComputer;
cout<<("猜拳游戏\n");
cout<<("游戏说明:\n\n");

- sishenluyu1232011-11-12额 说实话 运行不了
- M66Huang2013-06-03对我的课设很有用!
- hejianyan2012-05-22有些小错误 ,不过只是参考参考,还是有不错的地方
- evil_hack2014-02-08怎么不能运行 但是有值得学习的地方

- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- Revit中调整嵌板上洞口的位置.docx
- 房地产公司成本管理工作总结及汇报.doc
- 计算机学习心得怎么写(精选5篇).docx
- 启蒙时代的文学数据可视化
- 香水网络市场分析报告.docx
- 【精品课件】网络安全防护-课件1.pptx
- 监-理-业-绩-手-册.doc
- 区室外工程合同(淮矿ii标).doc
- 定额计价方法(造价员入门必看).pdf
- 注册岩土工程师考试测试要点.doc
- 测量装置封存表.docx
- 硬质阻燃塑料管(PVC)明敷设工艺.doc
- 项目成本管理流程(事业部).doc
- 《小蝌蚪找妈妈》.doc
- 销售物业1-8#塔楼及附属商业楼屋面增加防水层施工方案.doc
- 危害因素辨识及评估汇总表(汇编)样本.doc


