Założenia wspólne dla wszystkich tematów zadania semestralnego

W programie muszą być zastosowane następujące techniki i technologie obiektowe:

  1. kapsułkowanie,
  2. dziedziczenie,
  3. lista inicjalizatorów konstruktora,
  4. polimorfizm,
  5. szablony (funkcji lub klas – własne),
  6. strumienie (w zakresie podstawowym),
  7. 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:

  1. 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.
  2. 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.