Każde zadanie wymaga napisania programu implementującego grę.
- Program powinien udostępniać pracę w dwóch trybach: gra z drugim graczem (program przyjmuje na przemian polecenia wykonania ruchów od dwóch osób) i gra z komputerem.
- W obydwu w/w przypadkach program dokonuje sprawdzenia poprawności ruchu. Jeżeli proponowany ruch jest niezgodny z zasadami gry, program powinien to zakomunikować i odmówić jego wykonania.
- W przypadku gry z komputerem wystarczy, że program będzie wykonywał ruchy losowe, tj. wygenerowane z pomocą generatora liczb losowych. Te losowe ruchy również powinny być zgodne z regułami gry. Uwaga: nie ma obowiązku implementowania żadnych strategii zwiększających szanse na wygraną komputera (tzw. „sztucznej inteligencji”).
- Powyższe wymagania są dobrym pretekstem do zaimplementowania następującej hierarchii dziedziczenia klas: klasa bazowa
gracz
i dwie klasy pochodne:gracz-człowiek
igracz-komputer
. Jest to też dobra okazja do wprowadzenia do kodu programu polimorfizmu (metod wirtualnych oraz ewentualnie czysto wirtualnych). - Program powinien udostępniać na żądanie użytkownika tablicę wyników wszystkich dotychczas rozegranych gier. W tablicy powinny znaleźć się nazwy graczy (w przypadku gry z komputerem – 'komputer’). Tablica ta powinna być zapisywana do pliku.
- Powinna istnieć możliwość przerwania w każdym momencie już rozpoczętej gry i wyjścia z programu. W takiej sytuacji aktualny stan gry powinien zostać zapisany do pliku. Przy ponownym uruchomieniu programu powinna istnieć możliwość powrotu do przerwanej rozgrywki.
- Wszystkie dane wprowadzane z klawiatury przez użytkownika oraz wczytywane z pliku powinny być kontrolowane pod względem ich poprawności. Np. kiedy dane mają być liczbowe, to po pierwsze należy sprawdzić, czy wprowadzony tekst jest liczbą, a po drugie – czy liczba ta należy do dozwolonego przedziału lub zbioru wartości. Tak samo w przypadku odczytywania danych z pliku, należy sprawdzać, czy są one zgodne ze składnią pliku. W razie odstępstwa, należy wyświetlić komunikat o błędzie i zaprzestać pobierania danych z uszkodzonego pliku. Generalnie zasada jest taka, że program nie może przerwać swojej pracy lub zacząć działać błędnie z powodu niepoprawnych danych.