c ++ 11 — базовая игра в кости C ++

У меня есть проблема здесь, было бы очень приятно, если бы кто-нибудь мог помочь мне здесь. Это мой первый раз, когда я использую эту программу, так что не судите.

#include <cstdlib>
#include <iostream>

using namespace std;
int throw1, throw2, throw3, throw4;
int bet1 = 100;
int bet2 = 300;
int bet3 = 500;
int bet=(bet1, bet2, bet3);
int deposit;
int account;

int main(){
int count = 0;

while(count < 3){

cin>>deposit;

while(deposit>5000 || deposit<0){                //Makes sure so that my deposit is between 0-5000
cout<<"deposit failed"<<endl;
cin>>deposit;

}
account = deposit;
cout<<"You have deposited" <<deposit<<"Swedish Krona"<<endl;
cout<<"and you have this much cash on your account"<<account<<"Swedish Krona"<<endl;

if (konto>499){                 //Makes sure so that i have the money to bet, and if i dont have the money, i can just put in more
cout<<"please place your bet"<<endl;
cout<<"bet1=100, bet2=300, bet3=500"<<endl;
cin>>bet1;
cin>>bet2;
cin>>bet3;
account = (deposit - bet);
cout<<"you have this much cash on your account"<<account<<"Swedish Krona"<<endl;
}
else if(account>299){
cout<<"please place your bet"<<endl;
cout<<"bet1=100, bet=300"<<endl;
cin>>bet1;
cin>>bet2;
account =(deposit - bet);
cout<<"you have this much cash on your account"<<account<<"Swedish Krona"<<endl;
}
else if(account>99){
cout<<"please place your bet"<<endl;
cout<<"bet1=100"<<endl;
cin>>bet1;
cout<<"you have placed your bet"<<bet<<"Swedish Krona"<<endl;
}

while (account<100 || deposit>5000){
cout<<"insufficient funds"<<endl;
cin>>deposit;
account=deposit;
}

{
cout<<"Throw dice"<<endl;
srand(time(0));
Throw1 = rand() % 6 + 1;
Throw2 = rand() % 6 + 1;
Throw3 = rand() % 6 + 1;
Throw4 = rand() % 6 + 1;
cout<<"You rolled"<<Throw1<<endl;
cout<<"You rolled"<<Throw2<<endl;
cout<<"Computer rolled"<<Throw3<<endl;
cout<<"Computer rolled"<<Throw4<<endl;
}
}
count++;

system ("pause");
}

Итак, дело в том, что по какой-то причине я всегда делаю ставку 500, хотя и набираю bet1 или bet2, и я понятия не имею, как решить эту проблему. И тогда моя функция цикла (int count 0; while(count < 3)count++) он начинает бесконечно зацикливаться, и я ничего не нажимаю, хотя я использую ту же функцию цикла в простом кодировании, например, просто набираю cout<< все работает нормально, но когда я использую его в этом коде, он истощает, кто-нибудь знает, почему это происходит, был бы признателен, если бы кто-нибудь мог ответить, спасибо заранее.

-3

Решение

int bet1 = 100;
int bet2 = 300;
int bet3 = 500;
int bet=(bet1, bet2, bet3)

Последняя строка будет оценена следующим образом: 100, 300, 500. Результатом списка выражений, разделенных запятыми, будет последнее значение, равное 500. Таким образом, ваша переменная ставки всегда будет установлена ​​на 500.

9

Другие решения

Что вы указали в своем комментарии под кодом, (int count 0; while(count < 3)count++)выглядит как странная смесь for а также while петля. Пожалуйста, еще раз проверьте ваш учебник C ++ / онлайн-уроки о том, как написать правильный цикл.

В коде, который вы показываете, в вашем while цикл, вы не модифицируете count переменная — следовательно, она будет зацикливаться вечно, если count < 3 перед петлей. Отступы вашего кода действительно вводят в заблуждение. Я взял на себя смелость переформатировать ваш код — и теперь вы должны увидеть, что count++ утверждение на самом деле находится за пределами вашего основного while петля!

Если вы хотите сделать что-то в течение определенного количества раз, рекомендуется использовать for цикл, это делает сложнее забыть приращение!

5

Вы увеличиваете count вне петля, так что будет всегда быть ноль. Либо переместите его в цикле (правильный отступ является ключевым!) Или, возможно, используйте for цикл вместо:

for (count = 0; count < 3; ++count) { ... }
3

Несколько советов,

  • поместите вашу подсказку для депозита (insattning) в функцию
  • поместите подсказку для ставки в функцию
  • проверьте, достаточно ли денег, прежде чем предлагать ставку
  • получить ввод в строку, затем проверить ввод (еще не сделано ниже)
  • проверьте правильность ставки (= 100, = 300, = 500, ставка<= KONTO)

Вот эти удобные функции,

#include <string>
#include <cstdlib>
#include <iostream>

using namespace std;
int kast1, kast2, kast3, kast4;
int bet1 = 100;
int bet2 = 300;
int bet3 = 500;
int bet=0; //assignment didn't make sense
int insattning=0;
int konto=0;

//deposit
int get_insattning()
{
int good = 0;
while( !good )
{
cout<<"deposit"<<endl; //prompt for deposit
cin>>insattning;
if(insattning>5000 || insattning<0)//Makes sure so that my deposit is between 0-5000
{
cout<<"insattning fel, var vänlig och gör rätt denna gången"<<endl;
}
else good = 1;
}
cout<<"du har nu satt in" <<insattning<<"kr"<<endl;
return insattning;
}

Мне не ясно, хотите ли вы 1 ставку в 100 300, или 500, или 3 ставки. Это делает первый,

//bet
int get_bet()
{
int good = 0;
int bet;
std::string validbets = "";
if(konto<100){ cout<<"you need more money"; return 0; }
while( !good )
{
cout<<"var vänlig och placera ditt bet"<<endl;
if(konto>=100){ validbets = "bet1=100"; }
if(konto>=300){ validbets += ", bet=300"; }
if(konto>=500){ validbets += ", bet=500"; }
cout<<validbets<<endl;
cin>>bet;
if( bet >= konto ) {
cout<<"you don't have enough money"<<endl;
continue;
}
if (bet==500){                 //Makes sure so that i have the money to bet, and if i dont have the money, i can just put in more
cout<<"du har så här mycket på kontot nu "<<konto<<" kr"<<endl;
good = 1;
}
else if(bet==300){
cout<<"du har så mycket på kontot nu "<<konto<<" kr"<<endl;
good = 1;
}
else if(bet==100){
cout<<"du har nu bettat "<<bet<<" kr"<<endl;
good = 1;
}
else {
cout<<"you must place valid bet"<<endl;
continue;
}
}
return bet;
}

Теперь ваша основная игра стала чище / проще для чтения. Я не знаю, каковы условия выигрыша или выплаты, и так как ваши подсказки не на английском языке, я не могу прочитать их, чтобы сказать, что делать дальше,

int main()
{
int count = 0;
int bet;
srand(time(0));
for( count=0; (count < 3); count++)
{
konto = get_insattning();
if (konto<100)
{
cout<<"du har inte nog med pengar, vänligen sätt in pengar"<<endl;
continue;
}
cout<<"och du har så här mycket i ditt konto "<<konto<<" kr"<<endl;
bet = get_bet();
//when you bet, reduce konto by bet
konto = (konto - bet);
{
cout<<"slå tärningar"<<endl;
kast1 = rand() % 6 + 1;
kast2 = rand() % 6 + 1;
kast3 = rand() % 6 + 1;
kast4 = rand() % 6 + 1;
cout<<"Du fick"<<kast1<<endl;
cout<<"du fick"<<kast2<<endl;
cout<<"datorn fick"<<kast3<<endl;
cout<<"datorn fick"<<kast4<<endl;
}

Вам нужно написать код, чтобы определить, выиграл вы или проиграл, а затем добавить в конто, когда вы выиграете,

        //did you win or lose?
//win?  add money to konto
//lose?  you have already deducted from konto
}
system ("pause");
}

Эти предложения должны помочь вам исправить вашу программу.

0
По вопросам рекламы [email protected]