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:

Struktura programu

Na podstawie treści zadania należy zaprojektować i zaimplementować następujące interfejsy oraz klasy:

interfejs Gracz,

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.