Opis zlecenia
Napisz program będący realizacją gry w stylu ”Pacman”.
W rozgrywce przeciwnicy raz na 5 sekund z prawdopodobieństwem 25% tworzą ulepszenia
(np. +50% prędkości poruszania się itp.), które gracz może zebrać. Zaimplementuj min. 5 różnych ulepszeń. Program po uruchomieniu wyświetla menu główne składające się z opcji:
• New Game • High Scores • Exit
Po uruchomieniu nowej gry, gracz zostanie zapytany o rozmiar planszy na której chcemy grać. Należy zaimplementować co najmniej 5 różnych plansz różnego rozmiaru.Po wyborze rozmiaru planszy, w nowym oknie wyświetlana jest wygenerowana plansza gry.Należy zapewnić w pełni funkcjonalny interfejs graficzny.CLI może być tylko pomocą informacyjną dla programisty, ale nie może zachodzić tam żadna interakcja, czy wyświetlanie informacji użytkownikom.
Podczas gry musi być widoczny licznik punktów, licznik czasu, licznik żyć i inne potrzebne elementy interfejsu graficznego, które będą aktualizowane na żywo podczas rozgrywki.W projekcie obowiązkowe jest wykorzystanie plików graficznych oraz zrealizowanie spójnego efektu wizualnego całej aplikacji z uwzględnieniem wszystkich okien aplikacji.Zrealizuj ruch postaci i wykonywane zadania poprzez proste poklatkowe animacje (animacja ruchu, animacja jedzenia).Animacje zaimplementuj samodzielnie w oparciu o wątki, a nie np. przez pliki GIF.Wszystkie kwestie związane z czasem należy zrealizować z uwzględnieniem wątków (nie wolno wykorzystywać klasy Timer, Executor i innych).Należy zapewnić przemyślaną i poprawną synchronizację wątków.Nie można łączyć różnych funkcjonalności w jeden wątek.Gra toczy się według wyżej wymienionych zasad.Należy zapewnić możliwość przerwania gry w dowolnym momencie, co spowoduje powrót do menu głównego.Po zakończeniu gry, w nowym oknie gracz proszony jest o nazwę pod jaką ma być zapisany w rankingu.Zapewnij trwałość rankingu wykorzystując interfejs Serializable i zapis do pliku.Po wybraniu opcji rankingu z menu głównego,zostaje on wyświetlony użytkownikowi.Ranking należy zrealizować przy pomocy komponentu JList.