Laboratorium programowania obiektowego.
ZSI. 1.III.2OO4.
              Program zaliczeniowy nr 1 (Smalltalk)
W domino gra się kostkami. Każda kostka składa się z dwu pól
zawierających
liczby  z przedziału 0..6. Żadne dwie kostki się nie powtarzają,
kolejność pól  nie ma znaczenia, zatem pełen zestaw domina
zawiera 28 kostek ({0,0}, {0,1}, {0,2}, ..., {6,6}). W domino
może grać kilku graczy (>=1).

Gracze są ustawieni w pewnej kolejności. Pierwszy z graczy miesza
kostki i rozdaje każdemu (także sobie) po 5 kostek, resztę
zostawia ułożone w  stos na stole. Gracze widzą swoje kostki,
natomiast nie widzą zawartości kostek leżących na stole (te są
położone liczbami do dołu).

Teraz  zaczyna się właściwa gra. Gracze po kolei (zaczynając od
pierwszego gracza) dokładają po jednej kostce z tych, które mają
w ręku do kostek  na stole,  przy  czym  kostki (traktowane teraz
już jako pary  uporządkowane) układa  się  w  ciąg par tak, by
każda para miała wartość pierwszego  pola równą wartości drugiego
pola pary poprzedzającej (o ile jest takowa).  Np. ciąg:  (0,2),
(2,1), (1,0), (0,0) jest poprawny i można do niego  dołożyć
jedynie  pary  mające  jedno pole o wartości 0.  Można  dostawiać
tak  na początek  jak i na koniec ciągu. (Zgodnie z podanymi
zasadami na  początku można  do  pustego  ciągu dołożyć
cokolwiek.). Jeśli  gracz  może  dołożyć kostkę,  to  musi to
zrobić, jeśli zaś nie może, to musi  za  karę  dobrać kostkę z
wierzchołka stosu na stole (chyba że nic już tam nie ma). Gra się
kończy,  gdy któryś z graczy pozbędzie się wszystkich kostek (i
ten  gracz wygrywa) lub gdy stos jest pusty i żaden z graczy nie
może dołożyć  żadnej ze swoich kostek (wtedy jest remis).

Gracze  stosują różne strategie. Dzieci wybierają dowolną kostkę
pasującą do  ciągu na stole. Uczniowie chytrze zaglądają do
kostek trzymanych przez rywali  i  wybierają (o ile to możliwe)
spośród swoich kostek taką,  która pasuje  do ciągu, ale po
dołożeniu nie będzie pasowała następnemu graczowi (nie troszczą
się o kostkę, która jest przeciwnym końcem ciągu, tamta może
pasować).  Studenci  dostawiają taką kostkę, która uniemożliwi
następnemu graczowi  dołożenie swojej. (Oczywiście tak uczniowie
jak  i  studenci  w sytuacji,  w  której  nie mogą dołożyć kostki
zgodnie ze  swoją  strategią dostawiają dowolną kostkę dającą się
dołożyć zgodnie z regułami gry).

Należy:
Napisać  program,  który  dla  zadanej  uporządkowanej  kolekcji
graczy przeprowadzi  symulację rozgrywki, wypisując po każdym
ruchu układ  kostek na  stole  oraz  kostki trzymane przez
poszczególnych  graczy.  Na  koniec należy wypisać który gracz
wygrał (lub że jest remis).

Przy pisaniu programu mogą się okazać pomocne następujące
operacje:
  ·   generowanie pełnego zestawu kostek domina,
·   metoda dziecka/ucznia/studenta wybierająca dokładaną kostkę
(nil gdy nie da się dołożyć) i miejsce dołożenia.

Uwaga:   podane  zasady  gry  w  domino  mogą  się  różnić  od
oficjalnie obowiązujących.  Np.  jedna  z  encyklopedii
internetowych  stwierdza,  że kostki zawierają pola z liczbami
1..6. Szczególnie proszę zwrócić uwagę na to, co widzą
poszczególni gracze.

Życzymy powodzenia!