Gra sieciowa typu klient-serwer zrealizowana w języku Java. System pozwala na przeprowadzenie turnieju wiedzy dla wielu graczy jednocześnie. Centralny serwer zarządza logiką gry, a klienci łączą się, aby odpowiadać na pytania w tym samym czasie.
- Architektura klient-serwer
- serwer działa wielowątkowo
- komunikacja odbywa się tekstowym protokołem własnym przez socket
- Mechanika gry
- lobby: gracze dołączają i widzą się nawzajem na liście
- serwer posiada bazę 20 pytań tematycznych, z których losuje się 5 unikalnych pytań na każdą sesję gry
- gra przechodzi do następnego pytania dopiero gdy wszyscy gracze udzielą odpowiedzi (lub minie czas)
- na każde pytanie przewidziane jest 20 sekund
- Ranking
- po każdej odpowiedzi serwer rozsyła zaktualizowany ranking punktowy do wszystkich podłączonych klientów
mvn clean compile exec:java "-Dexec.mainClass=com.example.quiz.server.QuizServer"mvn clean compile exec:java "-Dexec.mainClass=com.example.quiz.client.QuizClientApp"-
Logowanie
- gracz wpisuje nick "szeryf". klient wysyła, a serwer rejestruje gracza
- klient: JOIN:szeryf
- serwer: dodaje gracza do lobby
-
Start gry
- jeden z graczy klika przycisk start.
- klient: START
- serwer: losuje 5 pytań z puli i wysyła pierwsze zapytanie do wszystkich
- serwer -> wszyscy: QUESTION: [Pytanie 1/5]
-
Rozgrywka
- gracz wybiera odpowiedź b (indeks 1)
- klient: ANSWER:1
- serwer: sprawdza poprawność. jeśli ok - dodaje punkt
- serwer -> wszyscy: SCORE:szeryf=1;bandyta=0;
- gdy wszyscy odpowiedzą, serwer automatycznie wysyła kolejne pytanie
-
Zakończenie
- po 5 pytaniach serwer kończy grę
- serwer -> wszyscy: FINISH:Koniec gry! Sprawdź ranking
Projekt wykonany w ramach zaliczenia przedmiotu Programowanie współbieżne i rozproszone.