Keyboard Race "Wyścig na klawiaturze" Multiplayer

  1. Opis projektu
  2. Instalacja
  3. Związki pomiędzy poszczególnymi komponentami (uproszczony diagram UML)
    1. Wykorzystane klasy i ich opis
  4. Przesyłanie danych pomiędzy serwerem a klientem
    1. Opis klas wykorzystywanych przy komunikacji klient-serwer
    2. Sposób komunikacji klient-serwer
  5. Opis interfejsu graficznego serwera
  6. Opis interfejsu graficznego klienta

Opis projektu

Aplikacja do ćwiczenia szybkiego pisania na klawiaturze z elementami rywalizacji. W grze może uczestniczyć do sześciu graczy. Zadaniem użytkowników jest przepisanie tekstu najszybciej ze wszystkich. Serwer losuje (z puli tekstów) tekst do przepisania. W trakcie zabawy gracze dostają “punkty akcji”, które mogą wykorzystać, by przeszkodzić konkurentom, na umiejętności specjalne takie jak ukrycie wprowadzanych liter, pomieszanie liter w przepisywanym tekście tudzież odwrócenie wyrazów w tekście. Dodatkowo, każdy użytkownik może wpłynąć na rozwój aplikacji, dodając ciekawe teksty do przepisania. Dodawany tekst może się pojawić, dopiero po potwierdzeniu ze strony serwera.

“Wyścig na klawiaturze” to nie tylko rozrywka, ale także przydatne ćwiczenie, z którego faktycznie można skorzystać, gdyż umiejętność szybkiego pisania jest bardzo ważna zwłaszcza dla informatyka. Szybsze pisanie = przyśpieszenie pracy.

Zrzut ekranu aplikacji klienta i serwera

Instalacja

Aby uruchamiać aplikacje napisane w języku Java, potrzebne jest JRE.

  1. Pobrać skompilowaną aplikację.
  2. (TYLKO DLA SERWERA!) Utworzyć folder Texts w głównym katalogu, gdzie znajduje się serwer i dodać kilka plików tekstowych (.txt).
  3. Uruchomić aplikację.

Związki pomiędzy poszczególnymi komponentami (uproszczony diagram UML)

Schemat

Wykorzystane klasy i ich opis

Wspólne dla klienta i serwera

Serwer

Klient

Przesyłanie danych pomiędzy serwerem a klientem

Schemat

Opis klas wykorzystywanych przy komunikacji klient-serwer

Sposób komunikacji klient-serwer

Aplikacja, do komunikacji pomiędzy klientami a serwerem, wykorzystuje sockety a przy tym serializację obiektów (klasa Packet i ExtendedPacket) zawierących stosowne właściwości, zależne od właściwości protokołu (typ wyliczeniowy Command).

Protokół Efekt
NONE  
LOGIN_REQUEST przekazanie prośby o możliwość zalogowania się do serwera
LOGIN_RESPONSE przekazanie odpowiedzi pozytywnej na prośbę o zalogowanie
NICK_SET przekazanie informacji serwerowi o nadanym pseudonimie
LOGOUT wylogowanie się
UPDATE_PLAYERS_LIST aktualizacja użytkowników dla nowego użytkownika oraz poinformowanie innych użytkowników o nowym użytkowniku
LOGOUT_PLAYER_NOTIFY poinformowanie pozostałych użytkowników o wylogowującym się użytkowniku
CHANGE_READY przekazywanie gotowości użytkownika
START_GAME rozpoczęcie rozgrywki
PROGRESS przekazywanie poziomu ukończenia rozgrywki przez użytkownika
WIN przekazanie informacji o ukończeniu zadania przez użytkownika
SEND_TEXT_REQUEST wysłanie zapytania o możliwość przesłania nowego zadania do serwera aplikacji
SEND_TEXT_RESPONSE wysłanie odpowiedzi na prośbę o możliwość przesłania zadania
SEND_TEXT przesłanie do serwera zadania (tekstu do przepisywania)
RESET zakończenie rozrywki, ogłoszenie tablicy wyników oraz przywrócenie UI do stanu początkowego
DEBUFF_CAST przekazanie informacji o użyciu danej umiejętności i uruchomienie działania na danym użytkowniku
DEBUFF_CLEAR przekazanie informacji o przeminięciu danej umiejętności i anulowanie działania na danym użytkowniku

Opis interfejsu graficznego serwera

Zrzut ekranu aplikacji serwera

Interfejs graficzny serwera składa się z 4 istotnych elementów:

Opis interfejsu graficznego klienta

Zrzut ekranu aplikacji klienta

Najważniejszym elementem aplikacji jest szary obszar tekstowy (1). Jest on elementem “centralnym”, znaczy to tyle, że przy zmianie wielkości okna jest responsywny w dwóch wymiarach. W nim wyświetlona zostaje treść zadania do wykonania. Poniżej znajduje się pole tekstowe, które służy do wprowadzania tekstu wyświetlającego się powyżej (2). Po prawej stronie znajduje się drugi obszar tekstowy, który to wyświetla różne informacje od serwera lub klienta, czyli pełni funkcję dziennika zdarzeń (3). Poniżej rejestru zdarzeń jest pole tekstowe oznaczone etykietą “Serwer (host:port)”, gdzie należy podać ip i port serwera, z którym ma nastąpić połączenie (4). Zaraz obok znajdują się dwie etykiety. Pierwsza zawiera informację o wersji aplikacji, natomiast druga o stanie połączenia. W prawym dolnym rogu są 4 przyciski (5):

Ostatnim obszarem jest, znajdująca się na górze aplikacji lista użytkowników (6). Każdy element listy (użytkownik) zawiera (od lewej):

Baw się dobrze!