Pomoc z zabespieczeniami :)

0

Witam, piszę w tym temacie aby nie zakładać kolejnego. Tym razem chodzi mi o zabezpieczenie przed wpisaniem litery do zmiennej wybor. Nie wiem jak to zrobić i gdzie to umiescic. Co do poprzednich wskazówek starałem sie do nich zastosowac. I przerabiam Symfonie c++ Tom1 :)
Kod:

include <iostream>
#include <windows.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;
 
int wybor, pieniadze=100;
int main()
{
    int  liczba_wpisana1, liczba_wpisana2, liczba_wpisana;
    srand(time(NULL));
 
     while(wybor !=7)
    {
        int liczba_losowana= rand()%49+1;
        int liczba_losowana1= rand()%49+1;
        int liczba_wpisana3;
 
        system("cls");
        cout << "***************MENU***************" << endl;
        cout << "-------------------" << endl;
        cout <<"0. INFORMACJE                   Twoj stan konta:  " << pieniadze<< " $ " << endl;
        cout <<"1. MINI LOTEK (10$)" << endl;
        cout <<"2. SREDNI LOTEK (20$)" << endl;
        cout <<"3. POJEDYNCZY LOTEK (7$)" << endl;
        cout <<"4. SZYBKI TYSIAK(1000$)" << endl;
        cout <<"5. SZCZESLIWA TROJKA (1$)" << endl;
        cout <<"6. KOD" << endl;
        cout <<"7. WYJSCIE" << endl;
        cout << "Opcja: ";
        cin >> wybor;
    {
 
 
 
 
        {
            switch(wybor)
            {
        case 0:
            {
                system("cls");
                cout <<"W GRZE CHODZI O TO, ZEBY JAK NAJWIECEJ WYGRAC, A JAK NAJMNIEJ STRACIC." << endl;
                cout <<"MASZ DO WYBORU ROZNE TYPY GIER I ZAKLADOW." << endl;
                cout <<"JEDNAK MUSISZ PAMIETAC, ZE KAZDY Z GIER KOSZYUJE!" << endl;
                cout <<"NA START OTRZYMUJESZ 100$!ZAGOSPODARUJ JE DOBRZE :)" << endl;
                cout <<"POZDRAWIAM! TWORCA" << endl;
 
                }
                getch();
 
            break;
 
        case 1:
            {
                if(pieniadze > 10)
 
                {
                    liczba_losowana= rand()%49+1;
                    system("cls");
                    cout << "Wybrales Mini Lotek" << endl;
                    pieniadze -= 10;
                    cout << "Podaj liczbe(1-49): ";
                    cin >> liczba_wpisana;
                     if(liczba_wpisana==liczba_losowana)
                    {
                        cout << "Brawo wygrales 20$!" << endl;
                        pieniadze+=20;
                        system("pause");
                    }
                    else
                    {
                        cout << "Niestety przegrales ;/" << endl;
                        cout << "Liczba wylosowana to: " << liczba_losowana << endl;
                        system("pause");
                    }
                }
                else cout << "Nie masz pieniedzy na to!" << endl;
                getch();
 
 
            }
            break;
            case 2:
            {
                if(pieniadze > 20)
                {
 
                    system("cls");
                    cout << "Wybrales Mini Lotek" << endl;
                    pieniadze -= 20;
                    cout << "Podaj 1 liczbe (1-49): ";
                    cin >> liczba_wpisana1;
                    cout << "Podaj 2 liczbe (1-49): ";
                    cin >> liczba_wpisana2;
                    if((liczba_wpisana1==liczba_losowana1)&& (liczba_wpisana == liczba_losowana))
                    {
                        cout << "Brawo wygrales 50" << endl;
                        pieniadze+=50;
                        system("pause");
                    }
                    else
                    {
                        cout << "Niestety przegrales" << endl;
                        cout << "Liczby wylosowane to " << liczba_losowana << " i " << liczba_losowana1 << endl;
                        system("pause");
 
                    }
                }
                else cout << "Nie masz pieniedzy na to!" << endl;
                getch();
 
            }
            break;
 
            case 3:
            {
                if(pieniadze > 7)
 
                {
                    liczba_losowana= rand()%9+1;
                    system("cls");
                    cout << "Wybrales POJEDYNCZY LOTEK" << endl;
                    pieniadze -= 7;
                    cout << "Podaj liczbe(1-10): ";
                    cin >> liczba_wpisana;
                     if(liczba_wpisana==liczba_losowana)
                    {
                        cout << "Brawo wygrales 50$!" << endl;
                        pieniadze+=50;
                        system("pause");
                    }
                    else
                    {
                        cout << "Niestety przegrales ;/" << endl;
                        cout << "Liczba wylosowana to: " << liczba_losowana << endl;
                        system("pause");
                    }
                }
                else cout << "Nie masz pieniedzy na to!" << endl;
                getch();
 
 
            }
            break;
 
            case 4:
            {
                if(pieniadze > 1000)
 
                {
                    liczba_losowana= rand()%2+1;
                    system("cls");
                    cout << "Wybrales SZYBKI TYSIAK" << endl;
                    pieniadze -= 1000;
                    cout << "Podaj liczbe(1-3): ";
                    cin >> liczba_wpisana;
                     if(liczba_wpisana==liczba_losowana)
                    {
                        cout << "Brawo wygrales 2000$!" << endl;
                        pieniadze+=2000;
                        system("pause");
                    }
                    else
                    {
                        cout << "Niestety przegrales ;/" << endl;
                        cout <<"=======================" << endl;
                        cout << "Liczba wylosowana to: " << liczba_losowana << endl;
                        cout <<"=======================" << endl;
                        system("pause");
                    }
                }
                else cout << "Nie masz pieniedzy na to!" << endl;
                getch();
 
 
            }
            break;
            case 5:
 
                if(pieniadze > 1)
                {
                    int liczba_losowana3= rand()%49+1;
                    system("cls");
                    cout << "Wybrales SZCZESLIWA TROJKA" << endl;
                    pieniadze -= 1;
                    cout << "Podaj 1 liczbe: ";
                    cin >> liczba_wpisana1;
                    cout << "Podaj 2 liczbe: ";
                    cin >> liczba_wpisana2;
                    cout << "Podaj 3 liczbe: ";
                    cin >> liczba_wpisana3;
                    if((liczba_wpisana1==liczba_losowana1)&& (liczba_wpisana == liczba_losowana) && (liczba_wpisana3 == liczba_losowana3))
                    {
                        cout << "Brawo wygrales 100$!" << endl;
                        pieniadze+=100;
                        system("pause");
                    }
                    else
                    {
                        cout << "Niestety przegrales" << endl;
                        cout << "Liczby wylosowane to " << liczba_losowana << " i " << liczba_losowana1<<" i " << liczba_losowana3 << endl;
                        system("pause");
 
                    }
                }
                else cout << "Nie masz pieniedzy na to!" << endl;
                getch();
 
 
            break;
 
 
            case 6:
 
                 int podany_kod;
 
                     {
 
                         {
                    system("cls");
                    cout <<"JESLI WPISZESZ NIE POPRAWNY KOD, NIC SIE NIE STANIE!" << endl;
                    cout <<"JESLI WPISZESZ POPRAWNY KOD, DODA CI 1000$ :)" << endl;
                    cout << "PODAJ KOD:";
                    cin >> podany_kod;
                         }
                    if (podany_kod == 3456)
                    {
                      cout << "PIENIADZE ZOSTALY DODANE!!" << endl;
                      getch();
                      pieniadze += 1000;
 
                    }
                       {
                        if (podany_kod != 3456)
                        cout <<"KOD NIE PRAWIDLOWY!" << endl;
                        getch();
                       }
                    }
 
                  break;
 
 
            case 7:
                {
                    system ("cls");
                    cout <<"DO ZOBACZENIA!" << endl; return 0;
                }
 
                }
        }
 
    }
 
 
 
 
 
 
   }
 
 
 
}

Chodzi mi tylko o zabezpieczenie. Nic więcej. Pozdrawiam! Jakub :)
Jeszcze tylko dodam że funkcja 6 była mi potrzebna do testowania programu :)
I sprawdzeniu :)

0

Zrobiłem to za pomocą if'a,
co do liczb, działa. Ale jesli ktos wpisze Litere to juz pokazuje case 0 i sie zawiesza ;/


        {
            if (wybor != 1,2,3,4,5,6,7,0);
            system("cls");
            cout <<"Nie ma takiej opcji!" << endl;
            getch();
        }
0

Możesz tak zrobić:

//(...)
cin >> wybor;
if (cin.fail())
{
    cin.clear();
    cin.ignore(numeric_limits<int>::max(), '\n');
    continue;
}
//(...)

Nie zapomnij dołączyć #include <climits>

0
Dawid Farbaniec napisał(a):

Możesz tak zrobić:

//(...)
cin >> wybor;
if (cin.fail())
{
    cin.clear();
    cin.ignore(numeric_limits<int>::max(), '\n');
    continue;
}
//(...)

Nie zapomnij dołączyć #include <climits>

Niestety pokazuje mi błąd z numeric_limits,
i że czegos brakuje przed int

0

Spróbuj #include <limits> zamiast #include <climits>

0

Dziękuje miłemu koledze. Pomogło i zadziałało :))
Jeszcze raz Dziękuje i Pozdrawiam! :)

0

Jeszcze pytanie dotyczące kodu.
Chciałbym aby zmienna Pieniadze byla zapisywana w pliku tekstowym po każdym uruchomieniu gry.
I żeby przy każdym uruchomieniu gry była odczytywana.
Inaczej mówiąć żeby po prostu kasa się zapisywała :D
Może masz również do tego jaki pomysł?

1 użytkowników online, w tym zalogowanych: 0, gości: 1