==== Przykładowy opis projektu ==== Przykładowy opis projektu został celowo napisany dla projektu o złożoności programistycznej większej niż typowo oczekiwana w projektach na SK2. ===== Kalambury przez sieć =================================================== Opis: Gracz łączy się do serwera i wysyła swój nick (jeśli nick jest już zajęty, serwer prosi o podanie innego nicku). Gracz po wybraniu nicku trafia do lobby, w którym widzi bieżącą listę pokoi i ilość graczy która jest w każdym pokoju. Z lobby gracz może wejść do istniejącego pokoju lub założyć nowy. Gracz może w każdej chwili wrócić z pokoju do lobby. Jeśli w pokoju trwa gra, gracz dołącza jako zgadujący. Jeśli nie, gracz widzi listę graczy którzy są w pokoju i czeka na rozpoczęcie gry. Grę może rozpocząć gracz który najdłużej czeka w pokoju, pod warunkiem że w pokoju jest przynajmniej trzech graczy. Gracz który rozpoczął grę staje się pokazującym. Pokazujący wysyła do serwera jakie hasło będzie pokazywać. Jeśli tego nie zrobi w określonym czasie, kolejny z listy graczy staje się pokazującym. Po przekazaniu hasła do serwera, kamera gracza pokazującego jest przesyłana przez serwer do zgadujących (pozostałych graczy). Zgadujący widzą ile słów jest w haśle. Zgadujący mogą wpisywać pojedyncze słowa z odgadywanego hasła. Każde wpisane słowo jest widziane przez wszystkich graczy. Jeśli słowo jest w haśle, gracz który je odgadł dostaje punkt, a słowo jest wpisywane we właściwe miejsce w haśle u wszystkich graczy. Jeśli kilku graczy wpisało to samo słowo (przed wyświetleniem go na swoich ekranach), to każdy dostaje punkt. Kiedy całe hasło zostało odgadnięte, lub kiedy upłynął określony czas, lub kiedy rozłączył się pokazujący, kolejny gracz z listy graczy zostaje pokazującym. Gra trwa do momentu aż w pokoju jest przynajmniej trzech graczy. Gracze na bieżąco widzą ranking graczy z punktami (ilością odgadniętych słów), włączając w to też graczy którzy rozłączyli się z gry. Poniżej informacje których nie chcę dostawać w mailu, a mogą być pomocne przy tworzeniu opisu: Opis musi spełniać wymagania ze strony: * "interakcja klientów ze sobą" → oczywiste, * "konieczność obsłużenia wielu klientów naraz" → np. czekamy na słowo od wielu graczy, * "konieczność rozwiązania konfliktów" → np. gracz chce rozpocząć grę, ale z pokoju właśnie wyszedł jeden z trzech graczy; albo: gracz wybrał słowo do odgadywania, ale do serwera przyszło ono po tym jak minął wyznaczony na to czas i już inny gracz jest pokazującym, * "ma działać w sieciach rozległych…" → np. obsługa co jeśli kilku graczy wpisało to samo słowo przed wyświetleniem go na swoich ekranach, czy obsługa konfliktów opisanych powyżej * "ma uwzględniać że użytkownicy mogą…" → określenie co dzieje się gdy gracz trafia do trwającej gry; co dzieje się gdy pokazujący opuści grę etc. * w takim projekcie "parametr konfiguracyjne" to np. czas na wymyślanie i odgadywanie hasła i to pasuje do pliku konfiguracyjnego * "w interaktywnych projektach…" - gracze w lobby widzą bieżący stan pokoi, w grze widzą odgadywane przez innych słowa, widzą na bieżąco ranking etc. Czego nie ma być w opisie: * informacji o językach czy technologiach, np: "klienta napiszemy w CLISP", "GUI będzie używać biblioteki Motif", "będziemy budować używając bjam", "do obsługi webcamów użyjemy biblioteki v4l", * szczegółów architektury programu, np: "użyjemy pętli zdarzeń", "serwer będzie przesyłał do klientów w lobby listę pokoi przy każdej zmianie listy", * informacji o użytych funkcjach w kodzie, np: "będziemy używać epoll", * niedookreślonego zachowania, np: "jeszcze się zastanawiamy czy…", "rozważamy też możliwość…". \\ Zdania typu "pokazujący będzie używał albo kamerki albo rysować na tablecie" będą odczytywać jako: program umożliwi pokazującemu wybór czy używa kamerki czy tabletu. **Ważne:** proszę pamiętać że ocena jest wystawiana na podstawie tego, czy zrealizowaliście opis projektu. Jeśli wpiszecie w opis że wspieracie wiele pokoi ale tego nie będzie, to ten sam projekt będzie gorzej oceniony niż gdyby w opisie była informacja że serwer obsługuje jedną grę naraz.\\ Staram się żeby z Waszych opisów wynikał podobny poziom trudności projektu. Stąd czasami w odpowiedzi na opis poproszę o dodanie do niego czegoś więcej lub odpiszę że niektórych fragmentów nie będę wymagać.\\ Jeśli opis jest za mało dokładny lub niejasny, wtedy zawsze będę prosił o dopracowanie go.