• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jędnoręki bandyta problem z monetami

Object Storage Arubacloud
0 głosów
173 wizyt
pytanie zadane 24 stycznia 2018 w C i C++ przez Corson Początkujący (260 p.)

Witam, oto pojawiam się z kolejnym problemem, chciałem ustawić żeby wybranie monet odbywało się max do 9 powyzej 9 wyswietlalo komunikat ze wiecej nie można ale niestety nie rozumiem czemu ona się zapętla w takim sposób że np. wybieram sobie 6 monet to po wylosowaniu liczb wyświetla się napis że nie mam juz wiecej monet i pyta mnie czy chce zagrać ponownie. Oraz chciałbym stowrzyć ranking np. kto wygrał za którym razem albo podawało danego gracza jego wynik końcowy, ponieważ miałem tylko odczyt na zajęciach a zapisu nie, wiec szukam pomocy tutaj :) 

  #include <iostream>
#include <conio.h>
#include <windows.h>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;

void dolary()
{
	HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY );
cout<<"   $ $          $ $         $ $          $ $     "<<endl;
cout<<"  $$$$$        $$$$$       $$$$$        $$$$$    "<<endl;
cout<<" $ $ $        $ $ $       $ $ $        $ $ $     "<<endl;
cout<<"  $$$$$        $$$$$       $$$$$        $$$$$    "<<endl;
cout<<"   $ $ $        $ $ $       $ $ $        $ $ $   "<<endl;
cout<<"  $$$$$        $$$$$       $$$$$        $$$$$    "<<endl;
cout<<"   $ $          $ $         $ $          $ $     "<<endl;
SetConsoleTextAttribute( hOut, 0 );
SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED );
}



void nazwa()
{

HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( hOut, FOREGROUND_RED | FOREGROUND_INTENSITY );
cout<<"|=================================|"<<endl;
cout<<"|R RRR     OOOOO    L       L     | "<<endl;
cout<<"|R    R   O     O   L       L     |" <<endl;
cout<<"|R    R  O       O  L       L     |" <<endl;
cout<<"|R RRR   O       O  L       L     |"<<endl;
cout<<"|R   R   O       O  L       L     |"<<endl;
cout<<"|R    R   O     O   L       L     |" <<endl;
cout<<"|R    R    OOOOO    L LLLL  L LLLL|"<<endl;
cout<<"|=================================|"<<endl;
SetConsoleTextAttribute( hOut, 0 );
SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED );
}



int main(int argc, char** argv) {

	HANDLE hOut;
    hOut = GetStdHandle( STD_OUTPUT_HANDLE );
	nazwa();
    setlocale(LC_ALL, "");
    srand(time(NULL));

    int wybor;
    string imie;
    cout << "Podaj swój nick" << endl;
    cin >> imie;
    system("cls");

    cout << "Witaj" << " " << imie << endl;
    Sleep(2000);
    system("cls");

    int papa;
    int monety=0;

    do
    {


        cout << "Podaj ile chcesz wrzucić monet" << endl;
        cin >> monety;
        system("cls");


        if (monety <= 9){
        while ( monety--) {

            int tabo[3] = {};
            cout << "1.Nowa gra" << endl;
            cout << "2.Ranking" << endl;
            cout << "3.Koniec"<<endl;
            cin >> wybor;
            switch (wybor) {
            case 1:
                cout << "Losowanie!" << endl;
                Sleep(1000);
                system("cls");
                for (int i = 0; i < 3; i++) {
                    tabo[i] = rand() % 9 + 1;
                    cout << tabo[i];
                }
                cout << endl;

                if ((tabo[1] == tabo[0]) && (tabo[2] == tabo[0])) {
                    cout << "Wygrałeś!" << endl;
                    dolary();
                }
                else if (tabo[1] == tabo[0]) {

                    tabo[2] = rand() % 9 + 1;
                    cout << tabo[0] << tabo[1] << tabo[2] << endl;
                    if (tabo[2] == tabo[0]) {
                        cout << "Wygrałeś!" << endl;
                        dolary();
                    }
                }
                else if (tabo[2] == tabo[0]) {

                    tabo[1] = rand() % 9 + 1;
                    cout << tabo[0] << tabo[1] << tabo[2] << endl;
                    if (tabo[1] == tabo[0]) {
                        cout << "Wygrałeś!" << endl;
                        dolary();
                    }
                }
                else if (tabo[2] == tabo[1]) {

                    tabo[0] = rand() % 9 + 1;
                    cout << tabo[0] << tabo[1] << tabo[2] << endl;
                    if (tabo[0] == tabo[1]) {
                        cout << "Wygrałeś!" << endl;
                      	dolary();
                    }
                }

                break;

            case 2:

                break;

            case 3:
				exit (0);
				break;
            }

            if (monety>=10)
            {
                cout << "Możesz wrzucić maksymalnie 10 monet" << endl;
            }else
            cout<<"Nie masz już więcej monet na grę"<<endl;


        cout << "Czy chcesz zagrać ponownie ?"<<endl;
        cout << "1.Tak" << endl << "2.Nie" << endl;

        cin >> papa;
    } while (papa == 1);
    }else
        cout << "bledna wartosc monet (max 9)" << endl;
}while (monety > 9);

    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 25 stycznia 2018 przez Secrus Nałogowiec (32,880 p.)
Zapomniałeś o dodaniu przypadku kiedy wszystkie wylosowane wartości są różne. Program nie wchodzi do żadnego z if-ów, pomija pozostałe casy, a jako że gracz nie może mieć więcej niż 9 monet, to od razu wyskakuje zakończenie. Chwilę to analizowałem i to jedyne co mi przychodzi do głowy.
komentarz 25 stycznia 2018 przez Corson Początkujący (260 p.)
To ten przypadek w którym miejscu powinienem dodać?
komentarz 25 stycznia 2018 przez Secrus Nałogowiec (32,880 p.)

Zaraz po sekcji if - else if w case 1: przed break musisz dopisać else (bedzie sie automatycznie spelniac jesli inne warunki sa niespelnione). Masz kod switcha całego, z miejscem do okodowania.

switch (wybor)
                {
                case 1:
                    cout << "Losowanie!" << endl;
                    Sleep(1000);
                    system("cls");
                    for (int i = 0; i < 3; i++)
                    {
                        tabo[i] = (rand() % 9) + 1;
                        cout << tabo[i];
                    }
                    cout << endl;

                    if ((tabo[1] == tabo[0]) && (tabo[2] == tabo[0]))
                    {
                        cout << "Wygra³eœ!" << endl;
                        dolary();
                    }
                    else if (tabo[1] == tabo[0])
                    {

                        tabo[2] = rand() % 9 + 1;
                        cout << tabo[0] << tabo[1] << tabo[2] << endl;
                        if (tabo[2] == tabo[0])
                        {
                            cout << "Wygra³eœ!" << endl;
                            dolary();
                        }
                    }
                    else if (tabo[2] == tabo[0])
                    {

                        tabo[1] = rand() % 9 + 1;
                        cout << tabo[0] << tabo[1] << tabo[2] << endl;
                        if (tabo[1] == tabo[0])
                        {
                            cout << "Wygra³eœ!" << endl;
                            dolary();
                        }
                    }
                    else if (tabo[2] == tabo[1])
                    {

                        tabo[0] = rand() % 9 + 1;
                        cout << tabo[0] << tabo[1] << tabo[2] << endl;
                        if (tabo[0] == tabo[1])
                        {
                            cout << "Wygra³eœ!" << endl;
                            dolary();
                        }
                    }
                    else
                    {
                        //kod calkowitej przegranej
                    }

                    break;

                case 2:

                    break;

                case 3:
                    exit (0);
                    break;
                }

+ inicjuj zmienne zaraz przed ich pierwszym użyciem. Ty wiesz jakiego typu są poszczególne zmienne, ale ktoś kto czyta kod, musi co chwilę szukać definicji zmiennej żeby sprawdzić jakiego jest ona typu.

komentarz 25 stycznia 2018 przez Corson Początkujący (260 p.)
Ale jak to zrobie to co się stanie z moim cout gdzie pyta czy chce zagrać ponownie, mogę go ponownie tam normalnie umieścić czy musze go w innym miejscu zdeklarować? Próbowałem zrobić tego fora, ale nadal nie działa program sie nie kompiluje nawet.
komentarz 25 stycznia 2018 przez Secrus Nałogowiec (32,880 p.)
Sam przemyśl jak to napisać. To twój program. Przeanalizuj krok po kroku co się dzieje. Kombinuj, próbuj. Jeśli ktoś zrobi to za Ciebie to nie nauczysz się niczego.
komentarz 25 stycznia 2018 przez Corson Początkujący (260 p.)
Ale jeśli zrobie tego for to moge w nim utworzyc ifa zeby pytał mnie o ponownie zagranie w grę?

Podobne pytania

0 głosów
1 odpowiedź 262 wizyt
pytanie zadane 22 stycznia 2018 w C i C++ przez Corson Początkujący (260 p.)
0 głosów
1 odpowiedź 339 wizyt
pytanie zadane 27 stycznia 2018 w C i C++ przez Corson Początkujący (260 p.)
0 głosów
1 odpowiedź 545 wizyt
pytanie zadane 14 lutego 2020 w C i C++ przez Lestat Nowicjusz (200 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...