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

Pomoc w zadaniu .V2

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
258 wizyt
pytanie zadane 26 stycznia 2020 w C i C++ przez Nowicjusz13 Użytkownik (570 p.)
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;


int main() {
	   int karty[11]= {2,3,4,5,6,7,8,9,10,11};
	   int karty1[11]= {2,3,4,5,6,7,8,9,10,11};
	   char odp;
	   int g=1;
	   int pg=2;
	   
	   	cout << "GRACZ NR " << g << endl;
	
	   
	   	srand(time(NULL));
     cout<<"PUNKTY = "<<karty[(rand()%11)]<<endl;
   
   
 	 
 
 
  cout << "Grasz dalej ? (T = TAK) (N = NIE) : "<<endl;
  cin >> odp;
  
  if( (odp == 'T') || (odp == 't') )
  {
  	cout << "GRACZ NR " << pg << endl;
  		srand(time(NULL));
     cout<<"PUNKTY = "<<karty1[(rand()%11)]<<endl;
   
   
  }
  else if ( (odp == 'N') || (odp == 'n') )
  {
  	cout <<"Pass"<<endl;
  }
  
 // ----------------------------------------------------------------------
  
  cout << "Grasz dalej ? (T = TAK) (N = NIE) : "<<endl;
  cin >> odp;
  
  if( (odp == 'T') || (odp == 't') )
  {
  	cout << "GRACZ NR " << g << endl;
  		srand(time(NULL));
     cout<<"PUNKTY = "<<karty[(rand()%11)]<<endl;
   
   
  }
  else if ( (odp == 'N') || (odp == 'n') )
  {
  	cout <<"Pass"<<endl;
  	
  }
  
  //---------------------------------------------------------------------

cout << "Grasz dalej ? (T = TAK) (N = NIE) : "<<endl;
  cin >> odp;
  
  if( (odp == 'T') || (odp == 't') )
  {
  	cout << "GRACZ NR " << pg << endl;
  		srand(time(NULL));
     cout<<"PUNKTY = "<<karty1[(rand()%11)]<<endl;
   
   
  }
  else if ( (odp == 'N') || (odp == 'n') )
  {
  	cout <<"Pass"<<endl;
  }

	

	return 0;
}

A więc tak mam dwa pytania pierwsze czy da się pytanie o to czy chce dobierac kolejne karty jakoś zapętlic żebym  nie musiał przepisywac tego kodu milion razy. I drugie pytanie w jaki sposób sprawic by  wylosowane puntky gracza 1 (g) i gracza 2 (pg)  się sumowały???smiley

2 odpowiedzi

+1 głos
odpowiedź 26 stycznia 2020 przez Smooth Użytkownik (900 p.)
wybrane 26 stycznia 2020 przez Nowicjusz13
 
Najlepsza

Kompletnie źle się za to zabrałeś. Radzę poczytać o funkcjach oraz klasach (obiektówka). Dużo łatwiej będzie ci zrobić taką grę niż działając ciągle na zmiennych. Niestety w tym przypadku to co robisz jest bez sensu i sam sobie utrudniasz życie pisząc masakryczny kod, który można stworzyć bez tego całego chaosu.

Kiedy już poczytasz stworzyłem prosty kod, na którym możesz się wzorować (Nie jest on dokończony więc nie rób kopiuj wklej :) )

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;


class Gracz
{
    int punkty = 0;
    const string nazwa;
public:
    Gracz(const string n)
        :nazwa(n) {}
    
        
    void losuj() // funkcja odpowiedzialna za losowanie karty
    {
        int liczba;
        liczba = rand() % 13 + 1; // kart jest 13.
        switch (liczba)
        {
        case 1:
        {
            cout << "Trafiles 2." << endl;  // Wypisujesz na ekranie graczowi jaka karte trafił aby nie musiał się niczego domyślać
            punkty += 2; // dodajesz odpowiednią liczbę punktów
            break;
        }
        
        case 2:
        {
            cout << "Trafiles 3. " << endl; 
            punkty += 3;
            break;
        }
        // tworzysz switch do końca


        }
    }
    void sprawdz(Gracz x)
    {
        //Sprawdz czy gracz nie ma przypadkiem wiecej niz 21 punktow. Jezeli tak to odrazu zakoncz gre z komunikatem o tym kto wygral. W przypadku tury Gracza 1 x = gracz2. W przypadku tury Gracz 2 x = gracz1
    }
   

    void pokaz() // pokazuje liczbe punktow
    {
        cout <<"Twoje punkty: "<< punkty << endl;
    }
    friend void KtoWygra(Gracz x, Gracz x2);
};

void KtoWygra(Gracz x, Gracz x2)
{
    if (x.punkty > 21)
    {
        cout << "Wygrywa gracz: " << x2.nazwa << endl;
    }
    // Tworzysz wszystkie warianty zakonczenia gry
}

int main()
{
    srand(time(NULL));
    Gracz gracz1("Gracz 1"); // Tworzysz obiekt gracz1
    Gracz gracz2("Gracz 2"); // Tworzysz obiekt gracz2
    int turn = 1;
    for (;;)
    {
        gracz1.losuj(); // Losujesz karte przed jego tura aby zawsze dostal PRZYNAJMNIEJ JEDNA KARTE
        while (turn == 1)
        {
            gracz1.pokaz(); // pokazujesz punkty
            cout << "[1] Losuj dalej" << endl;
            cout << "[2] Zakoncz ture" << endl;
            int wybor;
            cin >> wybor;
            switch (wybor)
            {
            case 1:
            {
                // Znow losujesz karte
                break;
            }
            case 2:
            {
                // Zmieniasz ture na 2 i tworzysz to samo dla gracza 2
                break;
            }

            }
            
        }
        // while (turn == 1){}
        //Gdzies tutaj wywolujesz KtoWygral(gracz1, gracz2)

        
    }

}

 

 

0 głosów
odpowiedź 26 stycznia 2020 przez Mariusz08 Maniak (62,280 p.)

 czy da się pytanie o to czy chce dobierac kolejne karty jakoś zapętlic żebym  nie musiał przepisywac tego kodu milion razy

Pętla while

 I drugie pytanie w jaki sposób sprawic by  wylosowane puntky gracza 1 (g) i gracza 2 (pg)  się sumowały

 Musisz je dodać

Podobne pytania

0 głosów
1 odpowiedź 1,611 wizyt
0 głosów
0 odpowiedzi 130 wizyt
pytanie zadane 27 sierpnia 2020 w C i C++ przez gryzedywany Użytkownik (510 p.)
0 głosów
1 odpowiedź 207 wizyt
pytanie zadane 26 maja 2019 w C i C++ przez filoses Nowicjusz (120 p.)

93,436 zapytań

142,431 odpowiedzi

322,667 komentarzy

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

...