Ucze sie dalej i ucze i sobie pisze gre w pokera, niestety zrobiło mi się coś bardzo dziwnego.
Blok z "try" został dodany poźniej po to żeby w bardzo zły sposób opanować error :P
Pętla while (gracz01.Hand.Count < 5 && gracz02.Hand.Count < 5) ma sie powtarzać póki obydwoje graczy maja poniżej 5 kart. Jednak z jakiegoś powodu pętla często kończy sie w momencie gdy gracz01 ma tylko 4 karty, co w dalszej części kodu tworzy IndexOutOfRangeException ( w pętli która wyświetla karty w oknie ). Nie mam zielonego pojęcia jak to w ogole możliwe ^^ Zwracam się do was z uprzejmą prośbą o naświetlenie mi o co chodzi :P
public void RozdajKarty()
{
int wynik;
try
{
while (gracz01.Hand.Count < 5 && gracz02.Hand.Count < 5) // jeśli gracze maja poniżej 5 kart to się kręć
{
wynik = 0;
while (wynik == 0) // player 1
{
wynik = rand.Next() % 52;
}
if (Talia[wynik].IsInDeck == true) // jeśli karta jest w talii i nie została już wcześniej wyjęta
{
gracz01.Hand.Add(Talia[wynik]);
Talia[wynik].IsInDeck = false;
}
wynik = 0;
while (wynik == 0) // player 2
{
wynik = rand.Next() % 52;
}
if (Talia[wynik].IsInDeck == true)
{
gracz02.Hand.Add(Talia[wynik]);
Talia[wynik].IsInDeck = false;
}
}
if (gracz01.Hand.Count < 5)
{
throw new Exception("Sie zepsulo, jak to mozliwe w ogole?");
}
}
catch (Exception ex)
{
ResetujKartyIHand();
RozdajKarty();
}
}