Plansza do łamigłówki

Zaprogramować planszę do łamigłówki; indywidualne warianty zadania będą przydzielone w komentarzu w formularzu z punktacją, lista łamigłówek jest tutaj. To zadanie proszę przesłać przez formularz do wysyłania zadań, ale też należy je zademonstrować i dokładnie omówic w czasie zajęć. Termin - do końca semestru.

Program powinien dostarczać interfejs graficzny do łamigłówki. Nie powinien sam nic rozwiązywać a tylko pilnować aby użytkownik postępował zgodnie z regułami. Można nieco modyfikować graficzny wygląd planszy, w stosunku do oryginalnego opisu, żeby sobie ułatwić programowanie, np. zamiast rozdzielania różnych obszarów planszy liniami, rozróżnić je kolorując różnie odpowiednie obszary.

Pełne rozwiazanie powinno dawać następujace możliwosci (ale można przedstawić do oceny rozwiazania niepełne):

  1. konstruowanie rozwiazania i zmiany juz dokonanych wyborów czy posunięć
  2. kontrolę, czy wykonywane wybory sa zgodne z regułami łamigłowki i czy osiągnięto rozwiązanie (kontrola ta może być robiona na bieżaco lub na życzenie). Realizacja tego punktu zrobiona w taki sposób, że porównuje się aktualny stan ze znalezionym wcześniej prawidłowym rozwiązaniem jest nisko punktowana. Lepsze podejście to przyjęcie założenia, że może być wiele rozwiązań i sprawdzanie zgodności z regułami łamigłówki tak jak są te reguły zapisane. To daje ogólniejszy program, który może być użyty do różnych wersji sytuacji startowej.
  3. zapamiętywać wszystkie dotad wykonane ruchy i umożliwiać chodzenie w tył i w przód w historii tworzenia rozwiązania łamigłowki.
  4. zapisanie na życzenie użytkownika aktualnego stanu łamigłowki (łącznie z historią) do pliku i odtworzenie (na życzenie) tego stanu z pliku po ponownym wystartowaniu programu, czyli dać możliwosć przerwania zabwy i powrotu do niej. Powinna być możliwosć wyboru pliku do zapisu i odczytu,
  5. uzyskanie jakichś instrukcji (mini "help")
  6. W prostszej wersji można przyjąć, że łamigłówka jest ustalona na sztywno. Wyżej punktowane rozwiązanie powinno dawać możliwość jakiejś modyfikacji ustawienia początkowego. Może to być zrobione tak, że początkowe ustawienie (a może nawet rozmiar planszy) będzie odczytywane z pliku, który można osobno redagować. Inny sposób, to wprowadzić do programu osobną fazę budowania początkowego ustawienia, po zakończeniu której następuje faza rozwiązywania łamigłówki.
Ważny element techniczny: interfejs graficzny powinien być rozdzielony od modelu łamigłowki, podobnie jak w ćwiczeniu z Graficznym Interfejsem (w przeciwnym razie będzie mniejsza punktacja.)

Tekst programu powinen zawierać nieco komentarzy (do ważniejszych metod i klas), jak rownież informację kto jest autorem. Ocenie podlega rownież pełne zrozumienie kodu programu przez autora.

Wskazówka: w pliku Plansza12.java. znajduje się szkic programu wyswietlającego planszę-szachownicę zbudowaną z przycisków.