Witam , od miesiąca ucze się języka C++ ,zakupiłem książkę "Przewodnik dla początkujących C++" Allex Allein .
Zad. Napisz program "symulujący jednorękiego bandytę",który wyświetla użytkownikowi losowe wyniki.Niech każdy z bębnów maszyny przyjmuje co najmniej trzy wartości.Nie przejmuj [... ] po prostu wylosuj wynik,wyświetl go i zaprezentuj wygraną.
Chciałbym abyście ocenili mój kod i pomogli w rozwiązaniu problemu.
1.Otóż męcze się od jakiegoś czasu z kodem i nie wiem jak zrobić ,żeby podczas przegrania pieniędzy ,wartosc(pieniadze) nie spadala ponizej zera
2. Na kilkanascie sposobow probowalem ulozyc warunek aby podczas wprowadzania stawki pobieralo tylko i wylacznie 10,20 lub 30 ,a po wprowadzeniu innej niz te 3 liczby powinno wyswietlic komunikat o wprowadzeniu zlej liczby i poproszeniu o ponownme podanie stawki ,ani razu nie udalo mi sie tego osiagnac.
Oto moj kod:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#include <stdio.h>
using namespace std;
int stawka=0;
int kasa=0;
int bilans;
int ilosc[3]={10,20,30};
void menu();
void graj();
void wplata();
int wygrana(int win);
void wprowadz_stawke();
void sprawdzenie();
int main()
{
menu();
return 0;
}
void menu() //Menu Gry
{
cout<<"1_______Graj"<<endl;
cout<<"2_______Wyjdz"<<endl;
char wybor;// pierwsza zmienna wyboru opcjii z Menu
wybor=getch();// automatycznie pobiera znak (po wcisnieciu 1 zagram po wcisnieciu 2 wyjde z programu)
switch(wybor)
{
case '1':
{
graj();//funkcja rozgrywki
}
break;
case '2':
{
cout<<"Bye Bye"<<endl;
exit(0);//wyjscie z programu
}
}
}
void graj()//funkcja rozgrywki
{
srand(time(NULL));
wplata();//funkcja wplata salda na konto do gry
int tab[3]={};//tablica z trzema wartosciami
cout<<endl<<"Wcisnij enter,aby grac"<<endl;
getchar();//czeka na klawisz
while(true)
{
cin.get() == '\n';//czeka na wprowadzenie Entera
for(int i=0;i<3;i++)//3 x losowanie liczby od 1 do 3
{
sprawdzenie();
wprowadz_stawke();//funkcja wprowadzenia stawki
cout<<endl;
tab[0]=rand()%3+1;
cout<<tab[0];
tab[1]=rand()%3+1;
cout<<tab[1];
tab[2]=rand()%3+1;
cout<<tab[2];
cout<<endl<<endl;
break;
}
if(tab[0]==tab[1] && tab[0]==tab[2] && tab[1]==tab[2])//sprawdzenie warunku wygranej
{
cout<<endl<<" !!! Wygrales !!!"<<endl;
cout<<"Twoj bilans wynosi : "<<kasa+wygrana(10)<<endl;
kasa+=bilans;
}
else
{
cout<<" Graj dalej -->"<<endl;
cout<<"Twoj bilans wynosi : "<<(kasa-=stawka)<<endl;//po nie wygranej kolejce bilans maleje
}
}
}
void wplata() //funkcja wplaty
{
cout<<"Wplac pieniadze"<<endl;
cin >> kasa;
cout<<"Twoj bilans = "<<kasa<<endl;
}
int wygrana(int win)//Obliczanie wygranej
{
if(stawka==ilosc[0] || stawka==ilosc[1] || stawka==ilosc[2])
{
return bilans=win*=stawka;
}
}
void wprowadz_stawke()//wprowadzanie stawki ,
{
cout<<endl<<"Podaj swoja stawke(10,20,30)"<<endl;
cin>>stawka;
}
void sprawdzenie()//jesli kasa = gra od nowa lub wyjscie
{
if(kasa==0)
{
char wybor2;
cout <<"Nie masz wystarczajacej ilosci pieniedzy"<<endl;
cout<<"1. Graj dalej"<<endl;
cout<<"2. Wroc do menu"<<endl;
wybor2=getch();
switch (wybor2)
{
case '1':{wplata();}
break;
case '2' :{return menu();}
}
}
}