carla Temat założony przez niniejszego użytkownika |
Rozdawanie kart bez powtórek. » 2012-06-22 00:47:11 Mam problem i bardzo liczę na Waszą pomoc. Otóż program rozdaje karty uczestnikom, ale niestety obydwu takie same... nie mam pojęcia co zrobić, żeby rozdawane były im inne... #include <iostream> #include <vector> #include <ctime> #include <cstdlib> #include<sstream> using namespace std; class Card { private: int value; string name; string color; public: Card( int v, string n, string c ) : value( v ) , name( n ) , color( c ) { } int getValue() { return value; } string getName() { return name; } string getColor() { return color; } friend ostream & operator <<( ostream & strumien, Card c ) { strumien << c.getName() << " " << c.getColor(); return strumien; } }; class Talia { friend class Player; friend class Musik; public: vector < Card > talia; public: virtual void add( Card c ) { talia.push_back( c ); } Card popCard() { for( int i = 0; i < talia.size(); i++ ) { srand( time( NULL ) ); int index = rand() % talia.size(); Card tmp = talia[ index ]; talia[ index ] = talia.back(); talia.pop_back(); return tmp; } } void createFull() { string kolory[ 4 ] = { "kier", "karo", "pik", "trefl" }; string figury[ 13 ] = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Walet", "Dama", "Krol", "As" }; for( int i = 0; i < 4; i++ ) { for( int j = 0; j < 9; j++ ) { Card tmp( j + 2, figury[ j ], kolory[ i ] ); talia.push_back( tmp ); } for( int j = 9; j < 12; j++ ) { Card tmp( j - 7, figury[ j ], kolory[ i ] ); talia.push_back( tmp ); } Card tmp( 11, figury[ 12 ], kolory[ i ] ); talia.push_back( tmp ); } } void show_cards() { cout << "Karty w talii: " << endl; for( int i = 0; i < this->talia.size(); i++ ) { cout << i + 1 << ". " << this->talia[ i ] << endl; } cout << endl; } int getValue() { int sum = 0; for( int i = 0; i < talia.size(); i++ ) sum += talia[ i ].getValue(); return sum; } bool empty() const { return talia.empty(); } }; class Musik : public Talia { public: Musik( Talia talia ) { talia.createFull(); for( int i = 0; i < 4; i++ ) add( talia.popCard() ); } }; class Player : public Talia { string player_name; public: Player( Talia talia ) { player_name = ""; talia.createFull(); for( int i = 0; i < 16; i++ ) add( talia.popCard() ); } void show_cards() { cout << "Nazwa playera:" << player_name << endl; cout << "Karty: " << endl; for( int i = 0; i < this->talia.size(); i++ ) { cout << i + 1 << ". " << this->talia[ i ] << endl; } cout << endl; } virtual void Set_name( string nazwa ) { player_name = nazwa; } }; class lew { public: Talia talia; }; class Komputer_1 { public: Player * gracz; public: Komputer_1( Talia talia ) { gracz = new Player( talia ); gracz->Set_name( "KOMPUTER_1" ); } void graj( lew stol, Musik musik ) { if( gracz->talia.size() > 0 ) { stol.talia.add( gracz->popCard() ); gracz->show_cards(); } } }; class Komputer_2 { public: Player * gracz; public: Komputer_2( Talia talia ) { gracz = new Player( talia ); gracz->Set_name( "KOMPUTER_2" ); } void graj( lew stol, Musik musik ) { if( gracz->talia.size() > 0 ) { stol.talia.add( gracz->popCard() ); gracz->show_cards(); } } }; class Czlowiek { public: Player * gracz; public: Czlowiek( Talia talia ) { gracz = new Player( talia ); } void graj( lew stol, Musik musik ) { } }; template < class typ_gracza1, class typ_gracza2, class typ_gracza3 > class Rozgrywka { public: int ktora_rozgrywka; Talia talia; lew stol; int p1; int p2; int p3; public: typ_gracza1 * Player1; typ_gracza2 * Player2; typ_gracza3 * Player3; Musik * musik; public: Rozgrywka() { p1 = p2 = p3 = 0; talia.createFull(); Player1 = new typ_gracza1( talia ); Player2 = new typ_gracza2( talia ); Player3 = new typ_gracza3( talia ); musik = new Musik( talia ); } void wynik_rozgrywki() { } }; int main() { while( true ) { cout << "Gra 3-5-8" << endl << endl; int option; cout << "1. Rozpocznij Nowa gre." << endl; cout << "2. Odczytaj zapisany stan gry." << endl; cout << "3. Zakoncz gre. " << endl; cout << "Twoj wybor: "; cin >> option; switch( option ) { case 1: { cout << "Podaj ilosc graczy (za reszte graczy, grac bedzie komputer) :"; char ilosc_graczy; cin >> ilosc_graczy; switch( ilosc_graczy ); { case '1': { Rozgrywka < Komputer_1, Komputer_2, Czlowiek > gra; for( int i = 0; i < 18; i++ ) { gra.Player1->graj( gra.stol, * gra.musik ); gra.Player2->graj( gra.stol, * gra.musik ); gra.Player3->graj( gra.stol, * gra.musik ); gra.ktora_rozgrywka = i; } gra.wynik_rozgrywki(); break; } case '2': { Rozgrywka < Komputer_1, Czlowiek, Czlowiek > gra; for( int i = 0; i < 18; i++ ) { gra.Player1->graj( gra.stol, * gra.musik ); gra.Player2->graj( gra.stol, * gra.musik ); gra.Player3->graj( gra.stol, * gra.musik ); gra.ktora_rozgrywka = i; } gra.wynik_rozgrywki(); break; } case '3': { Rozgrywka < Czlowiek, Czlowiek, Czlowiek > gra; for( int i = 0; i < 18; i++ ) { gra.Player1->graj( gra.stol, * gra.musik ); gra.Player2->graj( gra.stol, * gra.musik ); gra.Player3->graj( gra.stol, * gra.musik ); gra.ktora_rozgrywka = i; } gra.wynik_rozgrywki(); break; } break; } } case 2: break; case 3: exit( 0 ); break; default: cout << "PODALES BLEDNA OPCJE SPROBOJ JESZCZE RAZ" << endl; } } Rozgrywka < Komputer_1, Komputer_2, Czlowiek > gra; gra.Player1->gracz->show_cards(); gra.Player2->gracz->show_cards(); gra.Player3->gracz->show_cards(); gra.musik->show_cards(); return 0; } |
|
LukiPRO |
» 2012-06-22 00:50:59 Mogłabyś edytować to i dać kod w [cpp] [/cpp] |
|
carla Temat założony przez niniejszego użytkownika |
» 2012-06-22 12:37:11 wybacz, jestem tu pierwszy raz, dodam, że po to by uzyskać pomoc w sprawie kodu, nie jego prawidłowego zamieszczania, ale zapewne przyda się. I jeśli już to 'mogłabym' |
|
DejaVu |
» 2012-06-22 13:05:55 zrob tablice wszystkich kart za pomoca np. std::vector. pozniej na niej wywolaj funkcje random_shuffle i zdejmuj karty od konca (rozdawanie). wszyscy wowczas beda mieli unikatowe karty i prosto sie te karty rozdaje. |
|
carla Temat założony przez niniejszego użytkownika |
» 2012-06-23 12:32:15 no i tu pojawia się problem. Bo nie mam pomysłu na zapis. Proszę o pomoc. |
|
DejaVu |
» 2012-06-23 13:41:45 Jaki zapis... |
|
jankowalski25 |
» 2012-06-24 10:09:44 |
|
« 1 » |