Java praca domowa 07


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.
© 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
© 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..
© 2014, Jerzy R. Jaworowski, Instytut Teleinformatyki Politechniki Krakowskiej im. Tadeusza KoÅ›ciuszki


Wyszukiwarka

Podobne podstrony:
Java praca domowa
Java praca domowa
Java praca domowa
Java praca domowa
Java praca domowa
Java praca domowa
Java praca domowa
Java praca domowa
Java praca domowa
Praca domowa 4 OgarnijTemat com
praca domowa cw 3
praca domowa 1
Praca domowa 1(1) OgarnijTemat com
Praca domowa
MIB Mat Finansowa 2016 zadania praca domowa nr 2
RozwiÄ…zana praca domowa 13
praca domowa ćw 1

więcej podobnych podstron