C++大学教程(第九版)6.48掷骰子游戏的改进

文章目录

  • 题目
  • 代码
  • 运行截图

题目

(掷骰子游戏的改进)请修改图6.11 中的双游戏序允许家下赌注。
把序中运行掷骰子游戏的部分打包为一个函数。
初始化变量 bankBalance 为 1000美元。
提示玩家输入赌注数:wager。
利用一个 while 循环来检查 wager 是否小于或等于 bankBalance。
如果不是,则提示用户重新输人 wager 直到输人一个合法的 wager 值。

输人了一个正确的 wager 值以后,运行掷子游戏如果玩家获胜,bankBalance 的值增加 wager,并且打印出新的 bankBalance 值。
如果玩家输了bankBalance 将减去 wager,打印新的 bankBalance 的值并且检查它的值是否已变为0;如果是则打印消息“Sorry. You busted!”。
在游戏的进行过程中,应该打印出各种各样的消息,增添点“聊天”效果,诸如一些“小对话”:“Oh,you’re going for broke,huh?”,“Aw cmon,take a chance!”,或者“You’re up big. Now’s the time to cash in your chips!”

代码

// 掷双骰游戏改进
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

unsigned int rollDice();//掷骰子
bool gameRollDice();//掷骰子游戏

int main()
{
    unsigned int bankBalance = 1000;
    unsigned int wager;
    cout << "Please enter the wager:";//请输入赌注
    cin >> wager;
    while (wager > bankBalance)
    {
        cout << "Your wager is invalid.\nPlease re-enter the wager:";
        cin >> wager;
    }

    cout << "Aw, cmon, take a chance!" << endl; // 来吧,抓住机会

    if (gameRollDice())
    {
        bankBalance = bankBalance + wager; // 玩家赢了
        cout << "Bank Balance is " << bankBalance;
    }
    else
    {
        bankBalance = bankBalance - wager; // 玩家输了
        cout << "Bank Balance is " << bankBalance;
    }

    if (0 == bankBalance)
    {
        cout << "Sorry. You busted! " << endl;               // 你搞砸了
        cout << "Oh, you are going for broke, huh?" << endl; // 你要破产了
    }
    return 0;
}

unsigned int rollDice() // 掷骰子
{
    unsigned int die1 = 1 + rand() % 6;
    unsigned int die2 = 1 + rand() % 6;

    unsigned int sum = die1 + die2;

    cout << "Player rolled " << die1 << " + "
         << die2 << " = " << sum << endl;

    return sum;
}

bool gameRollDice() // 掷骰子游戏
{
    enum Status
    {
        CONTINUE,
        WON,
        LOST
    }; // 用来表示游戏状态

    srand(static_cast<unsigned int>(time(0))); // 随机数的种子

    unsigned int myPoint = 0; // 用于后续几轮的状态记录

    Status gameStatus = CONTINUE;        // 记录当前的游戏状态,控制结束的关键
    unsigned int sumOfDice = rollDice(); /// 记录第一次掷的结果

    // 决定当前的游戏状态
    switch (sumOfDice)
    {
    case 7:
    case 11: // 第一次掷到和为7或11,游戏胜利
        gameStatus = WON;
        break;

    case 2:
    case 3:
    case 12: // 第一次掷到和为2,3,12,游戏失败
        gameStatus = LOST;
        break;

    default:
        gameStatus = CONTINUE;
        myPoint = sumOfDice; // 记录下自己后续几轮的目标点数
        cout << "Point is " << myPoint << endl;
        break;
    }

    while (CONTINUE == gameStatus)
    {
        sumOfDice = rollDice();

        if (sumOfDice == myPoint)
        {
            gameStatus = WON;
        }
        else if (7 == sumOfDice)
        {
            gameStatus = LOST;
        }
    }

    if (WON == gameStatus)
        return true;
    else
        return false;
}

运行截图

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/349231.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

直线导轨运行不顺畅时怎么办?

为了确保直线导轨正常工作&#xff0c;确保设备的精度和稳定性&#xff0c;避免因此带来的生产损失和质量问题&#xff0c;需要及时处理直线导轨运行不顺畅或产生噪音等问题&#xff0c;今天我们就来详说如何解决直线导轨运行不顺畅。 1、长时间使用后&#xff0c;直线导轨表面…

达美乐3年亏9亿,披萨下沉能否“救市”?

“达门”在西北首店“出圈”。 作为中国首家西式快餐连锁品牌&#xff0c;达美乐于2023年12月24日在西安开出西北首店&#xff0c;单日销售额创造全球纪录32万。 此前&#xff0c;达势股份&#xff08;下称“达美乐中国”&#xff0c;01405.HK&#xff09;在港交所挂牌上市&a…

【Linux系统编程应用层开发目录】介绍Linux应用层开发的知识点和文章

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f440;专栏地址&#x1f440;&#xff1a;&#x1f680;Linux C语言&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、…

详细介绍 Go 中如何实现 bitset

文章目录 bitset 结构元素位置代码实现构造函数BitSet 的方法基础方法containsclearadd 集合方法computeSize方法定义intersectuniondifference 遍历集合的元素总结 最近尝试在 B 站录些小视频&#xff0c;我的 B 站主页。录视频当是为了彻底搞懂某个知识点的最后一步吧&#x…

向量数据库(1)

一、向量数据库 1&#xff0c;什么是向量数据库 专门存储和查询向量数据的数据库系统&#xff0c;通过高翔的向量索引和查询功能&#xff0c;使得在大规模向量数据集上进行相似性搜索和分析变得更高效和容易。 存储向量数据&#xff1a;处理百万或者十亿的大规模数据集向量索…

多符号表达式的共同子表达式提取教程

生成的符号表达式&#xff0c;可能会存在过于冗长的问题&#xff0c;且多个符号表达式中&#xff0c;有可能存在相同的计算部分&#xff0c;如果不进行处理&#xff0c;计算过程中会导致某些算式计算多次&#xff0c;从而影响计算效率。 那么多个符号表达式生成函数时&#xf…

基于一款热门大屏可视化设计器使用教程

乐吾乐大屏可视化设计器是一个用于创建和定制大屏幕数据可视化展示的工具&#xff0c;支持零代码实现物联网、工业智能制造等领域的可视化大屏、触摸屏端UI以及工控可视化的解决方案。同时也是一个Web组态工具&#xff0c;支持2D、3D等多种形式&#xff0c;用于构建具有实时数据…

详解APQC流程分级分类框架PCF13个高阶分类和5级业务流程

一&#xff1a;什么是APQC 美国生产力与质量中心(American Productivity and Quality Center&#xff0c;简称为APQC)&#xff0c;创立于1977年是一个会员制的非营利机构&#xff0c;使命是“发现有效的改进方法&#xff0c;广泛地传播其发现成果&#xff0c;实现个人之间及其…

JavaScript高级:垃圾回收机制

1 引言 垃圾回收机制&#xff08;Garbage Collection&#xff09;简称 GC。js中的内存的分配和回收都是自动完成的&#xff0c;内存在不使用的时候会被垃圾回收器自动回收。 2 内存的生命周期 js环境中分配的内存&#xff0c;一般有如下的生命周期&#xff1a; 1. 内存分配&…

浅析HTTP协议

首先&#xff0c;前端请求后端数据&#xff0c;后端响应数据给前端&#xff0c;这是我们大家都知道的&#xff0c;那其中所涉及到的数据传输协议又是什么呢&#xff1f;这个传输规范就是我们大名鼎鼎的HTTP协议&#xff01; 什么是HTTP协议&#xff1f; HTTP&#xff08;超文本…

【医学图像隐私保护】PLAN方法:解决 GAN 生成医学图像 Latent 空间中的隐私保护

PLAN方法&#xff1a;解决 GAN 生成医学图像 Latent 空间中的隐私保护方法 PLAN 原理StyleGAN 生成视网膜图k-SALSA 生成视网膜图PLAN方法 生成视网膜图 总结 PLAN 原理 论文&#xff1a;https://arxiv.org/abs/2307.02984 代码&#xff1a;https://github.com/perceivelab/P…

第二证券:深夜突发,油价大涨!惊魂一夜,5700亿市值蒸发

当地时间1月25日&#xff0c;美股三大股指延续涨势&#xff0c;前一日大涨的抢手中概股走势分解。成绩低于预期的特斯拉单日大跌逾12%&#xff0c;总市值蒸腾超越5700亿元人民币&#xff0c;其后市目标价还遭多家组织下调。 从隔夜发布的重要经济及政策数据看&#xff0c;美国…

【RabbitMQ】死信(延迟队列)的使用

目录 一、介绍 1、什么是死信队列(延迟队列) 2、应用场景 3、死信队列(延迟队列)的使用 4、死信消息来源 二、案例实践 1、案例一 2、案例二&#xff08;消息接收确认 &#xff09; 3、总结 一、介绍 1、什么是死信队列(延迟队列) 死信&#xff0c;在官网中对应的单词…

【c语言】扫雷

前言&#xff1a; 扫雷是一款经典的单人益智游戏&#xff0c;它的目标是在一个方格矩阵中找出所有的地雷&#xff0c;而不触碰到任何一颗地雷。在计算机编程领域&#xff0c;扫雷也是一个非常受欢迎的项目&#xff0c;因为它涉及到许多重要的编程概念&#xff0c;如数组、循环…

基于卡尔曼滤波的平面轨迹优化

文章目录 概要卡尔曼滤波代码主函数代码CMakeLists.txt概要 在进行目标跟踪时,算法实时测量得到的目标平面位置,是具有误差的,连续观测,所形成的轨迹如下图所示,需要对其进行噪声滤除。这篇博客将使用卡尔曼滤波,对轨迹进行优化。 优化的结果为黄色线。 卡尔曼滤波代码…

带【科技感】的Echarts 图表

Echarts脚本在线地址 https://cdn.jsdelivr.net/npm/echarts5.4.3/dist/echarts.min.js 引入Echarts 脚本后粘贴代码 vue2 代码&#xff1a; <template><div><div ref"col-2-row-2" class"col-2-row-2"></div></div> <…

PHP - Yii2 异步队列

1. 前言使用场景 在 PHP Yii2 中&#xff0c;队列是一种特殊的数据结构&#xff0c;用于处理和管理后台任务。队列允许我们将耗时的任务&#xff08;如发送电子邮件、push通知等&#xff09;放入队列中&#xff0c;然后在后台异步执行。这样可以避免在处理大量请求时阻塞主应用…

sklearn 学习-混淆矩阵 Confusion matrix

混淆矩阵Confusion matrix&#xff1a;也称为误差矩阵&#xff0c;通过计算得出矩阵的结果用来表示分类器的精度。其每一列代表预测值&#xff0c;每一行代表的是实际的类别。 from sklearn.metrics import confusion_matrixy_true [2, 0, 2, 2, 0, 1] y_pred [0, 0, 2, 2, 0…

ICMP协议详解

ICMP&#xff08;Internet Control Message Protocol&#xff09;协议是一个网络层协议。 一个新搭建好的网络&#xff0c;往往需要先进行一个简单的测试&#xff0c;来验证网络是否畅通&#xff1b;但是IP协议并不提供可靠传输。如果丢包了&#xff0c;IP协议并不能通知传输层…

【Kafka】开发实战和Springboot集成kafka

目录 消息的发送与接收生产者消费者 SpringBoot 集成kafka服务端参数配置 消息的发送与接收 生产者 生产者主要的对象有&#xff1a; KafkaProducer &#xff0c; ProducerRecord 。 其中 KafkaProducer 是用于发送消息的类&#xff0c; ProducerRecord 类用于封装Kafka的消息…