C++做石头剪刀布

运作原理

程序里1代表石头;2代表布;3代表剪刀,然后让计算机随机从1~3抽一个数,再来判断。

界面

        std::cout << "    === 石头剪刀布 === \n";
        std::cout << "=== Rock Paper Scissors === \n";
        std::cout << "  1.石头 \n";
        std::cout << "  2.布 \n";
        std::cout << "  3.剪刀 \n"

随机数

用srand(time(0));来进行随机数

int getRand(int min, int max);
 
int main() {
 
    srand(time(0));
 
    for (int i=0; i<1; i++) {
        int r = getRand(1,3);
        std::cout << r << std::endl;
    }
 
    return 0;
}
int getRand(int min, int max) {
    return ( rand() % (max - min + 1) ) + min ;
}

 for (int i = 0; i < 1; i++) {
   是输出一个数

  int r = getRand(1, 3); 范围1~3

用户输入和判断

        int a;
        std::cin >> a;
        if (r == 1 && a == 1) {
            std::cout << "机器人出了石头 \n";
            std::cout << "平局 \n";
        }
        if (r == 1 && a == 2) {
            std::cout << "机器人出了石头 \n";
            std::cout << "你赢了 \n";
        }
        if (r == 1 && a == 3) {
            std::cout << "机器人出了石头 \n";
            std::cout << "你输了 \n";
        }
        if (r == 2 && a == 1) {
            std::cout << "机器人出了布 \n";
            std::cout << "你输了 \n";
        }
        if (r == 2 && a == 2) {
            std::cout << "机器人出了布 \n";
            std::cout << "平局 \n";
        }
        if (r == 2 && a == 3) {
            std::cout << "机器人出了布 \n";
            std::cout << "你赢了 \n";
        }
        if (r == 3 && a == 1) {
            std::cout << "机器人出了剪刀 \n";
            std::cout << "你赢了 \n";
        }
        if (r == 3 && a == 2) {
            std::cout << "机器人出了剪刀 \n";
            std::cout << "你输了 \n";
        }
        if (r == 3 && a == 3) {
            std::cout << "机器人出了剪刀 \n";
            std::cout << "平局 \n";
        }

这里用了9个判断(以后可以稍微优化一下)

完整代码

#include <iostream>
#include <ctime>
#include <cstdlib>
//1=石头;2=布;3=剪刀
int getRand(int min, int max);

int main() {

    srand(time(0));

    for (int i = 0; i < 1; i++) {
        int r = getRand(1, 3);
        //r=随机 
        std::cout << "    === 石头剪刀布 === \n";
        std::cout << "=== Rock Paper Scissors === \n";
        std::cout << "  1.石头 \n";
        std::cout << "  2.布 \n";
        std::cout << "  3.剪刀 \n";
        int a;
        std::cin >> a;
        if (r == 1 && a == 1) {
            std::cout << "机器人出了石头 \n";
            std::cout << "平局 \n";
        }
        if (r == 1 && a == 2) {
            std::cout << "机器人出了石头 \n";
            std::cout << "你赢了 \n";
        }
        if (r == 1 && a == 3) {
            std::cout << "机器人出了石头 \n";
            std::cout << "你输了 \n";
        }
        if (r == 2 && a == 1) {
            std::cout << "机器人出了布 \n";
            std::cout << "你输了 \n";
        }
        if (r == 2 && a == 2) {
            std::cout << "机器人出了布 \n";
            std::cout << "平局 \n";
        }
        if (r == 2 && a == 3) {
            std::cout << "机器人出了布 \n";
            std::cout << "你赢了 \n";
        }
        if (r == 3 && a == 1) {
            std::cout << "机器人出了剪刀 \n";
            std::cout << "你赢了 \n";
        }
        if (r == 3 && a == 2) {
            std::cout << "机器人出了剪刀 \n";
            std::cout << "你输了 \n";
        }
        if (r == 3 && a == 3) {
            std::cout << "机器人出了剪刀 \n";
            std::cout << "平局 \n";
        }
        char playAgain;
        std::cout << "是否再玩一局?(输入y继续,其他键退出) \n";
        std::cin >> playAgain;
        if (playAgain == 'y' || playAgain == 'Y') {
            i--;
        }
        else {
            break;
        }
    }

    return 0;
}
int getRand(int min, int max) {
    return (rand() % (max - min + 1)) + min;
}

(代码可能不大好看)

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
河北工业大学计算机软件技术基础(VC) 课程设计任务书 题目:人机对战——石头剪刀布 目的与要求 目的 通过编写该程序,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计,并对Windows平台下的控制台进行深入的了解。 基本要求 要求用C++语言编程,在Visual C++环境下调试完成; 要求划分功能模块,各个功能分别使用函数来完成; 源代码程序要求必要的注释。 设计方法和基本原理 课题功能描述 编写一个人机进行石头剪刀布的小游戏。要求能够进行完一轮猜拳后,显示统计信息。每一轮游戏的过程是首先由玩家选择要出的拳,然后计算机选择出拳,输出本轮游戏的胜负情况,然后输出统计信息(玩家胜利次数、计算机胜利次数和平局次数),然后每轮猜拳结束后,询问玩家是否要继续游戏游戏界面如下: 主要技术问题的描述 随机函数 随机函数名为rand(),使用时必须包含头文件stdlib.h。 创新要求 在基本要求达到后,进行创新设计: 程序要保证计算机的胜利次数至少是玩家胜利次数的1.5倍。 课程设计的考核方式及评分方法 考核方式 (1) 学生要提交书面课程设计报告(A4纸打印);并将设计报告的电子文档、.cpp源文件和.h头文件放到一个文件夹里上传到所对应班级的学生名称相应文件夹中。 (2) 课程设计结束时,在机房当场验收。教师提供测试数据,由学生运行所设计的系统,检查运行结果是否正确,并回答教师提出的有关问题。 评分方法 根据出勤率、课程设计期间纪律、课程设计运行结果、课程设计报告及答辩情况综合评分。 书写设计报告的要求(详细内容见“设计报告模板”) 课程设计的有关文档“设计报告模板”和“课程设计要求”请在下载任务书处下载。    
好的,以下是一个简单的石头剪刀布游戏C++代码示例: ```c++ #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { int playerScore = 0; int computerScore = 0; int roundNumber = 1; cout << "欢迎来到石头剪刀布游戏!" << endl; while (true) { int playerChoice; cout << "第 " << roundNumber << " 回合,请输入你的选择(1:石头,2:剪刀,3:布):"; cin >> playerChoice; if (playerChoice < 1 || playerChoice > 3) { cout << "无效的选择,请重新输入!" << endl; continue; } int computerChoice = rand() % 3 + 1; cout << "你的选择是:"; switch (playerChoice) { case 1: cout << "石头" << endl; break; case 2: cout << "剪刀" << endl; break; case 3: cout << "布" << endl; break; } cout << "电脑的选择是:"; switch (computerChoice) { case 1: cout << "石头" << endl; break; case 2: cout << "剪刀" << endl; break; case 3: cout << "布" << endl; break; } if (playerChoice == computerChoice) { cout << "这一回合平局。" << endl; } else if ((playerChoice == 1 && computerChoice == 2) || (playerChoice == 2 && computerChoice == 3) || (playerChoice == 3 && computerChoice == 1)) { cout << "你赢了这一回合!" << endl; playerScore++; } else { cout << "电脑赢了这一回合。" << endl; computerScore++; } cout << "当前得分:你 " << playerScore << " - " << computerScore << " 电脑" << endl; char playAgain; cout << "是否再玩一局?(Y/N):"; cin >> playAgain; if (playAgain == 'N' || playAgain == 'n') { break; } roundNumber++; } cout << "游戏结束,最终得分:你 " << playerScore << " - " << computerScore << " 电脑" << endl; return 0; } ``` 这个程序使用了一个while循环来实现多轮游戏的功能。在每个回合中,它会提示玩家输入选择,然后生成一个随机数来模拟电脑的选择。接下来,程序会比较玩家和电脑的选择,并根据胜负情况来更新得分。最后,程序会询问玩家是否想再次玩游戏,如果是则进入下一轮游戏,否则结束游戏
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值