【问题标题】:How can I do to keep the value of a variable after a do while loop?在 do while 循环后如何保持变量的值?
【发布时间】:2022-01-22 01:40:13
【问题描述】:

我一直在编写一个程序来模拟赌场的轮盘赌,事情是每次我在游戏结束后尝试重复游戏时,我都希望游戏继续进行并且钱相同,所以如果你有亏了你从那笔钱开始,这里是代码(它是西班牙语,但我认为它很清楚):

#include <cstdlib>
#include <ctime>
#include <iostream>

using namespace std;
int num, pri, randum, num2, op, num3 = 10000, col = randum, rep, clear;
int main() {
    do {
        int num4 = op;
        cout << "Escoja la opción de la que apostar.\n";
        cout << "1 - Apostar a un número. \n2 - Apostar a un color \n";
        cout << "Elija opción: ";
        cin >> pri;
        cout << " \n";
        cout << " \n";

        switch (pri) {
        case 1: {
            srand(time(0));
            randum = rand() % 37 + 1; //si poner 37 + 1 te va cojer números hasta el 37 no?
            if (num4 != 10000) {
                cout << "Su saldo actual es " << num3 << " €\n";
            } else {
                cout << "Su saldo actual es 10000 €\n";
            }
            cout << "Ha elegido apostar a un número\n";
            cout << "Introduzca el dinero que quiere apostar -->\n";
            cin >> num;
            cout << "Ahora introduzca el número que desee entre el 0 y 36 -->\n";
            cin >> num2;

            if (num2 == randum) {
                op = num3 + num;
                cout << "\n¡Enhorabuena! Has ganado! Ahora tienes " << op << " €\n";
            } else {
                op = num3 - num;
                cout << "\nLo sentimos... Has perdido la apuesta, ahora tienes " << op << " €\n";
                cout << "¿Quieres volver a jugar?\n- Sí -> 1\n- No -> 2\n";
                cin >> clear;
                if (clear == 1) {} else if (clear == 2) {
                    cout << "Bien, suerte en la próxima tirada.\n\n";
                }
            }
            break;
        }
        case 2: {
            if (num3 == 10000) {
                cout << "Su saldo actual es 10000 €\n";

            } else {
                cout << "Su saldo actual es " << num3 << " €\n";
            }
            cout << "Ha elegido apostar a un color\n";
            cout << "Introduzca el dinero que quiere apostar -->\n";
            cin >> num;
            srand(time(0));
            randum = rand() % 2 + 1;
            cout << "Ahora escoja rojo (1) o negro (2) -->\n";
            cin >> col;
            if (col == randum) {
                op = num3 + num;
                cout << "\n¡Enhorabuena! Has ganado! Ahora tienes " << op << " €";
            } else {
                op = num3 - num;
                cout << "\nLo sentimos... Has perdido la apuesta, ahora tienes " << op << " €";

            }
            cout << "¿Quieres volver a jugar?\n- Sí -> 1\n- No -> 2\n";
            cin >> clear;

            if (clear == 1) {} else if (clear == 2) {
                cout << "Bien, suerte en la próxima tirada.\n\n";
            }
        }
        }
    } while (clear == 1);

    return 0;
}

【问题讨论】:

  • 不要为 C++ 问题标记 C。
  • 这并没有解决问题,而是将这些调用移至srand 开头的main。它只能在程序开始时调用一次。

标签: c++ c++11


【解决方案1】:

我建议你把钱存到一个文件里
像这样:

 #include <fstream>
    
 ofstream myfile ("money.txt");
  if (myfile.is_open())
  {
    myfile << "put the money in the bag here";
    myfile.close();
  }
  else cout << "Unable to open file";

无论何时你想读取值
使用这个:

  string line;
  ifstream myfile ("money.txt");
  if (myfile.is_open())
  {
      getline (myfile,line);
      cout << line << '\n';
      myfile.close();
  }

  else cout << "Unable to open file"; 

【讨论】:

  • 我怎样才能在我的代码中包含这个,我必须制作一个不同的文件还是什么?
  • 即使用户关闭终端,文件也会永久保存该值。但当然,用户可以用便笺打开它并添加写入 1 000 000 000 并成为亿万富翁。因此,您需要在以多种方式读取文件之前进行检查。
  • 但是我必须将您发送给我的那些东西复制粘贴到我的代码中,还是我必须在另一个中制作它?或者也许将其粘贴到 .txt 文件中,我真的不明白。
  • 1- #include 在顶部。 2- 创建一个名为 storeNewMoney(amount) 的函数和另一个返回金额的函数 3- 当您想要更新或读取用户拥有的数量时,调用其中一个函数
  • 很抱歉我找不到让它工作的方法,我刚开始学习 C++,这是我理解要做的事情:
【解决方案2】:

所以,这应该很容易做到。

在投注开始前初始化循环外的起始金额。

在循环结束时,询问用户是否想下更多赌注。

这对你有用吗?或者您是否需要在启动代码本身时对其进行初始化?你可以使用静态的

我只是从您的代码中更改了一些内容:

#include <cstdlib>
#include <ctime>
#include <iostream>

using namespace std;

int main()
{
    int money = 10000, bet_amount = 0, clear, pri;
    cout << "Su saldo inicial es " << money << " €\n";

    do
    {
        cout << "Escoja la opción de la que apostar.\n";
        cout << "1 - Apostar a un número. \n2 - Apostar a un color \n";
        cout << "Elija opción: ";
        cin >> pri;
        cout << " \n";
        cout << " \n";

        cout << "Introduzca el dinero que quiere apostar -->\n";
        cin >> bet_amount;

        switch (pri)
        {
        case 1:
        {
            int number_chosen = -1, randum;
            cout << "Ahora introduzca el número que desee entre el 0 y 36 -->\n";
            cin >> number_chosen;

            srand(time(0));
            randum = rand() % 37; // This will give result in the range 0 - 36

            if (randum == number_chosen)
            {
                money += bet_amount;
                cout << "\n¡Enhorabuena! Has ganado! Ahora tienes " << money << " €\n";
            }
            else
            {
                money -= bet_amount;
                cout << "\nLo sentimos... Has perdido la apuesta, ahora tienes " << money << " €\n";
            }

            break;
        }
        case 2:
        {
            int color = 0, randcol;
            cout << "Ahora escoja rojo (1) o negro (2) -->\n";
            cin >> color;
            srand(time(0));
            randcol = rand() % 2 + 1;
            if (randcol == color)
            {
                money += bet_amount;
                cout << "\n¡Enhorabuena! Has ganado! Ahora tienes " << money << " €\n";
            }
            else
            {
                money -= bet_amount;
                cout << "\nLo sentimos... Has perdido la apuesta, ahora tienes " << money << " €\n";
            }
            break;
        }
        default:
            break;
        }
        cout << "¿Quieres volver a jugar?\n- Sí -> 1\n- No -> 2\n";
        cin >> clear;
        if (clear == 2)
        {
            cout << "Bien, suerte en la próxima tirada.\n\n";
        }

    } while (clear == 1);

    cout << "Tu saldo final es " << money << " €\n";
    return 0;
}

我花了一段时间才弄明白代码,因为我必须使用谷歌翻译

【讨论】:

  • 是的,我在循环之前需要它,所以你从10000美元开始,当你完成时你有一定数量的钱并重复游戏,我从未使用过循环功能,你能告诉我代码完成了吗?我真的迷路了,谢谢。
  • 立即查看答案@zona1616
  • 是的,我刚刚检查过了,它运行良好,非常感谢!我想我现在明白了
  • 酷。很高兴它对你有用。请关闭线程并将其标记为答案?另外请注意使用更相关的变量名称,以便更容易阅读代码。万事如意
猜你喜欢
  • 2020-11-25
  • 2018-02-15
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 2020-05-07
相关资源
最近更新 更多