Program zaliczeniowy

Należy napisać program, realizujący pewną grę.

Gra

Gra toczy się na prostokątnej planszy podzielonej na kwadratowe pola. Na każdym polu może znajdować się: Celem gracza jest doprowadzenie układu na planszy do pewnego zadanego układu docelowego. Bohater może wykonywać ruchy w czterech kierunkach (w lewo, prawo, do góry, w dół). Skutki ruchu bohatera są następujące: Pola poza planszą traktowane są jak ściany, tzn. nie można wyjść poza planszę ani wypchnąć z niej kamieni. Gra kończy się wygraną gracza, jeśli uda mu się doprowadzić układ kamieni do stanu docelowego. Gra kończy się porażką, jeśli gracz uzna że mu się to nie uda lub gdy nie może wykonać żadnego ruchu.

Działanie programu

Program po rozpoczęciu działania powinien zapytać o nazwę pliku, w którym zapisana jest plansza. Następnie plansza zostaje wyświetlona i rozpoczyna się gra. Gracz wykonuje ruchy wpisując odpowiednie litery (np. L - lewo, P - prawo, G - góra, D - dół, M - poddanie się w przejście do początku, X - zakończenie programu); po każdym ruchu układ na planszy powinien się aktualizować (należy wyświetlić zarówno aktualny stan gry jak i układ docelowy). Jeśli gracz osiągnie układ docelowy, program powinien pogratulować graczowi i przejść do głównego menu. W dowolnym momencie gracz powinien mieć możliwość zapisu aktualnego stanu gry oraz wczytania uprzednio zapisanej gry.

Format plików

Format plików zawierających plansze jest następujący: Format plików, w których zapisywany jest aktualny stan gry - do wyboru przez autora programu.

Dodatkowe opcje

Gra powinna posiadać dodatkowe opcje, pozostawione do wyboru twórcy programu, np. Wszystkie dodatkowe elementy gry należy opisać w dokumentacji.

Dodatkowe wymaganie

Program powinien używać klas - co najmniej klasy reprezentującej planszę.

Na co należy zwrócić uwagę:

  1. W przypadku użycia częsci kodu, który nie został napisany samodzielnie należy to jawnie zadeklarować.
  2. Kod programu powinien być czytelny i starannie skomentowany.

Kryteria oceny

  1. Poprawność działania. (2 pkt.)
  2. Użycie klas. (1 pkt.)
  3. Kod programu. (1 pkt.) - czytelność i opis kodu, podział na funkcje i klasy.
  4. Funkcje dodatkowe. (2 pkt.)
Rozwiązanie powinno zawierać: Rozwiązania należy nadsyłać na adres ziemians@mimuw.edu.pl w terminie do 30 czerwca.
Powodzenia
Krzysztof Ziemiański