BlackJack
Wstęp
Gra w Blackjacka (nasze Oczko, czy Dwadzieścia-jeden) jest grą karcianą, polegającą na zbieraniu kart tak, by uzbierać więcej oczek na kartach niż rywale, ale nie więcej niż 21. Dokładne reguły gry bywają różne, my przyjmiemy w tym zadaniu pewne ich uproszczenie.
Zasady gry
W grę gra co najmniej jeden gracz (liczba graczy jest ograniczona tylko liczbą dostępnych kart, w naszym programie zakładamy, że jeśli graczy jest zbyt wielu i dla któregoś nie starczy kart, to program ma prawo przerwać działanie).
Gra składa się z wielu rozdań. Rozdanie rozpoczyna się od potasowania kart. Następnie każdy gracz dostaje kolejne karty z talii (po jednej) tak długo, jak długo chce je brać lub do momentu, gdy suma oczek w kartach na ręku przekroczy 21. Gracz nie widzi karty, którą ma dostać (oczywiście od momentu dołożenia karty do ręki może już ją oglądać). Po zakończeniu każdego rozdania gracze, którzy zdobyli najwięcej oczek (ale nie więcej niż 21), dostają po 1 punkcie. Może się zdarzyć, że w danym rozdaniu żaden z graczy nie dostanie punktu. Grę wygrywa ten z graczy (lub ci gracze), który zdobędzie najwięcej punktów.
Liczby oczek na poszczególnych kartach:
- karty 2-10: taka sama liczba oczek jak na karcie,
- karty W, D, K: po 10 oczek każda,
- as to 11 oczek.
Struktura programu
Na podstawie treści zadania należy zaprojektować i zaimplementować następujące interfejsy oraz klasy:
interfejs Gracz,
- klasy:
- Krupier - bierze kolejne karty póki ma mniej niż 17 oczek na ręku,
- Limitowy - ma zadany limit oczek, dobiera kolejne karty tylko wtedy, gdy suma oczek na reku jest mniejsza od limitu,
- Losowy - zawsze losuje (z prwdp. 50%), czy wziąć kolejną kartę,
- Ostrożny - bierze kolejną kartę tylko wtedy, gdy ma pewność, że po jej wzięciu nie przekroczy limitu 21 oczek w ręku,
- Śpiący - śpi i nigdy nie dobiera żadnej karty.
Zanim zaczniesz implementować te klasy zastanów się, jak powinny być zadeklarowane. Możesz dodać tu jeszcze jakieś klasy, jeśli uznasz to za potrzebne. Możesz też dodać jeszcze inne typy graczy.
Uwaga
Gra w Blackjacka zwykle odbywa się w kasynach. Zasady tej gry są tam tak dobrane, że zawsze wygrywa kasyno. Granie (w cokolwiek) na pieniądze nie ma sensu.