Sieci Komputerowe

Projekt - FAQ

Faq

Nie będę obecny na zajęciach w dniu 10 maja, czyli terminie oddania projektów. Czy wystarczy, że do tego czasu wyślę kod źródłowy mailowo? Lub czy jest możliwość oddania projektu na dyżurze w poprzednim tygodniu?

W takim wypadku proszę o przesłanie programów mailem na adres mw@amu.edu.pl do poniedziałku 09.05.2016 do godziny 16.00. W przypadku szczególnej kompilacji proszę załączyć też instrukcję kompilacji, wtedy ja będę uruchamiał Państwa programy na zajęciach.

Dlaczego klient zabijający serwer musi logować się do serwera? Czy klient może się połączyć z serwerem a zaraz potem rozłączyć?

Serwer rozpoczyna rozgrywkę, gdy zaloguje się 10 zawodników, stąd w przeciwnym przypadku (bez wysłania LOGIN) rozgrywka nigdy by nie ruszyła. Zatem każdy "psujący" klient MUSI wysłać poprawnie komunikat LOGIN, po jego wysłaniu może się rozłączyć z serwerem i serwer powinien być odporny na takie działanie.

Czy można napisać na projekt aplikację na Androida/komórki?

Jako zadanie mamy do napisania serwer TCP, język i platforma wykonania zadania są dowolne i może to być też androidowa Java (choć rodzi się pytanie po co?). Projekt musi jedynie używać protokołu TCP oraz implementować tekstowy protokół podany na stronie z opisem projektu. Panstwa klienty mają oczywiście komunikować się z serwerem automatycznie i korzystać z jakiegoś algorytmu do grania a nie być sterowane przez użytkownika!

Jak będziemy uruchamiać programy?

Programy będą uruchamiane na zajęciach. Żeby być pewnym prawidłowego działania należy przynieść własny komputer lub sprawdzić wcześniej na komputerach w laboratoriach, czy nasz program kompiluje się i działa tak jak tego oczekujemy.

Kogo sprawdza gracz?

Gracz sprawdza tylko gracza przed nim, czy przewidział on prawidłowy układ kart czy nie. W przypadku, gdy gracz przed nami się pomylił on przegrywa tę rundę, w przypadku, gdy miał rację my przegrywamy. Przegrany gracz otrzymuje dodatkową kartę i gracz występujący w kolejności po nim rozpoczyna nową rundę.

Wg zasad układ zwany Kolorem, to 5 kart w tym samym kolorze (np. 5 trefli). Jednakże z warunków zadania wiemy, że: "jeśli rundę przegrał gracz z 4 kartami w ręku, odpada on z dalszej rywalizacji" - czyli gracz nigdy nie może powiedzieć, że ma Kolor, ponieważ nie może mieć 5 kart?

Tak, musi on przewidywać możliwość wystąpienia takiego układu w oparciu o karty innych graczy.

Ten drugi klient, psuja, to on ma popsuć coś, oszukać, czy ma mu się to nie udać, czy bez różnicy?

Ma najlepiej sprawić żeby gra się nie zakończyła, żeby serwer nie dograł do końca. W drugiej kolejności może starać się oszukać serwer.

A to ma się samo grać? Bo skoro na odpowiedź są 3 sekundy, to klient sam odpowiada a ja jako użytkownik tylko oglądam rozgrywkę? Taka gra komputera z innymi dziesięcioma komputerami?

Tak, program ma grać automatycznie. Tak automatycznie gra na raz 10 zawodników.

Skoro protokół jest wszędzie taki sam, to to można dowolnego klienta podłączyć do dowolnego serwera?

Tak, jest to celem projektu, aby na naszym serwerze zagrali koledzy/koleżanki a my żebyśmy mogli uruchomićnaszego klienta na ich serwerze.

"Serwer każdą poprawną komendę potwierdza komunikatem "OK", każdą niepoprawną oznacza wysyłając "ERROR"." Czy to wymaganie musi być spełnione w każdym momencie gry, czy tylko podczas ruchu bieżącego gracza?

Tak, każda niepoprawne wiadomość, wysłana w dowolnym momencie powinna spowodować odpowiedź ERROR u serwera.

W treści zadania znajduje się zapis: "duży poker (A,K,D,W,10,9) pikowy" składa się on z sześciu, a nie pięciu kard i nie jest wymieniony w starszeństwie układów pokerowych ani nie ma dla niego osobnego oznaczenia. Czy należy potraktować go jako dodatkowy, najwyższy układ, czy jest to pomyłka i układem tym jest po prostu P 10S?

Powinien mieć tylko 5 kart, myślałem że usunąłem wszędzie zapis o "dużym pokerze" w blefie oryginalnie gra się na kartach od 9 wzwyż i wtedy mamy małego pokera od 9 i dużego od 10, a tutaj w założeniu gramy kompletem kart więc są dowolne pokery a najwyższy jest ten od 10 wzwyż (już poprawione w treści).

Serwer ma czekać 3 sekundy na odpowiedź klienta. Co jednak ma zrobić, gdy dostanie błędną odpowiedź, tj. taką, która nie przechodzi walidacji? Ma wyświetlić "ERROR" i czekać na poprawną, czy przejść dalej, a takiego niesfornego klienta po prostu wyrzucić z rozgrywki?

Ma wysłać ERROR i zerować licznik oczekiwania 3 sekundy na odpowiedź klienta.

Jak rozumiec kolor?

Kolor to 5 kart tego samego koloru (tak jak w pokerze). Jak na stole jest wiecej niz 5 w tym samym kolorze, wtedy takze uznajemy ze wystepuje kolor.

Punktacja:

Suma 50 pkt

Za poprawne działanie serwera w poprawnej rozgrywce 20 pkt

Za poprawne działanie serwera w rozgrywce ze złośliwymi klientami 10 pkt

Za poprawne działanie klienta 10 pkt

Za klienta psującego 5 pkt

Bonusowo +2 pkt + 1 pkt + 0.5 pkt za odpowiednio 1,2,3 miejsce w poprawnej rozgrywce (za każdą rozgrywkę)

+3 pkt za zepsucie czyjegoś serwera (lub +0.5 pkt za udział w rogrywce, która zepsuła serwer)