Java praca domowa 07

background image

© 2014, Jerzy R. Jaworowski, Instytut Teleinformatyki Politechniki Krakowskiej im. Tadeusza Kościuszki

Praca domowa 07 – game

Termin zwrotu : 25 maja godz 23.00

Zadanie uznaje się za zaliczone, gdy praca oceniona zostanie na co najmniej 6 pkt.


Należy zaproponować rozwiązanie umożliwiające realizację gry, reguły której zdefiniowane zostały w dalszym ciągu niniejszego

dokumentu. Rozwiązanie ma wykazać umiejętność stosowania technik obiektowych w procesie analizy, projektowania i implementacji
algorytmu.

Gra prowadzona jest na planszy 16-to polowej, której kolumny oznaczone są literami, a wiersze liczbami (patrz Rys. 1).

Rys. 1 Rys. 2

W grze udział bierze dwóch graczy : czerwony (red) oraz zielony (green). Każdy z graczy dysponuje dwoma pionami : jednym tzw.

dużym (w kształcie litery L) oraz drugim małym (o rozmiarze pojedynczego pola). Początkowy układ pionów (przed rozpoczęciem gry) ilustruje
Rysunek 2. Gracze wykonują ruchy naprzemiennie. Każdy z graczy realizuje swój ruch poprzez zmianę położenia obu swoich pionów, przy
czym w pierwszej kolejności musi dokonać zmiany położenia pionu dużego (pionu L), a po wykonaniu tego przemieszczenia wykonuje w
drugiej kolejności przesunięcie pionem małym (pojedynczym). Gracz, który został zablokowany, tzn. nie posiada możliwości zmiany położenia
pionu dużego (pionu L), czyli nie jest w stanie wykonać kolejnego ruchu - przegrywa partię.

Pion duży można przemieszczać w dowolny sposób : poprzez proste przesunięcie, obrót, jak również odbicie w pionie lub w poziomie.



background image

© 2014, Jerzy R. Jaworowski, Instytut Teleinformatyki Politechniki Krakowskiej im. Tadeusza Kościuszki


Należy zaprojektować obiektowe rozwiązanie realizujące proces rozgrywki. Klasa Player winna implementować metodę :

void go()


dokonująca kolejnego ruchu określonego gracza. Klasa Game

winna implementować scenariusz rozgrywki, zapewniając możliwość utworzenia

instancji dwóch graczy (red oraz green), losowego ustalenia gracza rozpoczynającego partię (wykonującego ruch jako pierwszy), oraz
mechanizmu zapewniającego możliwość naprzemiennego wykonywania ruchów, aż do momentu rozstrzygnięcia partii w możliwie najmniejszej
liczbie ruchów (strategia rozgrywki !).

Metoda

go

winna po wykonaniu każdego ruchu (składającego się z przesunięcia dwóch własnych pionów wg. algorytmu opisanego

wyżej) zwiększać licznik ruchów o jeden.


Wynik nieparzysty oznacza, że ostatni zakończony sukcesem ruch wykonał na planszy gracz rozpoczynający grę. Wynik parzysty

wskazuje, że rozgrywka zakończyła się sukcesem gracza, który wykonywał ruch jako drugi z kolei, a partię rozstrzygnął na swoją korzyść.

Program ma być zapisany wyłącznie w dwóch plikach

Player.java

zawierającym implementację obiektu gracza, oraz

Game.java

zawierającym implementację mechanizmu rozgrywki wraz z programem głównym. Program nie może korzystać z jakichkolwiek bibliotek
zewnętrznych.

Proces kompilacji musi być możliwy z użyciem komendy

javac –Xlint Player.java Game.java


Uruchomienie programu winno być możliwe z użyciem komendy

java Game


Przykładowy wynik końcowy (w strumieniu wyjściowym nie powinny pojawiać się jakiekolwiek inne elementy – np. wydruki kontrolne) :

Ilość posunięć : 15

background image

© 2014, Jerzy R. Jaworowski, Instytut Teleinformatyki Politechniki Krakowskiej im. Tadeusza Kościuszki

Wymagania :

• Klasa implementująca mechanizm gracza winna zostać zdefiniowana w pliku

Player.java

• Klasa implementująca mechanizm rozgrywki (wraz z ewentualną niezbędną strukturą danych) ora program główny (metoda main) winny

być zdefiniowane w pliku

Game.java

• W pliku README.pdf winien być zawarty szczegółowy opis organizacji struktur danych uzasadnienie, oraz szczegółowy opis przyjętej

strategii prowadzenia rozgrywki


Sposób oceny :

• 1 pkt – Kompilacja : każdy z plików winien być kompilowany bez jakichkolwiek błędów lub ostrzeżeń (w sposób omówiony wyżej)
• 1 pkt – Wykonanie : program powinien wykonywać się bez jakichkolwiek błędów i ostrzeżeń (dla pliku danych wejściowych zgodnych

z wyżej zamieszczoną specyfikacją) z wykorzystaniem omówionych wyżej parametrów linii komend

• 2 pkt – README : plik README.pdf dokumentuje w sposób kompletny i właściwy struktury danych, oraz strategię prowadzenia

rozgrywki.

• 1 pkt – Komentarze wewnętrzne : czy program jest skomentowany w sposób zapewniający zrozumienie jego działania, oraz

wyjaśniający warunki, które muszą zachodzić przed i po wykonaniu każdej z funkcji.

• 1 pkt – Styl kodowania : czy funkcji i zmienne posiadają samo-wyjaśniające nazwy ? Czy podział na funkcje ułatwia czytelność i

zrozumiałość kodu ? Czy funkcje eliminują (redukują) powtarzające się bloki kodu ? Czy wcięcia, odstępy, wykorzystanie nawiasów itp.
(formatowanie kodu) są spójne i sensowne ?

• 4 pkt – Poprawność algorytmu : czy funkcja

go

została zaimplementowane poprawnie , przy czym za samą funkcję

go

można

otrzymać dwa punkty, a za mechanizm realizujący sposób rozgrywki (strategię gry) oraz organizację przekazywania sterowania
pomiędzy graczami (mechanizm nadzoru nad scenariuszem gry) kolejne dwa pkt..



Wyszukiwarka

Podobne podstrony:
Java praca domowa 10
Java praca domowa 05
Java praca domowa 08
Java praca domowa 03
Java praca domowa 02
Java praca domowa 04
Java praca domowa 06
Java praca domowa 09
Java praca domowa 01
Java praca domowa 10
Java praca domowa 06
Java praca domowa 03
POWT C(rozwiązanie) Praca domowa 07 11 2007
Java praca domowa 05
Java praca domowa 09
Java praca domowa 04
Java praca domowa 01

więcej podobnych podstron