Wątek przeniesiony 2016-11-24 13:42 z C/C++ przez ŁF.

Modernizacja kodu. Dodanie funkcji

0

Witam, to znowu ja :D Tym razem w nowym temacie i z nowym problemem.Aplikacja to gra, Użytkownik grający w tą grę miałby do dyspozycji 1000$, za kupienie określonego kuponu lotto zabiera mu np; 10 $, zaznacza liczby, sprawdza i wygrywa lub przegrywa. Jeśli wygra dostaje np ; 10$
Oprócz Lotto miałyby być różne rozrywki np inne rodzaje zakładów itd.
I własnie o to chodzi.. Zastanawiam się jak wpisać to, żeby zabierało i przy ewentualnej wygranej dodawało pieniądze. Oprócz tego, żeby stan konta był cały czas prawidłowy. Mam jeszcze problem z system("cls") gdyż nie działa to tak,jak chciałbym. Gdyby ktoś mógł zerknąć na ten kod, ocenić go i powiedzieć jak napisać to o co poprosiłem, byłbym wdzięczny. Wklejam kod :)

#include <iostream>
#include <conio.h>
#include <ctime>
#include <windows.h>
#include <time.h>


using namespace std;
int Pieniadze(1000), wybor;
int main()

{
    srand(time(NULL));
   do{

    cout << "WITAMY W LOTTO!.........................POSIADASZ  " << Pieniadze << "$..............." << endl;
    cout << "1. MALY LOTTO(30$)" << endl;
    cout << "2. LOTTO(10$)" << endl;
    cout << "3. WYJSCIE" << endl;
    cout << "4. " << endl;
    cout << "5. " << endl;
    cout << "6. " << endl;
    cout << "Wybierz:";
    cin >> wybor;

    int Liczba1 = (rand() % 49) + 1;
    int Liczba2 = (rand() % 49) + 1;



   switch (wybor){


    case 1:
    {
        int Licz1;
        system("cls");
        cout << "podaj liczbe ktora zaznaczylbyc na kuponie:";
        cin >> Licz1;
        if (Liczba1 == Licz1)
            cout << "Gratulacje wygrales 10$!" << endl;
            else
            cout << "Poprawna liczba to: " << Liczba1 << '\n';
            system("cls");



        break;

    }

    case 2:
    {
        int Licz2, Licz1;
        system("cls");
        cout << "podaj 1 liczbe ktora zaznaczylbyc na kuponie:";
        cin >> Licz1;
        cout << "podaj 2 liczbe ktora zaznaczylbyc na kuponie:";
        cin >> Licz2;
        if ((Liczba1 == Licz1) && (Liczba2 == Licz2))
            cout << "Gratulacje wygrales 30$!" << endl;
        else
            cout << "Poprawne liczby to: " << Liczba1 << " i " << Liczba2 << '\n';
            system("cls");
        break;

    }

    case 3:
        system("cls");
        cout << "Dziekujemy za skorzystanie z programu, Do zobaczenia!:" << endl;
        break;

    default:
      cout <<"Nieprawidlowe Polecenie" << endl;
     srand(time(NULL));
      system("cls");

    }
    }while(wybor != 3);
    return 0;
}

Pozdrawiam

0

Nie używasz w ogóle zmiennej Pieniadze.

Co to znaczy, że cls nie działa tak jak byś chciał?

0

Czemu zmienne, które zadeklarowałeś są globalne?
Nie powinno tak się robić. W tym przypadku jest to absolutnie zbędne. Wrzuć je do funkcji main().
Dobrze rozumiem, że po wyrbanej akcji stan pieniężny musi ulec zmianie?
Jeśli tak, to od zmiennej, która jest przeznaczona do trzymania pieniędzy odejmnij lub dodaj daną wartość.

0
  1. Po prostu w instrukcji warunkowej która informuje o wygranej zrób
Pieniadze += kwota 

a w instrukcji która informuje o przegranej Pieniadze -= kwota

2. Pewnie chciałbyś podejrzeć informacje o wyniku losowania zanim ekran się wyczyści i pojawią się napisy kolejnej gry. Zaraz na końcu casea użyj np funkcji getch() - oznacza to że nic się nie zmieni dopóki nie wciśniesz jakiegokolwiek przycisku. Możesz dodać informację "press any key" żeby użyszkodnik wiedział że ma szukać na klawiaturze klawisza any xD
0

Udało mi się, kod lepiej działa, dodałem kilka nowych możliwości lecz....
No właśnie XD 4. Zakłady specjalne nie działa gdyż dodaje mi 1980002 kasy bez wygranej xd
Oprócz tego chce dodać jeszcze jakieś zabezpieczenia... no żeby ktoś nie mógł kupić jakiegoś lotka gdy nie ma kasy.
Wydaje mi się że poplątałem kod, no ale mam nadzieje że z pomocą przyjdziecie wy :)

#include <iostream>
#include <conio.h>
#include <ctime>
#include <windows.h>
#include <time.h>


using namespace std;
int main()

{
    int Pieniadze(100), wybor;
    srand(time(NULL));
   do{

    cout << "WITAMY W LOTTO!.........................POSIADASZ  " << Pieniadze << "$..............." << endl;
    cout << "------------------" << endl;
    cout << "1. MALY LOTTO(10$)" << endl;
    cout << "2. LOTTO(15$)" << endl;
    cout << "3. POJEDNYNCZY LOTEK(7$)" << endl;
    cout << "4. ZAKLADY SPECJALNE(dowolne) " << endl;
    cout << "5.WYJSCIE " << endl;
    cout << "6. " << endl;
    cout << "Wybierz:";
    cin >> wybor;

    int Liczba1 = (rand() % 49) + 1;
    int Liczba2 = (rand() % 49) + 1;
    int Liczba12 = (rand() % 10) +1;



   switch (wybor){


    case 1:
    {
        int Licz1;
        system("cls");
        cout << "podaj liczbe ktora zaznaczylbyc na kuponie:";
        Pieniadze -= 3;
        cin >> Licz1;
        if (Liczba1 == Licz1)
            cout << "Gratulacje wygrales 5$!" << '\n';
            Pieniadze += 5;
            cout << "Poprawna liczba to: " << Liczba1 << '\n';
            system("cls");



        break;

    }

    case 2:
    {
        int Licz2, Licz1;
        if ((Liczba1 == Licz1) && (Liczba2 == Licz2))
            Pieniadze += 30;
            cout << "Gratulacje wygrales 10$!" << '\n';
        system("cls");
        cout << "podaj 1 liczbe ktora zaznaczylbyc na kuponie(1 - 49):";
        cin >> Licz1;
        cout << "podaj 2 liczbe ktora zaznaczylbyc na kuponie(1 - 49):";
        cin >> Licz2;
        Pieniadze -= 15;

            cout << "Poprawne liczby to: " << Liczba1 << " i " << Liczba2 << '\n';

            getch();

            system("cls");

        break;

    }
    case 3:
        {

        int Licz1;
        if ((Liczba12 == Licz1));
        Pieniadze += 30;
            cout << "Gratulacje wygrales 7$!" << '\n';


         system("cls");
         cout <<"Podaj Liczbe z zakresu(1-10):";
         cin >> Licz1;
         Pieniadze -= 2;

              cout << "Poprawna Liczba to: " << Liczba12 << '\n';

              getch();

              system("cls");

         break;

         }
    case 4:
        int Licz1, Licz2;
        int Obstawa;

            if ((Licz1 == Liczba1) && (Licz2 == Liczba2))
            cout << "Gratulacje! Wygrales" << Obstawa << endl;
            Pieniadze += Obstawa;

        system("cls");
        cout << "ile pieniedzy chcesz obstawic?:";
        cin >> Obstawa;

        cout << "PODAJ 2 LICZBY Z ZAKRESU(1 - 25)" << endl;
        cout << "PIERWSZA LICZBA:";
        cin >> Licz1;

        cout << "DRUGA LICZBA:";
        cin >> Licz2;

         cout <<"Niestety nie udalo sie... Nastepnym razem!" << endl;
         Pieniadze -= Obstawa;

            getch();
            system("cls");


    case 5:
        system("cls");
        cout << "Dziekujemy za skorzystanie z programu, Do zobaczenia!:" << endl;
        break;

    default:
        system("cls");
      cout <<"Nieprawidlowe Polecenie(nacisnij dowolny przycisk aby kontynuowac)" << endl;
     getch();






    }
    }while(wybor != 5);
    return 0;
}

Pozdrawiam i liczę że pomożecie :)

0

To jeszcze dopowiem że zauważyłem że 1 nie działa gdyż dodaje mi pieniądze :))

0

3 Tak samo ;/ chyba coś przekombinowałem ;p

0

Ciała Twoich ifów nie są w ogóle otoczone klamerkami, a wcięcia sugerują, że jednak chciałbyś aby tak było.

Postaraj się przy kolejnym wrzucaniu kodu zadbać o to, żeby wcięcia odpowiadały logicznej strukturze.

0

@Jakubczyk Można wiedzieć z jakich źródeł uczysz się cpp?

0
  1. int Pieniadze(100) ?!
    int Pieniadze = 100;
  case 1:
    {
        int Licz1;
        system("cls");
        cout << "podaj liczbe ktora zaznaczylbyc na kuponie:";
        Pieniadze -= 3; // kupon za 10$ odejmujesz 3?
        cin >> Licz1;
        if (Liczba1 == Licz1)
            cout << "Gratulacje wygrales 5$!" << '\n';   // gdzie są klamry?
            Pieniadze += 5;
            cout << "Poprawna liczba to: " << Liczba1 << '\n';
            system("cls");
 
 
 
        break;
  
case 3:
        {
 
        int Licz1;
        if ((Liczba12 == Licz1)); // czemu sprawdzasz ifa na początku?! Tak samo w 4
        Pieniadze += 30; // dodajesz 30$
            cout << "Gratulacje wygrales 7$!" << '\n'; // komunikat 7$ WTF
 
 
         system("cls");
         cout <<"Podaj Liczbe z zakresu(1-10):";
         cin >> Licz1;
         Pieniadze -= 2;
                                            //gdzie sprawdzenie ://
              cout << "Poprawna Liczba to: " << Liczba12 << '\n';
 
              getch();
 
              system("cls");
 
         break;
 

Cały kod napisz od nowa, bo to się kupy nie trzyma, mógłbym wytykać kolejne błędy, ale po co?

Jak zakład kosztuje 10$, a ty masz 5$ i chcesz, aby wyskoczył komunikat o tym, że nie masz pieniędzy to na start możesz ifa dać
if(pieniadze > 10)
{
//kod
}
else
cout << "Nie masz wystarczajaca pieniedzy";

Skąd ty się uczysz tego c++?

Napisałem ten kod w 5 minut, popatrz jak działa i zobacz jakie błędy robisz.

#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;

int wybor, pieniadze=100;
int liczba_losowana, liczba_wpisana;
int main()
{
    srand(time(NULL));
    while(wybor !=2)
    {
        system("cls");
        cout << "Totolotek" << endl;
        cout << "Twoj stan konta: " << pieniadze << endl;
        cout <<"1. Mini lotek (10$)" << endl;
        cout <<"2. Wyjdz" << endl;
        cout << "Opcja: ";
        cin >> wybor;
        switch(wybor)
        {
        case 1:
            {
                if(pieniadze > 10)
                {
                    liczba_losowana= rand()%49+1;
                    system("cls");
                    cout << "Wybrales Mini Lotek" << endl;
                    pieniadze -= 10;
                    cout << "Podaj liczbe: ";
                    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;


            }
            break;
            case 2: cout << "Wybrales wyjscie" << endl; return 0;
        }
    }
} 
0

Bardzo dziękuje za wszystkie rady. Co do moich nauk C++ startowałem "od zera do gier kodera" oprócz tego kika tutoriali na youtubach.. (Przerwałem od zera do gier kodera gdyż dostałem rady iż jest to złe i nie przynosi rezultatów. Jednak nie mogę powiedzieć że jestem zaawansowany gdyż 1 miesiąc temu zaczołem z tym przygodę. Jeszcze raz dziękuje za rady, na pewno się do nich dostosuje i kod napiszę poprawnie. Pozdrawiam

0

"Od zera do gier kodera" jest dobre, ale nie powinienes czytać całego od razu. Najpierw zapoznaj się dokładnie z podstawami.
Polecam "Symfonia C++" Tom 1. Jerzego Grębosza. Po tej lekturze powiniens rozumieć podstawy.
Pozdrawiam!

0

Dziękuje, na pewno spróbuje. Również Pozdrawiam

0
Jakubczyk napisał(a):

Bardzo dziękuje za wszystkie rady. Co do moich nauk C++ startowałem "od zera do gier kodera" oprócz tego kika tutoriali na youtubach.. (Przerwałem od zera do gier kodera gdyż dostałem rady iż jest to złe i nie przynosi rezultatów. Jednak nie mogę powiedzieć że jestem zaawansowany gdyż 1 miesiąc temu zaczołem z tym przygodę. Jeszcze raz dziękuje za rady, na pewno się do nich dostosuje i kod napiszę poprawnie. Pozdrawiam

To zacznij oglądać Zelenta, lub cpp0x
Tam nauczysz się dobrze podstaw.

0
Jakubczyk napisał(a):

Dziękuje, na pewno spróbuje. Również Pozdrawiam

Książek nie polecam, lepiej online.

0

Książek nie polecam, lepiej online.

Jeśli opisują aktualny standard, to czemu nie?
Szukaj czegoś od C++11 w górę i posiłkuj się dokumentacją, np. cppreference.

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

No tak. Tyle że nadal nie wiem gdzie to umiescic zeby reszta kodu działała ....

0

Pomoże ktos? XD

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