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 
#include 
#include 

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;
}

运行截图

C++大学教程(第九版)6.48掷骰子游戏的改进_第1张图片
C++大学教程(第九版)6.48掷骰子游戏的改进_第2张图片

你可能感兴趣的:(C++大学教程,c++,开发语言)