• 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

Cloud VPS
0 głosów
333 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ź 331 wizyt
pytanie zadane 22 stycznia 2018 w C i C++ przez Corson Początkujący (260 p.)
0 głosów
1 odpowiedź 532 wizyt
pytanie zadane 27 stycznia 2018 w C i C++ przez Corson Początkujący (260 p.)
0 głosów
1 odpowiedź 982 wizyt
pytanie zadane 14 lutego 2020 w C i C++ przez Lestat Nowicjusz (200 p.)

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 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

Kursy INF.02 i INF.03
...