W programie muszą być zastosowane następujące techniki i technologie obiektowe:
- kapsułkowanie,
- dziedziczenie,
- lista inicjalizatorów konstruktora,
- polimorfizm,
- szablony (funkcji lub klas – własne),
- strumienie (w zakresie podstawowym),
- rozdzielenie kodu programu na kilka plików.
Ponadto musi pojawić się korzystanie z plików w trybie tekstowym.
Interfejs użytkownika powinien być ograniczony do okna konsoli i trybu tekstowego. Program powinien zawierać mechanizmy kontroli poprawności wprowadzanych danych.
Hints:
- Dobrym pretekstem do włączenia w kodzie obsługi plików jest dodanie do programu funkcjonalności, w której program w przypadku przerwania gry archiwizuje w pliku stan gry, oraz daje możliwość przy starcie kontynuacji zapisanej gry lub rozpoczęcie nowej.
- Dobrym pretekstem do wprowadzenia polimorfizmu jest wprowadzenie do programu dwóch wersji prowadzenia gry:
- wersja dla dwóch/trzech graczy,
- wersja gry z komputerem.
To daje możliwość stworzenia dwóch klas reprezentujących gracza – pierwszej pobierającej ruchy z konsoli i drugiej, która sama wymyśla ruchy (np. losowo, ale zgodnie z regułami), dziedziczących po wspólnej klasie bazowej. Alternatywnie może to być też wersja, gdzie gra odbywa się zawsze między dwoma/trzema graczami, ale gdzie każdy gracz może w dowolnym momencie poprosić komputer o wykonanie za niego ruchu.