I have this code for a simple Dice throwing program with betting units and everything... you bet, if you get it right you get the amount u bet times the amount of dice you chose... if you're wrong but by a little (in the range of the number you picked +- the number of dice u picked) you don't lose anything, and if you're really off you lose...
I have a while loop that basically keeps 2 things in mind: as long as the user either has BUs or if they didn't type "no" or "No" for the try again... but for some reason it just doesn't work... lol. any ideas why? the betting system works, it recognizes that betting.currentBU == 0, but the while loop just won't react lol.
#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; }