c++编程-剪刀石头布游戏

任务:编程实现简单的剪刀石头布(也称石头剪刀布)游戏,实现玩家与计算机之间的对战。

基本编程步骤:

  1. 设置基本框架:包括必要的头文件和命名空间。
  2. 声明全局变量:用于存储计算机的手势。
  3. 实现函数
    • randR:生成并打印计算机的随机手势。
    • Judge:判断并打印游戏结果。
    • print:打印玩家的手势。
  4. 编写主函数:处理玩家输入,调用相关函数,控制游戏流程。

导入头文件和命名空间

#include<iostream> // 导入输入输出流库
#include<ctime>    // 导入时间库,用于生成随机数
using namespace std; // 使用标准命名空间

全局变量声明

int y; // 全局变量y,用来存储计算机出的手势

随机生成计算机手势的函数 'randR '

void randR(int &y) {
    srand((int)time(NULL)); // 设置随机数种子
    int x;
    x = rand() % 3 + 1; // 生成1到3的随机数
    y = x;              // 将生成的随机数赋值给y
    cout << "机器:" << " ";
    // 根据随机数输出计算机的手势
    switch (x) {
    case 1:
        cout << "剪刀" << endl;
        break;
    case 2:
        cout << "石头" << endl;
        break;
    case 3:
        cout << "布" << endl;
        break;
    default:
        cout << "error!" << endl;
    }
}

判断输赢的函数 'Judge '

void Judge(int x) {
    // 判断玩家和计算机的手势,输出结果
    if (x == y)
        cout << "平局" << endl;
    else if ((x == 1 && y == 2) || (x == 2 && y == 3) || (x == 3 && y == 1))
        cout << "你输了" << endl;
    else if ((x == 2 && y == 1) || (x == 3 && y == 2) || (x == 1 && y == 3))
        cout << "你赢了" << endl;
}

 打印玩家手势的函数 'print'

void print(int x) {
    // 根据玩家输入的数字输出相应的手势
    switch (x) {
    case 1:
        cout << "你出了:" << " ";
        cout << "剪刀;" << " ";
        break;
    case 2:
        cout << "你出了:" << " ";
        cout << "石头;" << " ";
        break;
    case 3:
        cout << "你出了:" << " ";
        cout << "布;" << " ";
        break;
    case 4:
        cout << "退出游戏" << endl;
        break;
    default:
        cout << "error!" << endl;
    }
}

主函数 'main '

int main() {
    int x;
    cout << "游戏开始,请输入:(1-剪刀,2-石头,3-布,4-结束游戏)" << " ";
    cin >> x;
    cout << endl;
    print(x);
    while (x != 4) {
        randR(y);
        Judge(x);
        cout << "游戏开始,请输入:(1-剪刀,2-石头,3-布,4-结束游戏)" << " ";
        cin >> x;
        cout << endl;
        print(x);
    }
}

完整代码:

#include<iostream>
#include<ctime>
using namespace std;

int y; // 全局变量y,存储计算机出的手势

// 随机生成计算机手势的函数
void randR(int &y) {
    srand((unsigned int)time(NULL)); // 设置随机数种子,注意只需设置一次
    y = rand() % 3 + 1; // 生成1到3的随机数,对应剪刀、石头、布

    cout << "机器:" << " ";
    switch (y) {
    case 1:
        cout << "剪刀" << endl;
        break;
    case 2:
        cout << "石头" << endl;
        break;
    case 3:
        cout << "布" << endl;
        break;
    default:
        cout << "error!" << endl;
    }
}

// 判断输赢的函数
void Judge(int x) {
    if (x == y)
        cout << "平局" << endl;
    else if ((x == 1 && y == 2) || (x == 2 && y == 3) || (x == 3 && y == 1))
        cout << "你输了" << endl;
    else if ((x == 2 && y == 1) || (x == 3 && y == 2) || (x == 1 && y == 3))
        cout << "你赢了" << endl;
}

// 打印玩家手势的函数
void print(int x) {
    cout << "你出了:" << " ";
    switch (x) {
    case 1:
        cout << "剪刀;" << " ";
        break;
    case 2:
        cout << "石头;" << " ";
        break;
    case 3:
        cout << "布;" << " ";
        break;
    case 4:
        cout << "退出游戏" << endl;
        break;
    default:
        cout << "error!" << endl;
    }
}

// 主函数
int main() {
    int x;
    srand((unsigned int)time(NULL)); // 初始化随机数种子

    cout << "游戏开始,请输入:(1-剪刀,2-石头,3-布,4-结束游戏)" << " ";
    cin >> x;
    cout << endl;

    while (x != 4) {
        print(x);
        randR(y);
        Judge(x);
        cout << "游戏开始,请输入:(1-剪刀,2-石头,3-布,4-结束游戏)" << " ";
        cin >> x;
        cout << endl;
    }

    return 0;
}

 运行结果

河北工业大学计算机软件技术基础(VC) 课程设计任务书 题目:人机对战——石头剪刀布 目的与要求 目的 通过编写该程序,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计,并对Windows平台下的控制台进行深入的了解。 基本要求 要求用C++语言编程,在Visual C++环境下调试完成; 要求划分功能模块,各个功能分别使用函数来完成; 源代码程序要求必要的注释。 设计方法和基本原理 课题功能描述 编写一个人机进行石头剪刀布的小游戏。要求能够进行完一轮猜拳后,显示统计信息。每一轮游戏的过程是首先由玩家选择要出的拳,然后计算机选择出拳,输出本轮游戏的胜负情况,然后输出统计信息(玩家胜利次数、计算机胜利次数和平局次数),然后每轮猜拳结束后,询问玩家是否要继续游戏游戏界面如下: 主要技术问题的描述 随机函数 随机函数名为rand(),使用时必须包含头文件stdlib.h。 创新要求 在基本要求达到后,进行创新设计: 程序要保证计算机的胜利次数至少是玩家胜利次数的1.5倍。 课程设计的考核方式及评分方法 考核方式 (1) 学生要提交书面课程设计报告(A4纸打印);并将设计报告的电子文档、.cpp源文件和.h头文件放到一个文件夹里上传到所对应班级的学生名称相应文件夹中。 (2) 课程设计结束时,在机房当场验收。教师提供测试数据,由学生运行所设计的系统,检查运行结果是否正确,并回答教师提出的有关问题。 评分方法 根据出勤率、课程设计期间纪律、课程设计运行结果、课程设计报告及答辩情况综合评分。 书写设计报告的要求(详细内容见“设计报告模板”) 课程设计的有关文档“设计报告模板”和“课程设计要求”请在下载任务书处下载。    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值