Program zaliczeniowy
Należy napisać program, który umożliwia edycję i grę w gry planszowe opisanego poniżej rodzaju.
W grze uczestniczy pewna ilość graczy (można założyć, że nie więcej niż 10); każdy z nich dysponuje jednym pionkiem.
Na planszy znajduje się określona liczba pól ponumerowanych od 0 do n; pole nr 0 to START, a pole nr n to META.
Na początku gry wszystkie pionki znajduję się na polu START.
Gracze wykonują kolejno ruchy polegające na rzucie kostką sześcienną i przesuwają pionki do przodu o wylosowaną liczbę pól.
Na planszy mogą znajdować się specjalne pola, których odwiedzenie ma pewnien dodatkowy efekt, np.
- umożliwia dodatkowy(-e) rzut kostką,
- powoduje, że gracz musi pauzować określoną liczbę kolejek,
- przenosi gracza o pewną liczbę pól (do przodu lub do tyłu),
- przenosi gracza na określone pole.
W przypadku wizyty na polu specjalnym powinien wyświetlić się komunikat opisujący wydarzenie do jakiego doszło w trakcie gry.
Mile widziana jest obsługa innych rodzajów specjalnych pól.
Gra kończy się, gdy jeden z pionków znajdzie się na polu META, a jego posiadacz zostaje zwycięzcą.
Działanie programu
Program powinien zapytać o nazwę pliku z opisem planszy, na której rozegrana będzie gra oraz o liczbę uczestniczących graczy.
Następnie kolejni gracze wykonują ruchy, a po każdym ruchu na ekranie powinna pojawić się plansza z aktualnym stanem gry.
Rzut kostką powinien być wykonywany (do wyboru przez użytkownika) albo przez komputer albo przez graczy, a wynik (tj. liczbę oczek na kostce)
wprowadzany do komputera z klawiatury.
Format pliku (tzn. sposób w jaki opisana jest plansza) wybierany jest przez piszącego program, a wraz z rozwiązaniem
należy zamieścić jego opis (tak, aby użytkownik mógł tworzyć własne plansze). Zalecam załączenie kilku stworzonych samodzielnie plansz (tak na wszelki wypadek).
Powinna być możliwość zapisania gry w dowolnym momencie do pliku, a następnie wznowienia jej po ponownym uruchomieniu programu.
Dodatkowe wymaganie
Program powinien zawierać (i wykorzystywać) klasę, której obiekty reprezentują plansze.
Na co należy zwrócić uwagę:
- W przypadku użycia częsci kodu, który nie został napisany samodzielnie należy to jawnie zadeklarować.
- Plansza nie musi być ładna, ale powinna być czytelna.
Kryteria oceny
- Poprawność działania. (2 pkt.)
- Użycie klas. (1 pkt.)
- Kod programu. (2 pkt.) - czytelność i opis kodu, podział na funkcje i klasy.
- Funkcje dodatkowe. (1 pkt.) - np. możliwość edycji plansz z programu, obsługa bardziej rozbudowanych plansz, itp.
Jeśli program zawiera funkcje dodatkowe, należy je opisać.
Rozwiązanie powinno zawierać:
- pliki źródłowe programu,
- opis formatu plansz,
- kilka przykładowych plansz.
Rozwiązania należy nadsyłać na adres ziemians@mimuw.edu.pl w terminie do 15 lutego.
Powodzenia
Krzysztof Ziemiański