gpt4 book ai didi

c++ - while 循环运行...由于某种原因没有做它应该做的事

转载 作者:太空宇宙 更新时间:2023-11-04 15:50:34 25 4
gpt4 key购买 nike

我有一个简单的掷骰子程序的代码,其中包含投注单位和所有内容......你打赌,如果你做对了,你会得到你下注的金额乘以你选择的骰子数量......如果你错了但是有一点点(在你选择的数字 +- 你选择的骰子数量的范围内)你不会失去任何东西,如果你真的离开了你就输了......

我有一个 while 循环,它基本上牢记两件事:只要用户有 BU,或者他们没有输入“否”或“否”再试一次……但出于某种原因只是行不通...大声笑。任何想法为什么?投注系统工作,它识别出 betting.currentBU == 0,但是 while 循环不会使用react,哈哈。

#include <iostream>
#include <string>
#include <cstdlib>
#include <time.h>
#include <limits>

using namespace std;

struct Dices{ // structure containing all the dice related integers
int dice;
int total;
int choice;
} Dices = {0,0,0};

struct betting{ // structure containing all the betting integers
int currentBU;
int bettedBU;
} betting = {100, 0};


int DiceThrow(int dicechoice, int totalnum){ // a method for the dice being rolled
for(int i=1; i <= dicechoice;i++){
totalnum = totalnum + (rand() % 6 + 1); //total number, repeated by the loop for every dice
}
return totalnum;
}

int winningbet(int dicea, int cBU, int bBU){ // in case the user guesses it right
std::cout << "Congratulations, you got it right! \n";
cBU = cBU + (dicea * bBU); // give him money...
return(cBU);
}
int losingbet(int dicen, int totaln, int choicen, int cBU2, int bBU2){ //in case the user guesses wrong
if(choicen > (totaln+dicen) || choicen < (totaln+dicen)) // checks how wrong he is, if he's too off, he loses BUs
cBU2 = cBU2-bBU2;
else
std::cout << "you we're so close, you don't lose any BUs! \n"; //if he was really close, just let him know he was close
return(cBU2);

}

int main(){
string decision; // decision if they want to keep playing or not
srand ( (unsigned int)time(NULL) );
while(decision != "no" || decision != "No" || betting.currentBU != 0) // makes sure of the decision AND that he still has BUs
{
Dices.total = 0;
std::cout << "how many dice would you like to use? ";
std::cin >> Dices.dice;
std::cout << "how many How many BUs are you betting?(" << betting.currentBU << " BUs left) ";
std::cin >> betting.bettedBU;
if(betting.bettedBU > betting.currentBU){ // if he doesn't have enough BUs
std::cout << "Sorry, you don't have that many BUs...";
std::cout << "Want to try again with a different amount?(Yes/No) ";
std::cin >> decision;
}
else{
std::cout << "guess what number was thrown: ";
std::cin >> Dices.choice;
Dices.total = DiceThrow(Dices.dice, Dices.total);
if(Dices.choice == Dices.total){
betting.currentBU = winningbet(Dices.dice, betting.currentBU, betting.bettedBU);
std::cout << "Want to try again?(Yes/No) ";
std::cin >> decision;
} else{
std::cout << "Sorry, the number was " << Dices.total << "... better luck next time \n" ;
betting.currentBU = losingbet(Dices.dice, Dices.total, Dices.choice, betting.currentBU, betting.bettedBU);
if(betting.currentBU > 0){
std::cout << "Want to try again?(Yes/No) ";
std::cin >> decision;
}
}

}
}
if(betting.currentBU == 0){
std:cout << "sorry, you ran out of BUs...";
std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
}
else{
std::cout << "your final BU count is: " << betting.currentBU << "\n";
std::cout << "Thanks for playing, see you next time! (Press ENTER to terminate...)";
std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
}
return 0;

}

最佳答案

不应该是:

while(decision != "no" && decision != "No" && betting.currentBU != 0) 

我们需要检查 decision 是否不等于“no”且不等于“No”且 currentBU 不等于 0

关于c++ - while 循环运行...由于某种原因没有做它应该做的事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com