Jeśli stworzysz obiekty kart i bedziesz przenosił je pomiędzy listami talii i raczy, to kolejne losowanie odbędzie się spośród kart w talii, a więc karta nie mozę sie powtórzyć.
Co do zasad - hmm, być może tylko 5 kart (ale to nie poker :) ), nie grałem nigdy w kasynie więc pewności nie mam, a znane mi zasady mówią dobierasz dopóki nie powiesz stop.
Co do ilości kart - lista jest pojemna, więc po co ją ograniczać? Na razie robimy moduł do gry 24 kartami i ile ich wygenerujemy tyle przyjmie, jeśli będziemy robili moduł do gry kanastę możemy potrzebować przeszło 200 miejsc. Dlatego aby przerabiania było jak najmniej, a kod elstyczny zamiast warunku 24 karty, warto zrobić strukturę dynamiczną. Wówczas wystarczy tylko zmienić tylko generację kart, a pozostałe mechanizmy działają. Zauważ, ze losowanie odbywa się z parametrem ilości obiektów na liście, więc dołożenie dodatkowych kart nic nie zmieni, i nie trzeba trzymać nigdzie aktualnej ilości kart w talii. Dzięki dynamicznej strukturze, po losowaniu przenosisz kartę do gracza, w talii ona ubywa, u gracza się pojawia. Natstępne losowanie jak w prawdziwym życiu odbywa sie z pomniejszonej talii, z zachowaniem wszelkich matematycznych zasad (o ile losowanie jest rzeczywiście losowe :)) i nie masz problemu z możliwością powtórzenia karty.
Po prostu dynamiczna struktura z samego istnienia zapewnie wiele rzeczy które musiałbyś zaimplementować w przypadku tablicy. Do tego jest idealnei skalowalna (jak na potrzeby gier karcianych) bo ilość kart w talii określasz podoczas ładowania, bez potrzeby jakichkolwiek zmian w innych modulach. Przygotowujesz sobie moduły 16, 24, 52, 108 i możesz je podmieniac do woli.