Kod wykonuje się tylko do pewnego stopnia, nie wykonuje kilku ostatnich linijek

0

mam kodzik:

// Kościany poker

#include <iostream>
#include <conio.h>
#include <cmath>
#include <time.h>

using namespace std;

    // Tablice kostek graczy
    int unsigned TablicaGracza1[6];
    int unsigned TablicaGracza2[6];

// Stałe odpowiedzialne za nienaruszalne zasady gry
const unsigned int ILOSC_KOSTEK = 6;
int i;

// Funkcja przedstawiająca zasady gry
int CzytajZasady(string Imie1, string Imie2)
{
    cout << "test" << endl;
    return 0;
}

// Funkcja odpowiedzialna za losowanie liczb, czyli symulowanie rzutu X kośćmi
int RzutWszystkie(int KtoryGracz, int MaxWartosc)
{
    if (KtoryGracz == 1)
    { 
                   for (i = 0; i < 6; i++)
                   {
                       TablicaGracza1[i] = rand() % MaxWartosc + 1;
                   }
                   cout << "Wyniki rzutu wszystkimi koscmi: ";
                   for (i = 0; i < 6; i++)
                   {
                       cout << TablicaGracza1[i] << " ";
                   }
    }
    
    if (KtoryGracz == 2)
    {
                   for (i = 0; i < 6; i++)
                   {
                       TablicaGracza2[i] = rand() % MaxWartosc + 1;
                   }
                   cout << "Wyniki rzutu wszystkimi koscmi: ";
                   for (i = 0; i < 6; i++)
                   {
                       cout << TablicaGracza2[i] << " ";
                   }
    }
    
    if (KtoryGracz != 1 && KtoryGracz != 2)
    {
                   cout << "Nieprawidlowy numer gracza." << endl << endl;
    }
    
    return 0;
}

int main()
{
    srand(static_cast<int>(time(NULL)));
    
    // Wyzerowanie ich
    for (i = 0; i < 6; i++)
    {
           TablicaGracza1[i] = 0;
           TablicaGracza2[i] = 0;
    }
    
    // Typowy wstępniak dla mych programów
    cout << "KOSCIANY POKER DLA DWOCH GRACZY INSPIROWANY GRA WIEDZMIN" << endl;
    cout << "-------------------by Pawel Ilnicki--------------------" << endl << endl << endl;
    
    // Podanie danych obojga graczy (czyli imienia)
    cout << "Imie gracza numer jeden... ---> ";
    string Gracz1;
    cin >> Gracz1;
    cout << "Imie gracza numer dwa... -----> ";
    string Gracz2;
    cin >> Gracz2;
    
    cout << "" << endl;
    
    cout << "Zaczynamy gre!" << endl;
    
    // Deklaracja zmiennych odpowiedzialnych za pętle DO
    char DecyzjaCzytajZasady;
    bool BlednyZnak = false;
    
    do {
       // Spytanie czy chce przeczytać zasady gry
       cout << "Czy przed rozpoczeciem przypomniec wam zasady? (y/n) ";
       
       cin >> DecyzjaCzytajZasady;
    
       // Instrukcje dla 3 decyzji (tak, nie, błędny znak)
       if (DecyzjaCzytajZasady == 'y')
       {
                               BlednyZnak = false;
                               cout << "-------------------------------------------" << endl << endl;
                               CzytajZasady(Gracz1, Gracz2);
                               cout << "" << endl;
       }
       if (DecyzjaCzytajZasady == 'n')
       {
                               BlednyZnak = false;
                               cout << "Dobrze wiec. Pominiemy lekcje instruktazowe." << endl;
       }
       if (DecyzjaCzytajZasady != 'y' && DecyzjaCzytajZasady != 'n')
       {
                               BlednyZnak = true;
                               cout << "Bledny znak. Sprobuj ponownie. Wpisz tylko litere - y (tak) lub n (nie)" << endl;
       }
    } while (BlednyZnak == true);
    
    cout << "-------------------------------------------" << endl << endl;
    
    // Gra właściwa
    cout << ILOSC_KOSTEK << " koscmi rzuca gracz " << Gracz1 << "." << endl;
    RzutWszystkie(1, 6);
    
    cout << ILOSC_KOSTEK << " kosciami rzuca gracz " << Gracz2 << "." << endl;
    RzutWszystkie(2, 6);
    
    cout << "cos, co powinno sie pojawic" << endl;
    
    getch();
    return 0;
}

kiedy go odpalam działa tylko do momentu RzutWszystkie(2, 6); a linijki cout << "cos powinno tu sie pojawic" << endl; już nie. Wiecie może o co chodzi?

0

Najpierw bym chciał powiedzieć o tym że taki zapis niby działa:

  if (KtoryGracz == 1)
    { 
                  ....
    }
 
    if (KtoryGracz == 2)
    {
                   ...
    }
 
    if (KtoryGracz != 1 && KtoryGracz != 2)
    {
                   cout << "Nieprawidlowy numer gracza." << endl << endl;
    }
 

Ale raczej powinieneś używać else if, else.

  if (KtoryGracz == 1)
    { 
                  ....
    }
 
    else if (KtoryGracz == 2)
    {
                   ...
    }
 
    else
                 cout << "Nieprawidlowy numer gracza." << endl << endl;

 

A co do odpowiedzi na twoje pytanie to mam pytanie czy aplikacja sie Od razu zamyka, czy raczej nie zamyka sie i nie reaguje(nic nie można wpisać), czy chodzi gites tylko nie wyświetla?

0

tak jakby pomijało linijkę countu i kończyło na getch(). czyli mówiąc prościej czeka na wciśnięcie dowolnego klawisza.

0

U mnie wszystko działa. W tym momencie masz ostatnią linię wyświetlana razem z przedostatnią. Dodaj do ostatniej linii "\n"

cout << "\ncos, co powinno sie pojawic" << endl;
0
sawex napisał(a)

Ale raczej powinieneś używać else if, else.

Raczej powinien to włożyć w tablicę TabliceGraczy[2][6] i odwoływać się do nich TabliceGraczy[KtoryGracz - 1][i] zamiast dublować niepotrzebnie kod. DRY!

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