Tytuł tematu dziwny bo ciężko zdefiniować mój problem.
Generalnie piszę teraz program który będzie symulatorem gry w karty konkretnie w makao. To dopiero początek ale mam już rozpisany algorytm gry samej w sobie oraz odpowiedzi na rzuconą kartę, a także zrobioną klasę gracza i funkcję tasującą karty. Teraz planowałem się wziąć za rozdawanie kart. Miałem już gotowy pomysł na to i napisałem całość ale funkcja wyrzucała mnóstwo błędów więc okroiłem ją żeby znaleźć błąd - teraz rozdaje 5 pierwszych kart z tablicy KARTY do tablicy REKA pierwszego gracza. Z pozostałymi trzema graczami nic nie robię. Po czym po odpaleniu programu okazuje się że nie wiadomo czemu inni gracze (z którymi nic nie robiłem) też mają jakieś karty?!?
Trochę kodu...
Klasa gracz:
- Kod: Zaznacz cały
class gracz
{
private:
//int numer; //przochowuje numer gracza
int stop; //ilosc kolejek ktore stoi
bool human; //jesli true to człowiek, default false komputer
public:
String odpowiedz(String karta); //zwraca string z kartą wybraną na podstawie podanego stringa karta
gracz(bool hum); //konstruktor człowieczeństwa
gracz(void); //konstruktor domniemany human=false stop=0
String REKA[]; //karty ktore gracz ma w reku
};
fragment public klasy TForm1 (głównej programu):
- Kod: Zaznacz cały
public: // User declarations
__fastcall TForm1(TComponent* Owner);
String TALIA[52]; //przechowuje wszystkie karty uporządkowane
String KARTY[52]; //potasowana talia
String STOL[]; //przechowuje karty na stole
void tasuj(); //losuje karty z TALIA i wstawia do KARTY
void rozdaj(int x); //przenosi karty z KARTY do REKA graczy tak by mieli ich po x
int losujkolejke(int z);//losuje liczbe z przedziału 1-x
String kartastol; //wierzchnia karta
gracz player1; //tworzenie graczy
gracz player2;
gracz player3;
gracz player4;
funkcja rozdaj():
- Kod: Zaznacz cały
void TForm1::rozdaj(int x)
{
int i;
for(i=0;i<x;i++)
{
player1.REKA[i] = KARTY[i];
KARTY[i]="";
}
}
kliknięcie przycisku uruchamia funkcję rozdaj i listuje karty graczy (dla podglądu):
- Kod: Zaznacz cały
void __fastcall TForm1::Button3Click(TObject *Sender)
{
rozdaj(5);
int i;
for(i=0;i<5;i++){
ListBox3->Items->Add(player1.REKA[i]);
}
for(i=0;i<5;i++){
ListBox4->Items->Add(player2.REKA[i]);
}
for(i=0;i<5;i++){
ListBox5->Items->Add(player3.REKA[i]);
}
for(i=0;i<5;i++){
ListBox6->Items->Add(player4.REKA[i]);
}
}
i teraz o dziwo rezultatem jest coś takiego:
widać zależność że trzy ostatnie karty jednego gracza są trzema pierwszymi kolejnego
ale skąd to się wzięło? czy mam coś z tymi klasami źle zrobione? czy może kompiluje się jeszcze ten stary kod który nie działał? ja nie mam pojęcia co jest nie tak no a nie znam się na tym dobrze






element, a ten typ asocjacji masz 