Wskazówki dotyczące zadań semestralnych

Każde zadanie wymaga napisania programu implementującego grę.

  1. 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.
  2. 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.
  3. 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”).
  4. Powyższe wymagania są dobrym pretekstem do zaimplementowania następującej hierarchii dziedziczenia klas: klasa bazowa gracz i dwie klasy pochodne: gracz-człowiekgracz-komputer. Jest to też dobra okazja do wprowadzenia do kodu programu polimorfizmu (metod wirtualnych oraz ewentualnie czysto wirtualnych).
  5. 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.
  6. 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.
  7. 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.