Zadanie zaliczeniowe ze Smalltalka ---------------------------------- W grze w oczko uczestniczą gracze i jeden rozdający. Grają jedną talią złożoną z 52 kart. Jedna gra składa się z N rozgrywek. Jedna rozgrywka polega na tym, że: - rozdający tasuje karty, - rozdający daje po kolei każdemu z graczy kolejne karty z talii (po jednej), aż gracz stwierdzi, że nie chce już więcej kart, bądź suma oczek kart danych graczowi przekroczy 21. (Uwaga: najpierw pierwszy gracz bierze wszystkie swoje karty, potem drugi, itd.) Jeśli skończą się karty w talii to kolejni gracze będą mieli po 0 oczek, - graczom przyznawane są punkty (p. dalej), - rozdający zbiera karty od graczy. Punkty graczom są przyznawane wg następujących zasad: - jeśli wszyscy gracze przekroczyli 21 oczek to nikt nie dostaje punktów, - wpp. wszyscy gracze, którzy uzyskali maksymalną liczbę oczek nie większą niż 21 dostają po jednym punkcie. Zaprojektuj i zaimplementuj w Smalltalku klasy służące do symulowania gry w oczko zgodnej z podanymi powyżej zasadami. Twój projekt powinien zawierać (co najmniej) klasy reprezentujące: - całą grę, - rozdającego (ma talię kart), - karty (wiedzą ile mają oczek), - graczy. Główna klasa symulacji (Gra) powinna mieć (co najmniej) metodę: graZGraczami:gracze liczbaTur:N, która przeprowadzi rozgrywkę, a jako wynik da słownik indeksowany graczami, zawierający zdobyte przez nich punkty. Należy wyodrębnić (co najmniej) następujące rodzaje graczy: - gracza z limitem (bierze karty aż do osiągnięcia lub przekroczenia zadanego limitu oczek), - gracza zliczającego (zlicza już rozdane karty i wylicza oczekiwaną wartość liczby oczek następnej karty), - gracza losowego (losowo podejmuje decyzję o tym, czy brać następną kartę - oczywiście o ile nie ma jeszcze 21 oczek). Cała gra powinna być wywoływana np. tak: |gracze wyniki| gracze := Set new. gracze add: GraczLosowy new. gracze add: GraczZliczający new. gracze add: (GraczZLimitem new: 17). gracze add: (GraczZLimitem new: 20). wyniki := Gra new graZGraczami:gracze liczbaTur: N. "Wypisanie wyników" Zwróć uwagę na obiektowość swojego rozwiązania, w szczególności zadbaj o to, by można było łatwo dodać do stworzonej przez Ciebie hierarchii klas nowe rodzaje graczy.