INÅ» Ruletka w architekturze klient serwer


POLITECHNIKA KRAKOWSKA
IM. TADEUSZA KOÅšCIUSZKI
WYDZIAA FIZYKI MATEMATYKI I INFORMATYKI
KIERUNEK INFORMATYKA
MATEUSZ WAADYSAAW MACIGA
RULETKA W ARCHITEKTURZE KLIENT  SERWER
A ROULETTE BASED ON A CLIENT  SERVER
ARCHITECTURE
PRACA INŻYNIERSKA
STUDIA STACJONARNE
Promotor: dr Danuta ZboÅ›
Kraków 2013
Praca inżynierska Spis treści
Spis treści
1. Wstęp......................................................................................................................................4
1.1. Cel pracy..........................................................................................................................5
1.2. Zakres pracy....................................................................................................................5
2. Ruletka...................................................................................................................................6
2.1. Co to jest ruletka..............................................................................................................6
2.2. Historia gry......................................................................................................................6
2.3. Rodzaje ruletki................................................................................................................7
2.4. Zasady gry.......................................................................................................................8
2.5. Rodzaje i typy zakładów.................................................................................................9
3. Architektura klient - serwer...............................................................................................12
3.1. Definicja architektury oprogramowania........................................................................12
3.2. Zasada działania............................................................................................................12
3.3. Typy architektury...........................................................................................................13
3.4. Połączenie Peer-to-peer.................................................................................................13
3.5. Protokół komunikacyjny...............................................................................................14
3.6. Wady i zalety.................................................................................................................14
4. Projekt aplikacji..................................................................................................................15
4.1. Opis aplikacji.................................................................................................................15
4.2. Opis wymagań...............................................................................................................15
4.2.1. Wymagania funkcjonalne......................................................................................15
4.2.2. Wymagania niefunkcjonalne.................................................................................16
4.3. Podstawowe założenia...................................................................................................17
4.4. Wykorzystane technologie, narzędzia i biblioteki.........................................................19
4.5. Budowa aplikacji...........................................................................................................21
4.5.1. Klient gry...............................................................................................................22
4.5.2. Serwer gry..............................................................................................................22
4.6. Protokół komunikacyjny gry.........................................................................................27
4.6.1. Ogólna budowa pakietów......................................................................................27
2
Praca inżynierska Spis treści
4.6.2. Typy pakietów........................................................................................................28
4.7. Opis działania aplikacji.................................................................................................34
4.8. Pierwotna wersja gry.....................................................................................................36
4.9. Interfejs graficzny..........................................................................................................37
5. Podsumowanie.....................................................................................................................41
Indeks ilustracji......................................................................................................................42
Indeks tabel.............................................................................................................................43
Bibliografia.............................................................................................................................45
3
Praca inżynierska Wstęp
1. Wstęp
Rozrywka to ważna sfera życia człowieka. Pozwala zapomnieć o problemach życia
codziennego, dostarcza przyjemności, regeneruje energię oraz odstresowuje.
Rozrywka jest obecna w życiu każdego człowieka. Istnieją różne formy rozrywek.
Mogą mieć charakter bierny, jak np. oglądanie filmu lub aktywny, jak np. udział w grze
w ruletkÄ™. [15]
Ruletka, nazywana  królową kasyn jest najpopularniejszą grą hazardową. Elementem
charakterystycznym gier hazardowych jest całkowita lub częściowa losowość. Gry hazardowe
w XIX wieku zdobyły bardzo dużą popularność, która trwa do dziś.
W dobie niesamowicie szybkiego rozwoju technologicznego oraz wszechobecnej
informatyzacji również gry hazardowe trafiły na monitory komputerów domowych i możliwe
stały się rozgrywki bez konieczności wychodzenia do kasyna. Internet pozwolił na tworzenie
wirtualnych kasyn, z których każdy użytkownik z dostępem do sieci globalnej mógł
skorzystać. Istnieją wirtualne kasyna stosujące prawdziwe pieniądze, jak również korzystające
z wirtualnej gotówki. Rozgrywka w internecie jest prowadzona w taki sam sposób jak
w kasynie, z tym że nie widać innych graczy oraz krupierów. Rolę krupiera pełni wtedy
serwer gry, który odpowiedzialny jest za organizowanie oraz zarządzanie rozgrywką.
Każde oprogramowanie komputerowe tworzone jest zgodnie w pewną wybraną
architekturą. Definicja terminu  architektura oprogramowania używanego zamiennie ze
słowem  model zostanie przedstawiona w podrozdziale 3.1. Definicja architektury
oprogramowania.
Jednym z podstawowych modeli wykorzystywanych w tworzeniu oprogramowania
jest architektura klient - serwer, która umożliwia podział zadań. W dużym uproszczeniu
architektura klient - serwer polega na tym, że klienci wysyłają żądanie do serwera, a następnie
oczekują na odpowiedz, natomiast serwer czeka na żądania i w momencie otrzymania
jakiegoś żądania, przetwarza je i wysyła odpowiedz klientowi.
4
Praca inżynierska Wstęp
1.1. Cel pracy
Celem niniejszej pracy dyplomowej jest zaprojektowanie i zaimplementowanie
w języku Java aplikacji umożliwiającej wieloosobową rozgrywkę w ruletkę. Aplikacja
stworzona jest w architekturze klient - serwer. Klient komunikuje się z serwerem, który
kontroluje przebieg rozgrywki oraz dokonuje wymiany komunikatów pomiędzy serwerem
a klientami uczestniczÄ…cymi w grze. Aplikacja przystosowana jest do pracy na komputerach
stacjonarnych i przenośnych.
1.2. Zakres pracy
Rozdział 2. Ruletka zawiera informacje dotyczące gry w ruletkę. Na początku
rozdziału przedstawione są ogólne informacje na temat ruletki. W dalszej części zawarta jest
historia gry oraz opis rodzajów ruletek. W podrozdziale 2.4. Zasady gry, jak sama nazwa
wskazuje, opisane są zasady gry w ruletkę. Ostatni podrozdział 2.5. Rodzaje i typy zakładów
zawiera zestawienie wraz z opisem możliwych typów zakładów w grze.
Rozdział 3. Architektura klient - serwer zawiera podstawowe informacje
o architekturze klient - serwer. Przedstawiono definicje słowa  architektura
oprogramowania , zasadę działania architektury klient - serwer, typy architektur, połączenie
 Peer-to-peer oraz wady i zalety stosowania architektury klient - serwer.
Rozdział 4. Projekt aplikacji zawiera informacje o stworzonej aplikacji. W rozdziale
opisano wymagania dotyczące projektu, podstawowe założenia, wykorzystane technologie,
narzędzia i biblioteki, budowę aplikacji i opis działania aplikacji. W ostatnim podrozdziale
4.9. Interfejs graficzny przedstawiono interfejs graficzny projektu.
5
Praca inżynierska Ruletka
2. Ruletka
2.1. Co to jest ruletka
Ruletka to bardzo popularna pseudolosowa, kasynowa gra, która swoją nazwę wzięła
od francuskiego zdrobnienia słowa  koło . Do gry w ruletkę niezbędne są takie elementy, jak:
" stół a na nim plansza z dostępnymi polami, na które można stawiać zakłady,
" koło ruletki wykorzystywane do losowania numeru i koloru,
" żetony, za pomocą których obstawia się zakłady.
Dodatkowo potrzebna jest osoba zarzÄ…dzajÄ…ca rozgrywkÄ…. TakÄ… osobÄ… w kasynie jest
krupier, który organizuje i prowadzi rozgrywkę. Liczba krupierów znajdujących się wokół
stołu zależna jest od rodzaju ruletki. W ruletkę może grać równocześnie wiele osób.
Przeciwnikiem w rozgrywce każdego uczestnika jest kasyno. [14]
2.2. Historia gry
Za twórcę ruletki uważa się Francuza Blaise'a Pascala, który prymitywną formę ruletki
stworzył już w XVII wieku. Pascal interesował się matematyką, zwłaszcza rachunkiem
prawdopodobieństwa. Skonstruowane urządzenie miało mu pomóc zrozumieć mechanizm
przypadkowości. [8] W pózniejszych czasach ruletkę zaczęto stosować jako grę. Wzrost
popularności oraz zamiłowanie do hazardu obywateli francuskich poskutkowały zakazaniem
gry w ruletkÄ™.
Ilustracja 1. Wygrawerowana francuska ruletka z 1800 roku [14]
6
Praca inżynierska Ruletka
W 1843 roku nastÄ…piÅ‚ prawdziwy przeÅ‚om. François Blanc i Louis Blanc otworzyli
w Monako pierwsze kasyno z prawdziwego zdarzenia. Dodatkowo bracia dołożyli do koła
ruletki przegrodę z cyfrą 0, która zwiększyła szansę kasyna na wygraną. [14]
W XIX wieku gra w ruletkę rozprzestrzeniła się na całą Europę i Stany Zjednoczone,
stajÄ…c siÄ™ najpopularniejszÄ… i najbardziej znanÄ… grÄ… w kasynach. Amerykanie dodali jeszcze
jedną przegrodę z podwójnym zerem (00) oraz zmodyfikowali trochę rozgrywkę. W Stanach
Zjednoczonych, Kanadzie, Republice Południowej Afryki oraz na Karaibach stosuje się
obecnie ruletkę z dwoma zerami, natomiast w innych częściach świata wykorzystuje się
klasycznÄ…, francuskÄ… wersjÄ™ gry z pojedynczym zerem.
2.3. Rodzaje ruletki
Pierwsze ruletki nie wyglądały dokładnie tak samo jak te dzisiejsze, jednak zasady
zostały praktycznie niezmienione od tamtego czasu, czyli gracze obstawiali numer, jaki ich
zdaniem wylosuje maszyna.
Wyróżnia się dwa rodzaje ruletki. Pierwszy to ruletka z pojedynczą cyfrą zero, która
została stworzona przez braci Blanc. Wprowadzona wartość zero dawała przewagę kasynu,
gdyż zmniejszała prawdopodobieństwo wytypowania poprawnej wartości. Natomiast po
wylosowaniu tej wartości przez koło ruletki uczestnicy gry tracili wszystkie postawione
żetony.
Ruletka zdobywała coraz większą popularność w Ameryce. Właściciele tamtejszych
kasyn poszli o krok dalej i wprowadzili kolejną przegrodę o wartości podwójnego zera (00).
W ten sposób jeszcze bardziej zmniejszyli szansę na poprawne wytypowanie liczby. [17]
Jest to główna różnica pomiędzy ruletką francuską a amerykańską, lecz nie jedyna.
Różny jest także przebieg rozgrywki. Podczas gry w ruletkę francuską obecni są trzej
krupierzy: jeden krupier główny oraz dwóch krupierów bocznych. Zadaniami krupiera
głównego są:
" ogłaszanie początku oraz końca przyjmowania zakładów graczy,
" rzucanie kulkÄ… losujÄ…cÄ… liczbÄ™,
" ogłaszanie zwycięskiej liczby.
Krupierzy boczni siedzą po bokach stołu. Wszystkie operacje wykonywane przez nich
są za pomocą specjalnych grabek. Do zadań krupierów bocznych należy:
7
Praca inżynierska Ruletka
" ustawianie żetonów na polach,
" zapamiętywanie ustawień żetonów na stole,
" wypłacanie wygranych graczom.
W przypadku ruletki amerykańskiej do prowadzenia rozgrywki stosowany jest tylko
jeden krupier, który wszystkie operacje wykonuje za pomocą rąk. Ponadto stół jest mniejszy,
przez co gra jest bardziej dynamiczna. Na planszy występuje dodatkowe pole podwójnego
zera (00), w wyniku czego istnieje więcej możliwości przy dokonywaniu zakładów.
2.4. Zasady gry
Do rozpoczęcia gry potrzebny jest co najmniej jeden gracz. Gra polega na obstawieniu
zakładów na dowolną kombinację dostępnych pól na stole ruletki za pomocą żetonów. Można
obstawić pojedynczą liczbę albo zakres liczb, kolor czarny lub czerwony, albo numer
parzysty lub nieparzysty. [5, ss. 14 15]
Po zakończeniu zakładów przez wszystkich graczy krupier, czyli osoba obsługująca
grę, w celu uzyskania wygrywającej liczby i koloru wprowadza w ruch obrotowy koło ruletki,
a następnie rzuca kulę w przeciwnym kierunki do kręcącego się koła na tor wokół koła. Kula
wytraca swoją prędkość i wpada do jednej z trzydziestu siedmiu (francuska ruletka) lub
trzydziestu ośmiu (amerykańska ruletka) przegród w kole ruletki. Każda przegroda koła
ruletki ma swój numer i kolor.
Koło ruletki z pojedynczym zerem
0 32 15 19 4 21 2 25 17 34 6 27 13 36 11 30 8 23 10 5 24 16 33 1 20 14 31 9 22 18 29 7 28 12 35 3 26
Koło ruletki z podwójnym zerem
0 28 9 26 30 11 7 20 32 17 5 22 34 15 3 24 36 13 1 00 27 10 25 29 12 8 19 31 18 6 21 33 16 4 23 35 14 2
Tabela 1. Sekwencja numerów na kole ruletki [14]
Niektóre kasyna amerykańskie i europejskie urozmaicają rozgrywkę, pozwalając
graczom na obstawianie w trakcie losowania numeru. Dokonywanie zakładów możliwe jest
do momentu wypowiedzenia przez krupiera słów  no more bets (koniec obstawiania) lub ich
odpowiednika w innym języku.
8
Praca inżynierska Ruletka
2.5. Rodzaje i typy zakładów
Wyróżnia się dwa rodzaje zakładów: zakłady zewnętrzne oraz zakłady wewnętrzne.
Wartość wygranej zależna jest od typu zakładu. Jeśli postawi się żeton na wylosowany numer
w kole ruletki, wygrywa się kwotę wielokrotnie większą lub co najmniej równą postawionej.
Poniższa tabela przedstawia zestawienie rodzajów i typów zakładów wraz z opisem.
Nazwa zakładu Opis zakładu Wygrywające pola Wygrana
Zakłady Straight (lub Single) Zakład postawiony na dowolny Dowolny numer 35 do 1
wewnętrzne numer. Żeton ustawiany jest na
środku pola z numerem.
Split Zakład postawiony na graniczące Dowolne dwa 35 do 1
numery (poziomo lub pionowy). numery graniczÄ…ce
Żeton ustawiany jest na linii ze sobą pionowo lub
pomiędzy numerami. poziomo
Street Zakład postawiony na trzy numery Dowolne trzy 11 do 1
znajdujÄ…ce siÄ™ w pojedynczej linii poziome numery (np.
poziomej. Żeton ustawiony jest 1, 2, 3 lub 4, 5, 6)
krawędzi na końcu linii numerów.
Corner (lub Square) Zakład postawiony na cztery Dowolne cztery 8 do 1
numery. Żeton ustawiany jest na graniczące numery
przecięciu linii poziomej i pionowej (np. 2, 3, 5, 6)
pomiędzy czterema numerami.
Six line (lub Double Zakład postawiony na dwa Dowolne sześć 5 do 1
Street) sąsiadujące zakłady typu Street. numerów z dwóch
Żeton ustawiony jest pomiędzy poziomych wierszy
żetonami, które znajdowałyby się, (np. 1, 2, 3, 4, 5, 6)
jeśli postawilibyśmy dwa zakłady
typu Street.
Trio Zakład postawiony na numery 0,1 i 0,1,2 lub 0,2,3 11 do 1
2 lub 0,2,3 (tylko dla układu stołu z
pojedynczym zerem). Żeton
ustawiany na przecięciu pomiędzy
trzema numerami.
Basket (lub the first Zakład postawiony na punkt 0,1,2,3 11 do 1
four) pomiędzy numerami 0,1,2 i 3 (tylko
9
Praca inżynierska Ruletka
Nazwa zakładu Opis zakładu Wygrywające pola Wygrana
dla układu stołu z pojedynczym
zerem).
Basket Zakład postawiony na numery 0, 1, i 0, 1, 2 lub 00, 2, 3 11 do 1
2, 0, 00, i 2 lub 00, 2, i 3 (tylko dla lub 0, 00, 2
układu stołu z podwójnym zerem).
Żeton ustawiany jest na przecięciu
trzech żądanych numerów.
Top line Zakład postawiony na numer 0, 00, 0, 00, 1, 2, 3 6 do 1
1, 2 i 3 (tylko dla układu stołu z
podwójnym zerem). Żeton
ustawiany jest na narożniku
numerów 0 i 1 lub 00 i 3.
Zakłady 1 to 18 Zakład postawiony na pierwsze 1, 2, 3, ..., 18 1 do 1
zewnętrzne osiemnaście numerów.
19 to 36 Zakład postawiony na drugie 19, 20, 21, ..., 36 1 do 1
osiemnaście numerów.
Red Zakład postawiony na kolor 1, 3, 5, 7, 9, 12, 1 do 1
czerwony numeru. 14, 16, 18, 19, 21,
23,25, 27, 30, 32, 34,
36
Black Zakład postawiony na kolor czarny 2, 4, 6, 8, 10, 11, 1 do 1
numeru. 13, 15, 17, 20, 22,
24, 26, 28, 29, 31,
33, 35
Even Zakład postawiony na parzysty 2, 4, 6, ..., 36 1 do 1
numer.
Odd Zakład postawiony na niezerowy 1, 3, 5, ..., 35 1 do 1
nieparzysty numer.
1st Dozen Zakład postawiony na pierwszą 1, 2, 3, & , 12 2 do 1
grupę dwunastu numerów.
2nd Dozen Zakład postawiony na drugą grupę 13, 14, 15, & , 24 2 do 1
dwunastu numerów.
3rd Dozen Zakład postawiony na trzecią grupę 25, 26, 27, & , 36 2 do 1
dwunastu numerów.
1st Column Zakład postawiony na wszystkie 1, 4, 7, 10, 13, 16, 2 do 1
numery, które znajdują się w 19, 22, 25, 28, 31, 34
10
Praca inżynierska Ruletka
Nazwa zakładu Opis zakładu Wygrywające pola Wygrana
pierwszej pionowej linii.
2nd Column Zakład postawiony na wszystkie 2, 5, 8, 11, 14, 17, 2 do 1
numery, które znajdują się w drugiej 20, 23, 26, 29, 32, 35
pionowej linii.
3rd Column Zakład postawiony na wszystkie 3, 6, 9, 12, 15, 18, 2 do 1
numery, które znajdują się w trzeciej 21, 24, 27, 30, 33, 36
pionowej linii.
Tabela 2. Zestawienie rodzajów i typów zakładów [5, ss. 15 17]
11
Praca inżynierska Architektura klient - serwer
3. Architektura klient - serwer
3.1. Definicja architektury oprogramowania
Wśród publikowanych definicji terminu  architektura oprogramowania ta, którą
podaje Philippe Kruchten, najpełniej opisuje wymienione pojęcie:  Architektura
oprogramowania dotyczy projektu i implementacji w aspekcie przedstawiania struktury
oprogramowania na ich wysokim poziomie abstrakcji. Jest rezultatem Å‚Ä…czenia pewnej liczby
elementów architektonicznych w pewną odpowiednio dobraną formę tak, by spełnić główne
funkcjonalności oraz wymagania wydajności, takie jak skalowalność i dostępność.
Architektura zwiÄ…zana jest z abstrakcjÄ…, dekompozycjÄ… i ponownÄ… kompozycjÄ…, stylem
i estetykÄ… systemu informatycznego . [4]
3.2. Zasada działania
Główną zasadą działania modelu klient - serwer jest podział zadań pomiędzy
komputerami. Model klient - serwer to bardzo popularna architektura oprogramowania
sieciowego. W tym układzie klient zgłasza żądanie do usługi do serwera. Warto zaznaczyć,
że serwer może obsługiwać dużą liczbę klientów. Możliwe jest rozwiązanie, w którym proces
klienta i serwera uruchomiony jest na tym samym komputerze. Dzięki temu można poradzić
sobie z problemem wzrastającej liczby klientów różnych usług sieciowych. [7] Dziś ciężko
wyobrazić sobie funkcjonowanie aplikacji sieciowych bez istnienia tej architektury.
Ilustracja 2. Zasada działania architektury
oprogramowania klient - serwer [7]
12
Praca inżynierska Architektura klient - serwer
3.3. Typy architektury
Ze względu na rozdzielenie wykonywanych zadań architekturę klient - serwer można
podzielić na następujące typy:
" architektura jednowarstwowa  dane są gromadzone i przesyłane w obrębie
jednego modułu,
" architektura dwuwarstwowa  dane są przechowywane i udostępniane przez
serwer, a zadaniem klienta jest przetwarzanie otrzymanych danych od serwera,
" architektura trójwarstwowa  składowanie i przetwarzanie danych odbywa się
w różnych modułach, co pozwala na dokonywanie niezależnych zmian
w dowolnym module,
" architektura wielowarstwowa  dane są gromadzone i przesyłane przy
wykorzystaniu wielu osobnych modułów. [7]
3.4. Połączenie Peer-to-peer
Odmianą architektury klient - serwer jest połączenie peer-to-peer, w którym każdy
komputer może pełnić funkcję klienta i serwera. Każdy komputer równocześnie może
udostępniać innym komputerom swoje zasoby i pobierać dane udostępniane przez inne
komputery działające w obrębie tej samej sieci P2P (Peer-to-peer). Głównym zastosowaniem
tej sieci jest współdzielenie plików w internecie. [7] [10]
Istnieją sieci peer-to-peer wykorzystujące scentralizowany serwer, który przechowuje
informacje o podłączonych użytkownikach oraz czasami o udostępnianych zasobach.
Nierzadko serwery te udostępniają dodatkowe usługi, jak np. czat. Sieci z serwerem są
efektywniejsze, ponieważ udostępniane dane są indeksowane, a to umożliwia szybsze
przeszukiwanie dostępnych zasobów.
13
Praca inżynierska Architektura klient - serwer
Ilustracja 3. Schemat sieci
P2P [10]
3.5. Protokół komunikacyjny
Komunikacja pomiędzy serwerem a klientami odbywa się z wykorzystaniem pewnego
protokołu komunikacyjnego. Protokół komunikacyjny to zbiór ścisłych reguł i zasad, zgodnie
z którymi ustanawiane jest połączenie oraz dokonywana jest wymiana danych. [11]
3.6. Wady i zalety
Główną zaletą stosowania architektury klient - serwer jest bezpieczeństwo danych,
ponieważ dane przechowywane są na serwerze i to on decyduje, komu udostępnić te zasoby.
Istnieje wiele technologii dostępu do danych, w których możliwe jest wykorzystanie serwera.
Technologie te zwiększają bezpieczeństwo i użyteczność architektury klient - serwer.
Dodatkowa zaleta to możliwość stosowania modelu klient - serwer w globalnej sieci
internetowej i w sieci lokalnej. [9]
Wadą architektury klient - serwer jest ograniczenie liczby klientów, których serwer
może obsłużyć w tym samym czasie. W przypadku niskiej wydajności sprzętu mogą wystąpić
problemy z generowaniem odpowiedzi i opóznienia. Dostęp do danych możliwy jest tylko
podczas pracy serwera. Wyłączenie serwera uniemożliwia dostęp do zasobów.
Do pracy serwera obsługującego dużą liczbę klientów konieczne jest posiadanie
wyspecjalizowanego oprogramowania oraz środowiska pracy. [9]
14
Praca inżynierska Projekt aplikacji
4. Projekt aplikacji
4.1. Opis aplikacji
Stworzona przeze mnie aplikacja pozwala na rozegranie wieloosobowej rozgrywki
w ruletkÄ™. Aplikacja stworzona jest w architekturze klient - serwer, gdzie serwer
odpowiedzialny jest za zarządzanie rozgrywką i wymianę komunikatów pomiędzy klientami
a serwerem.
Konfiguracja serwera odbywa się za pomocą zdefiniowanych poleceń wpisywanych
w odpowiednim polu. Lista poleceń wraz z opisem przedstawiona zostanie w podrozdziale
4.5.2.1. Obsługa serwera.
Na potrzeby aplikacji stworzony został protokół komunikacyjny, za pomocą którego
dokonywana jest wymiana komunikatów pomiędzy serwerem w klientami. Opis protokołu
wraz z listą pakietów oraz ich opisem i budową przedstawiony zostanie w podrozdziale 4.6.
Protokół komunikacyjny gry.
Aplikacja umożliwia komunikację czatową pomiędzy graczami za pomocą czatu.
4.2. Opis wymagań
Każda nowo utworzona aplikacja musi spełniać zdefiniowane przez autora wymagania
funkcjonalne i niefunkcjonalne. Wymagania funkcjonalne określają, jakie funkcje ma
realizować projekt, natomiast wymagania niefunkcjonalne odnoszą się do tego, w jaki sposób
dana aplikacja realizuje swoje funkcje. Poniżej przedstawiono wymagania funkcjonalne
i niefunkcjonalne stworzonej przeze mnie aplikacji.
4.2.1. Wymagania funkcjonalne
Do wymagań funkcjonalnych można zaliczyć następujące elementy:
" stworzenie serwera gry, do którego mogą podłączyć się gracze z sieci
internetowej oraz sieci lokalnej,
" konfiguracja serwera gry za pomocą zdefiniowanych poleceń,
" ustaleniem własnej nazwy gracza dla każdej rozgrywki,
" połączenie gracza z działającym serwerem gry w sieci internetowej oraz sieci
lokalnej,
15
Praca inżynierska Projekt aplikacji
" stawianie zakładów poprzez kliknięcie w żądane pole na planszy,
" wybór różnych wartości zakładów,
" komunikowanie się pomiędzy graczami za pomocą czatu,
" usuwanie wszystkich postawionych zakładów przez gracza po kliknięciu
w określony przycisk,
" wyświetlenie poprzednio wylosowanych wartości za pomocą koła ruletki,
" wyświetlenie, po wylosowaniu liczby, okna podsumowującego zawierającego
wartość liczby wylosowanej oraz wartość wygranej gracza,
" wyświetlenie, po najechaniu na pole ze złożonym przez gracza co najmniej
jednym zakładem, sumy wartości wszystkich zakładów postawionych na to
pole,
" automatyczna aktualizacja planszy z zakładami oraz wartości pieniężnej po
dokonaniu zakładu przez któregokolwiek gracza,
" automatyczna aktualizacja, co sekundę, czasu pozostałego do złożenia
zakładów przez graczy.
4.2.2. Wymagania niefunkcjonalne
Wymagania niefunkcjonalne stworzonej aplikacji gry w ruletkę zostały podzielone na
następujące grupy: łatwość użycia, niezawodność, przenośność, łatwość konserwacji.
Aatwość użycia:
" aplikacja pozwala użytkownikom na korzystanie z wszystkich dostępnych
funkcjonalności bez odbywania szkoleń,
" funkcje aplikacji przedstawione są w sposób intuicyjny i łatwy do
wykorzystania.
Niezawodność:
" w przypadku wystąpienia błędu krytycznego wyświetlony zostanie komunikat
o błędzie,
" w przypadku wystąpienia błędu niekrytycznego aplikacja dalej funkcjonuje
poprawnie.
16
Praca inżynierska Projekt aplikacji
Przenośność:
" aplikacja działa poprawnie na większości popularnych systemów operacyjnych
m.in. Microsoft Windows, Linux, Unix i Mac OS,
" aplikacja działa poprawnie na każdym sprzęcie z zainstalowaną maszyną
wirtualnÄ… Javy,
Aatwość konserwacji:
" dostępna jest dokumentacja na temat kodu zródłowego,
" system kontroli wersji umożliwia cofnięcie dokonanych zmian w kodzie.
4.3. Podstawowe założenia
Do podstawowych założeń stworzonej aplikacji należą:
" aplikacji okienkowa,
" obsługa adresów IP w wersji 4,
" wykorzystanie protokołu TCP.
Aplikacja okienkowa
Stworzona aplikacja jest aplikacją okienkową, co oznacza, że uruchamia się w oknie
w systemie operacyjnym. Okno w informatyce oznacza wydzielony fragment ekranu, na
którym znajduje się interfejs graficzny programu. Każde okno w systemie operacyjnym
zarządzane jest przez graficznego menadżera okien. Tego typu aplikacje są często bardzo
intuicyjne i łatwe do obsługi przez każdego użytkownika komputera. Graficzny interfejs daje
większą możliwość w podejmowaniu czynności i ich kolejności przez użytkowników. [6]
17
Praca inżynierska Projekt aplikacji
Ilustracja 4. Aplikacja kalkulatora jako przykładu aplikacji
okienkowej
Wykorzystanie protokołu IP w wersji 4
Aplikacja gry w ruletkę wykorzystuje protokół internetowy IP (ang. Internet Protocol)
w wersji 4. Protokół IP jest to bardzo popularny protokół komunikacyjny służący do wymiany
danych w sieci internetowej i sieci lokalnej. Protokół IP jest zawodny, tzn. że nie gwarantuje
w pełni dotarcia danych do odbiorcy. Jeśli zaistnieje taka potrzeba, to dane zostaną
pofragmentowane i wysłane w wielu pakietach do odbiorcy. Protokół nie gwarantuje jednak,
że pakiety dotrą do odbiorcy w takiej kolejności, w jakiej zostały wysłane.
Adres IP jest unikatowym identyfikatorem komputera w sieci. Więcej informacji na
temat protokołu IP można znalezć w dokumencie RFC791. [12]
Wykorzystanie protokołu TCP
Aplikacja wykorzystuje protokół komunikacyjny TCP (ang. Transmission Control
Protocol). Protokół TCP pracuje w wyższej warstwie modelu ISO/OSI od protokołu IP, jest to
warstwa transportowa. Protokół TCP służy do przesyłania danych pomiędzy procesami na
różnych komputerach. Korzysta z usług IP do przesyłania danych i fragmentacji tylko wtedy,
18
Praca inżynierska Projekt aplikacji
gdy jest to potrzebne. Jest to protokół połączeniowy, niezawodny i strumieniowy. Przed
wymianą danych dwa komputery muszą ze sobą nawiązać połączenie. Taka procedura nazywa
się  three-way handshake . Protokół TCP gwarantuje, że wysłane dane trafią do odbiorcy
z zachowaniem kolejności i bez duplikatów. Jeśli jakiś pakiet danych zagubi się po drodze, to
zostanie on ponownie przesłany do odbiorcy. Więcej informacji na temat protokołu TCP
można znalezć w dokumencie RFC793. [13]
Ilustracja 5. NawiÄ…zywanie
połączenia w protokole TCP (three-
way handshake) [16]
4.4. Wykorzystane technologie, narzędzia i biblioteki
Podczas tworzenia aplikacji wykorzystano:
technologie:
" Java,
narzędzia:
" NetBeans IDE,
" Git,
biblioteki:
" New Input/Output,
" Swing i AWT.
PodstawowÄ… technologiÄ… wykorzystanÄ… w projekcie aplikacji jest Java. Java to
obiektowy język programowania stworzony przez firmę Sun Microsystems. Składnia języka
19
Praca inżynierska Projekt aplikacji
bazuje na języku C++. Pewne cechy zostały przejęte z języka SmallTalk. Język Java jest
niezależny od architektury, co oznacza, że program stworzony w tym języku może być
uruchomiony na każdym systemie operacyjnym. Jedynym ograniczeniem jest konieczność
posiadania oprogramowania Java Virtual Machine. [1]
Główne cechy języka Java to:
" obiektowość  wszystkie funkcjonalności i dane pogrupowane są w klasy obiektów,
" dziedziczenie  wszystkie klasy są klasami podrzędnymi klasy podstawowej o nazwie
Object, z której dziedziczą domyślne zachowania i właściwości,
" niezależność od architektury  kod napisany w języku Java kompilowany jest do kodu
pośredniego, który trafia do tzw. wirtualnej maszyny Java, gdzie dostosowywany jest
do konkretnego systemu operacyjnego i procesora,
" sieciowość i obsługa programowania rozproszonego  język Java umożliwia tworzenie
aplikacji wykorzystujących sieć w swoim działaniu oraz programowanie ze
współdzielonymi zasobami; obie te funkcjonalności zapewniają wbudowane
biblioteki,
" niezawodność i bezpieczeństwo.
Jednym z wykorzystanych narzędzi podczas procesu tworzenia oprogramowania był
Git, czyli rozproszony system kontroli wersji. Oprogramowanie to pozwala na śledzenie
zmian w kodzie głównym aplikacji. Dodatkowo umożliwia łączenie dokonanych zmian przez
różnych programistów w różnych okresach czasu. Git jest wolnym oprogramowaniem
opublikowanym na licencji GNU GPL w wersji 2. [2]
Zdecydowano się na wykorzystanie tego narzędzia, gdyż rozwijanie kodu z tym
narzędziem jest bezpieczniejsze. W przypadku wystąpienia błędów możliwy jest powrót do
działającej wersji kodu. Dzięki wykorzystaniu tego narzędzia kod jest archiwizowany.
Zastosowany w aplikacji NetBeans IDE to zintegrowane środowisko programistyczne,
czyli aplikacja lub zespół aplikacji służące do tworzenia, modyfikowania, testowania
i konserwowania oprogramowania. NetBeans IDE pozwala przyśpieszyć proces tworzenia
aplikacji w języku Java.
Aplikacja w ramach niniejszej pracy dyplomowej została stworzona w środowisku
programistycznym NetBeans IDE.
20
Praca inżynierska Projekt aplikacji
Biblioteka w języku informatycznym oznacza zbiór funkcji, procedur
wykorzystywanych w różnych programach. Biblioteka NIO (New Input/Output) to kolekcja
interfejsów przeznaczonych dla języka Java oferująca funkcjonalności dla operacji
wejścia/wyjścia. Jest to rozszerzenie dla istniejącej już biblioteki I/O (Input/Output).
Główne cechy biblioteki NIO to:
" orientacja na bufor  dane bezpośrednio zapisywane są do bufora danych;
możliwe jest przemieszczanie się pomiędzy bajtami danych, co daje większą
elastyczność w przetwarzaniu danych,
" nieblokujące I/O  oznacza, że wątek nie jest blokowany podczas odczytu lub
zapisu,
" obecność selektorów, czyli obiektów pozwalających pojedynczemu wątkowi
programu monitorować wiele kanałów wejścia/wyjścia, dzięki czemu możliwa
jest rejestracja wielu kanałów wejścia/wyjścia dla jednego obiektu selektora.
Biblioteka NIO jest bardzo rozbudowana. W przedstawionej aplikacji wykorzystano
jedynie część dotyczącą zarządzania gniazdami sieciowymi, selektorami oraz buforami. [3]
Kolejne biblioteki wykorzystane w stworzonej aplikacji to Swing i AWT. SÄ… one
standardowymi bibliotekami dostępnymi w języku Java wykorzystywanymi do renderowania
grafiki. Biblioteka Swing jest nowszÄ…, ulepszonÄ… wersjÄ… AWT.
4.5. Budowa aplikacji
Stworzona aplikacja gry w ruletkę składa się z modułu klienta gry oraz modułu
serwera gry. Serwer gry jest serwerem nasłuchującym co oznacza, że działa w tym samym
procesie co klient gry. Jeden z graczy uczestniczących w rozgrywce jest równocześnie
klientem i serwerem gry.
21
Praca inżynierska Projekt aplikacji
Ilustracja 6. Diagram komponentów aplikacji
4.5.1. Klient gry
Klient gry wysyła i odbiera komunikaty od serwera, z którym jest połączony.
Odebrane komunikaty są przetwarzane przez klienta. Klient gry zajmuje się również
renderowaniem interfejsu graficznego aplikacji.
4.5.2. Serwer gry
Głównym zadaniem serwera jest organizacja i zarządzanie rozgrywką. Serwer
decyduje m.in. o rozpoczęciu i zakończeniu rozgrywki. Zadaniem serwera jest również
przekazywanie informacji do wszystkich klientów gry. W przypadku wystąpienia jakiegoś
zdarzenia podczas rozgrywki, zadaniem serwera jest poinformowanie wszystkich klientów
o jego wystąpieniu. Wszystkie informacje, m.in. o postawionych zakładach i wartościach
pieniężnych graczy, przechowywane są na serwerze gry.
4.5.2.1. Obsługa serwera
Obsługa serwera odbywa się za pomocą zdefiniowanych poleceń wpisywanych
w przeznaczonym do tego celu polu tekstowym. To samo pole tekstowe wykorzystywane jest
również do przesyłania komunikatów czatowych do graczy uczestniczących w rozgrywce.
W celu identyfikacji poleceń, każde polecenie serwerowe poprzedzane jest znakiem  / .
22
Praca inżynierska Projekt aplikacji
W aplikacji zdefiniowanych zostało dziesięć poleceń serwerowych konfigurujących serwer
gry. W kolejnych podrozdziałach opisane zostały dostępne polecenia serwerowe.
1. Wyświetlenie informacji o wszystkich poleceniach
Polecenie odpowiedzialne jest za wyświetlenie wszystkich zdefiniowanych
poleceń wraz z poprawną konstrukcją oraz opisem polecenia.
/info
Tabela 3. Budowa polecenia służącego do wyświetlenia wszystkich dostępnych poleceń
2. Usunięcie gracza z serwera
Polecenie odpowiedzialne jest za wyrzucenie gracza z serwera. Polecenie przyjmuje
dwa argumenty. Drugi argument polecenia jest opcjonalny. Pierwszym argumentem
polecenia jest nazwa gracza, natomiast drugim jest powód, dla którego gracz zostanie
usunięty. Po otrzymaniu takiego polecenia serwer sprawdza, czy połączony jest klient
o podanej nazwie gracza. Jeśli gracz o podanej nazwie jest połączony, to zostanie on usunięty
z rozgrywki, a do pozostałych graczy zostanie wysłany komunikat informujący
o wyrzuceniu danego gracza z serwera. Graczowi, który został usunięty, wyświetli się
komunikat informujÄ…cy go o tym fakcie wraz z podanym powodem wyrzucenia z serwera.
/kick nazwaGracza [powódWyrzucenia]
Tabela 4. Budowa polecenia służącego do wyrzucenia gracza z serwera
3. Zablokowanie adresu IP gracza
Polecenie odpowiedzialne jest za zablokowanie dostępu dla adresu IP gracza.
Przyjmuje dwa argumenty. Pierwszy argument jest nazwą gracza, którego adres IP
użytkownik chce zablokować, a drugi to powód zablokowania gracza. Drugi argument
jest opcjonalny. Po otrzymaniu takiego polecenia serwer sprawdza, czy klient o podanej
nazwie jest z nim połączony. Jeśli jest połączony, to wyciągany jest adres IP tego
gracza z listy klientów. Adres IP gracza zostaje dodany do listy zablokowanych
23
Praca inżynierska Projekt aplikacji
adresów IP serwera wraz z nazwą gracza. Każdy klient, który chce się połączyć
z serwerem, jest sprawdzany pod kątem obecności jego adresu IP na liście adresów
zablokowanych. Klient jest w stanie dołączyć do serwera pod warunkiem, że jego adres IP
nie znajduje się na liście adresów zablokowanych.
/ban nazwaGracza [powódZablokowania]
Tabela 5. Budowa polecenia służącego do zablokowania adresu IP
4. Wyświetlenie listy zablokowanych adresów IP
Polecenie odpowiedzialne jest za wyświetlenie listy zablokowanych adresów IP. Lista
składa się z dwóch kolumn. W pierwszej kolumnie znajduje się zablokowany adres IP
a w drugiej nazwa gracza, który korzystał z tego adresu IP.
/banlist
Tabela 6. Budowa polecenia służącego do wyświetlenia listy zablokowanych adresów IP
5. Usunięcie adresu IP z listy zablokowanych adresów
Polecenie odpowiedzialne jest za usunięcie żądanego adresu IP z listy zablokowanych
adresów. Można to wykonać na dwa sposoby. Pierwszy sposób polega na przekazaniu adresu
IP, który chcemy usunąć, natomiast drugi na przekazaniu nazwy gracza, który posługiwał się
adresem IP w momencie zablokowania.
/unban adresIP|nazwaGracza
Tabela 7. Budowa polecenia służącego do usunięcia adresu IP z listy zablokowanych
adresów
24
Praca inżynierska Projekt aplikacji
6. Wyświetlenie aktualnej lub zmiana na nową startowej liczby
pieniędzy
Polecenie odpowiedzialne jest za wyświetlenie aktualnej startowej liczby pieniędzy
lub zmianę na nową wartość. Każdy gracz, który dołącza do gry, rozpoczyna rozgrywkę
z początkową liczbą pieniędzy zdefiniowaną przez serwer. Informacja ta przekazywana jest
w jednym z pakietów konfiguracyjnych. Polecenie przyjmuje opcjonalnie jeden argument
z nową wartością startową. Jeśli gracz nie poda tego argumentu, to zostanie wyświetlona
aktualna wartość.
/startmoney [nowaWartośćStartowa]
Tabela 8. Budowa polecenia służącego do wyświetlenia aktualnej lub zmiany na nową
wartość startowej liczby pieniędzy
Dokonana zmiana wartości kwoty startowej serwera zostanie wprowadzona dopiero
po dokonaniu restartu serwera za pomocÄ… polecenia 8. Zresetowanie serwera gry.
7. Zmiana trybu gry
Polecenie odpowiedzialne jest za wyświetlenie aktualnego lub zmianę trybu
rozgrywki. Dostępne są dwa tryby: public  publiczny lub private  prywatny. W trybie
publicznym dostęp do serwera ma każdy gracz, natomiast w trybie prywatnym dostęp do
serwera możliwy jest jedynie po wpisaniu prawidłowego hasła dostępu.
Polecenie przyjmuje opcjonalnie jeden argument oznaczający nowy tryb. Jeśli nie
zostanie podany argument, to zostanie wyświetlony komunikat o aktualnym trybie. Jeśli
zostanie dokonana zmiany trybu rozgrywki na tryb prywatny, wyświetlone zostanie okno
dialogowe, w którym należy podać nowe hasło dostępu do serwera.
/changemode [public|private]
Tabela 9. Budowa polecenia służącego do wyświetlenia aktualnego lub zmiany trybu
rozgrywki
25
Praca inżynierska Projekt aplikacji
Dokonana zmiana trybu rozgrywki serwera zostanie wprowadzona po zresetowaniu
serwera za pomocÄ… polecenia 8. Zresetowanie serwera gry.
8. Zresetowanie serwera gry
Polecenie odpowiedzialne jest za zresetowanie serwera gry. Zresetowanie serwera gry
oznacza usunięcie wszystkich aktualnie postawionych zakładów i rozpoczęcie rozgrywki od
nowa z początkową wartością pieniężną wszystkich graczy oraz określonym czasem na
składanie zakładów. Jeśli została dokonana zmiana początkowej wartości pieniężnej, trybu
rozgrywki lub czasu na ruch, zmiany zostaną wprowadzone. Polecenie nie przyjmuje żadnych
argumentów.
/restart
Tabela 10. Budowa polecenia służącego do zrestartowania serwera gry
9. Wyświetlenie aktualnej lub zmiana na nową maksymalną liczbę
klientów
Serwer ma możliwość określenia maksymalnej liczby klientów. Jeśli liczba klientów
obecnie połączonych będzie równa maksymalnej liczbie klientów, to żaden nowy klient nie
będzie w stanie dołączyć do gry. Polecenie odpowiedzialne jest za wyświetlenie aktualnej
maksymalnej liczby klientów lub zmianę na nową wartość. Polecenie przyjmuje opcjonalnie
jeden argument oznaczający nową maksymalną liczbę klientów. Jeśli nie zostanie podany
argument, wyświetlona zostanie aktualna wartość maksymalnej liczby klientów na serwerze.
/maxclients [maksLiczbaKlientow]
Tabela 11. Budowa polecenia służącego do wyświetlenia aktualnej lub zmiany na nową
maksymalnej liczby klientów
Dokonana zmiana wartości maksymalnej liczby klientów zostanie wprowadzona po
zresetowaniu serwera za pomocÄ… polecenia 8. Zresetowanie serwera gry.
26
Praca inżynierska Projekt aplikacji
10. Wyświetlenie aktualnej lub zmiana na nową wartość czasu
przeznaczonego na ruch
Serwer gry ma możliwość określenia czasu na ruch w rozgrywce. Runda może zostać
zakończona na dwa sposoby. Pierwszy sposób polega na zakończeniu stawiania zakładów
przez wszystkich graczy, natomiast drugi polega na skończeniu się czasu przeznaczonego na
zakłady. Polecenie odpowiedzialne jest za wyświetlenie aktualnej lub zmianę na nową
wartość czasu przeznaczonego na ruch. Polecenie przyjmuje opcjonalnie jeden argument
będący nową wartością czasu na ruch. Jeśli argument nie zostanie podany, serwer wyświetli
aktualną wartość.
/bettime [czasNaRuch]
Tabela 12. Budowa polecenia służącego do wyświetlenie lub zmiany no nową wartość czasu
przeznaczonego na ruch
Dokonana zmiana wartości zostanie wprowadzona po zresetowaniu serwera za
pomocÄ… polecenia 8. Zresetowanie serwera gry.
4.6. Protokół komunikacyjny gry
Na potrzeby aplikacji stworzony został protokół komunikacyjny. Komunikacja
odbywa się za pomocą pakietów przesyłanych w postaci bajtów pomiędzy klientami
a serwerem. Informacje na temat rozgrywki przesyłane są za pomocą tego protokołu.
4.6.1. Ogólna budowa pakietów
Każdy pakiet posiada taką samą budowę. Pierwsza dwa bajty określają typ pakietu.
Typem pakietu jest dwucyfrowa liczba całkowita. Na następnych bajtach znajdują się bajty
danych. Liczba bajtów oraz format danych zależny jest od typu pakietu. Każdy pakiet
zakończony jest literą  K .
27
Praca inżynierska Projekt aplikacji
Ilustracja 7. Ogólna budowa pakietów protokołu komunikacyjnego
4.6.2. Typy pakietów
Utworzony protokół komunikacyjny składa się z czternastu typów pakietów.
W kolejnych podrozdziałach opisane zostały wszystkie typy pakietów.
1. Pakiet00Login
Pakiet  Pakiet00Login oznacza próbę dołączenia do rozgrywki nowego klienta.
Klient po połączeniu się z serwerem wysyła do serwera pakiet  Pakiet00Login .
W przypadku odrzucenia próby dołączenia serwer odsyła nadawcy pakiet
8. Pakiet07LoginDenied. Po udanej próbie dołączenia do rozgrywki, pakiet  Pakiet00Login
wykorzystywany jest do przesyłania informacji o aktualnie połączonych graczach.
W przypadku pierwszego wykorzystania pakietu przesyłana jest nazwa i kolor gracza,
który próbuje dołączyć oraz hasło dostępu do serwera prywatnego. Ostatnia informacja
przesyłana jest tylko wtedy, gdy klient próbuje dołączyć do serwera prywatnego. Po udanej
próbie dołączenia w pakiecie  Pakiet00Login przesyłana jest nazwa, kolor, aktualna wartość
pieniędzy i informacja o tym czy zakończył zakłady aktualnie połączony gracz. Dla każdego
połączonego gracza wysyłany jest osobny pakiet.
Typ pakietu Dane pakietu Koniec pakietu
00 Nazwa gracza  K
Kolor nazwy gracza
Hasło dostępu do serwera prywatnego
Wartość pieniędzy gracza
Informacja o tym, czy gracz zakończył zakłady
Tabela 13. Budowa pakietu  Pakiet00Login
28
Praca inżynierska Projekt aplikacji
2. Pakiet01Disconnect
Pakiet  Pakiet01Disconnect oznacza, że jeden z klientów rozłączył się z serwerem.
Po zamknięciu klienta gry przez gracza, pakiet  Pakiet01Disconnect zostanie wysłany do
serwera. Po odebraniu pakietu serwer usuwa gracza z listy połączonych klientów oraz
przekazuje otrzymany pakiet pozostałym graczom uczestniczącym w rozgrywce. Pakiet
zawiera nazwę gracza, który opuścił rozgrywkę. W oknie czatu zostanie wyświetlony
komunikat informujÄ…cy o opuszczeniu rozgrywki przez gracza.
Typ pakietu Dane pakietu Koniec pakietu
01 Nazwa gracza  K
Tabela 14. Budowa pakietu  Pakiet01Disconnect
3. Pakiet02Newplayer
Pakiet  Pakiet02Newplayer oznacza, że do serwera dołączył nowy klient. Serwer za
pomocą tego pakietu informuje już połączonych klientów o dołączeniu do rozgrywki nowego
gracza. Pakiet zostanie wysłany przez serwer do klientów, gdy połączy się nowy klient.
W pakiecie przesłana zostanie nazwa oraz kolor nowego gracza. W oknie czatu zostanie
wyświetlony komunikat informujący o dołączeniu do rozgrywki nowego gracza.
Typ pakietu Dane pakietu Koniec pakietu
02 Nazwa gracza  K
Kolor gracza
Tabela 15. Budowa pakietu  Pakiet02Newplayer
4. Pakiet03Message
Pakiet  Pakiet03Message odpowiada za przesłanie wiadomości czatowej przez
jednego z graczy. Po wprowadzeniu przez gracza treści wiadomości w odpowiednie pole
tekstowe i zatwierdzeniu klawiszem  ENTER , przesłany zostanie pakiet  Pakiet03Message .
Pakiet zawiera treść wiadomości oraz nazwą gracza, który jest autorem wiadomości. Po
29
Praca inżynierska Projekt aplikacji
otrzymaniu pakietu  Pakiet03Message serwer przekazuje go do wszystkich klientów gry.
Otrzymana treść wiadomości i autor zostaną wyświetlone w oknie czatu.
Typ pakietu Dane pakietu Koniec pakietu
03 Nazwa gracza  K
Treść wiadomości
Tabela 16. Budowa pakietu  Pakiet03Message
5. Pakiet04Configuration
Pakiet  Pakiet04Configuration wysyłany jest przez serwer do klienta, który niedawno
się z nim połączył. W pakiecie  Pakiet04Configuration przesyłane są aktualne parametry
serwera dotyczące trwającej rozgrywki. Przesyłana jest aktualna startowa wartość pieniędzy,
pozostały czas na ruch w aktualnej rozgrywce oraz wartości i pozycje postawionych zakładów
przez uczestniczÄ…cych w rozgrywce graczy.
Typ pakietu Dane pakietu Koniec pakietu
04 Wartość pieniędzy startowych  K
Pozostały czas na ruch
Wartości i pozycje postawionych zakładów
Tabela 17. Budowa pakietu  Pakiet04Configuration
6. Pakiet05KickPlayer
Pakiet  Pakiet05KickPlayer oznacza usunięcie gracza z serwera. Można tego
dokonać za pomocą polecenia 2. Usunięcie gracza z serwera. Po wprowadzeniu
odpowiedniego polecenia serwer usuwa gracza i wysyła do pozostałych graczy pakiet
 Pakiet05KickPlayer . W pakiecie przesłana zostaje nazwa gracza usuniętego oraz powód
usunięcia. W oknie czatu zostanie wyświetlony komunikat informujący o wyrzuceniu gracza.
30
Praca inżynierska Projekt aplikacji
Typ pakietu Dane pakietu Koniec pakietu
05 Nazwa gracza  K
Powód wyrzucenia
Tabela 18. Budowa pakietu  Pakiet05KickPlayer
7. Pakiet06BanPlayer
Pakiet  Pakiet06BanPlayer oznacza zablokowanie adresu IP gracza przez serwer.
Adres IP gracza można zablokować za pomocą polecenia 3. Zablokowanie adresu IP
gracza. Po wprowadzeniu odpowiedniego polecenia serwer blokuje adres IP, usuwa gracza
i wysyła do pozostałych graczy pakiet  Pakiet06BanPlayer . W pakiecie przesłana zostaje
nazwa gracza, którego adres IP zablokowano oraz powód zablokowania. W oknie czatu
zostanie wyświetlony komunikat informujący o zablokowaniu adresu IP.
Typ pakietu Dane pakietu Koniec pakietu
06 Nazwa gracza  K
Powód zablokowania
Tabela 19. Budowa pakietu  Pakiet06BanPlayer
8. Pakiet07LoginDenied
Pakiet  Pakiet07LoginDenied oznacza, że próba dołączenia do rozgrywki przez
gracza została odrzucona. Gracz może dołączyć do rozgrywki, jeśli jego adres IP nie znajduje
się na liście adresów zbanowanych, nazwa gracza przez niego podana nie jest już zajęta przez
innego gracza, hasło dostępu do serwera prywatnego podane przez gracza jest prawidłowe
oraz serwer gry nie jest już pełny pod względem liczby klientów. Jeśli któryś z wyżej
wymienionych warunków nie został spełniony, do gracza zostaje wysłany pakiet
 Pakiet07LoginDenied zawierający powód odrzucenia próby dołączenia do rozgrywki.
Typ pakietu Dane pakietu Koniec pakietu
07 Powód odrzucenia próby dołączenia do rozgrywki  K
Tabela 20. Budowa pakietu  Pakiet07LoginDenied
31
Praca inżynierska Projekt aplikacji
9. Pakiet08Restart
Pakiet  Pakiet08Restart oznacza zresetowanie serwera gry. Zresetować serwer gry
można za pomocą polecenia 8. Zresetowanie serwera gry. Po wprowadzeniu odpowiedniego
polecenia serwer wysyła pakiet do wszystkich graczy informujący o rozpoczęciu rozgrywki
od nowa. W pakiecie przesłana zostaje wartość startowa pieniędzy oraz czas na postawienie
zakładów. Serwer gry zostanie zresetowany po trzech sekundach od wprowadzenia polecenia.
Typ pakietu Dane pakietu Koniec pakietu
08 Wartość pieniędzy startowych  K
Czas na ruch
Tabela 21. Budowa pakietu  Pakiet08Restart
10. Pakiet09NewBet
Pakiet  Pakiet09NewBet oznacza postawienie nowego zakładu przez gracza. Po
złożeniu nowego zakładu przez gracza, pakiet  Pakiet09NewBet zostaje wysłany do serwera
gry. Serwer gry przesyła pakiet do wszystkich graczy. W pakiecie przesłana zostaje nazwa
gracza, który postawił zakład, nazwa pola, na które został postawiony zakład oraz wartość
zakładu.
Typ pakietu Dane pakietu Koniec pakietu
09 Nazwa gracza  K
Nazwa pola
Wartość zakładu
Tabela 22. Budowa pakietu  Pakiet09NewBet
11.Pakiet10ResetBets
Pakiet  Pakiet10ResetBets oznacza usunięcie wszystkich postawionych zakładów
przez gracza. Pakiet  Pakiet10ResetBets zostaje wysłany do serwera po kliknięciu przez
gracza na przycisk z napisem  RESET . Serwer gry przesyła do wszystkich graczy pakiet
zawierający nazwę gracza, który usunął wszystkie postawione zakłady.
32
Praca inżynierska Projekt aplikacji
Typ pakietu Dane pakietu Koniec pakietu
10 Nazwa gracza  K
Tabela 23. Budowa pakietu  Pakiet10ResetBets
12. Pakiet11FinishedBets
Pakiet  Pakiet11FinishedBets oznacza zakończenie stawiania zakładów przez gracza.
Pakiet  Pakiet11FinishedBets zostaje wysłany do serwera po kliknięciu przez gracza na
przycisk z napisem  SPIN . W pakiecie przesłana zostaje nazwa gracza, który zakończył
stawianie zakładów.
Typ pakietu Dane pakietu Koniec pakietu
11 Nazwa gracza  K
Tabela 24. Budowa pakietu  Pakiet11FinishedBets
13. Pakiet12Results
Pakiet  Pakiet12Results oznacza zakończenie rundy rozgrywki po wylosowaniu
numeru przez koło ruletki. Pakiet  Pakiet12Results zostaje wysłany przez serwer do
klientów po wylosowaniu numeru. W pakiecie przesłany zostaje wylosowany numer oraz
wartości wygranych kwot przez poszczególnych graczy.
Typ pakietu Dane pakietu Koniec pakietu
12 Wylosowany numer  K
Wartości wylosowanych kwot poszczególnych graczy
Tabela 25. Budowa pakietu  Pakiet12Results
14. Pakiet13Time
Pakiet  Pakiet13Time jest automatycznie wysyłany, co sekundę, przez serwer do
klientów. W pakiecie przesłany zostaje pozostały czas na ruch w sekundach.
33
Praca inżynierska Projekt aplikacji
Typ pakietu Dane pakietu Koniec pakietu
13 Pozostały czas na ruch (sekundy)  K
Tabela 26. Budowa pakietu  Pakiet13Time
15. Pakiet14NewGame
Pakiet  Pakiet14NewGame oznacza rozpoczęcie gry przez gracza od nowa, tzn.
z wartością startową pieniędzy. Pakiet  Pakiet14NewGame przesyłany jest do serwera, gdy
gracz straci wszystkie pieniądze i wyrazi chęć rozpoczęcia gry na nowo. W pakiecie przesłana
zostaje nazwa gracza, który rozpocznie grę na nowo.
Typ pakietu Dane pakietu Koniec pakietu
14 Nazwa gracza  K
Tabela 27. Budowa pakietu  Pakiet14NewGame
4.7. Opis działania aplikacji
1. Uruchomienie aplikacji
Po uruchomieniu aplikacji zostanie wyświetlone okno dialogowe z zapytaniem czy ma
zostać uruchomiony serwer gry. Jeśli użytkownik nie zdecyduje się na uruchomienie serwer
gry, to zostanie wyświetlone okno dialogowe z prośbą o podanie adresu IP serwera gry,
z którym chcemy się połączyć. Jeśli nie uda się połączyć z serwerem gry, to zostanie
wyświetlony odpowiedni komunikat o błędzie. Po stworzeniu serwera gry lub połączeniu
z serwerem zostanie wyświetlone kolejne okno dialogowe z prośbą o podanie nazwy gracza.
Nazwa gracza musi składać się z maksymalnie piętnastu znaków. Podana nazwa gracza
zostanie przesłana do serwera gry. Po otrzymaniu nazwy gracza serwer sprawdza czy nazwa
nie jest już zajęta przez innego gracza. W przypadku gdy nazwa gracza będzie już zajęta,
zostanie ponownie wyświetlone okno dialogowe z prośbą o podanie nazwy gracza. Jeśli
serwer gry, z którym chce się połączyć, działa w trybie prywatnym, to wyświetlone zostanie
jeszcze jedno okno dialogowe z prośbą o podanie hasła dostępu.
34
Praca inżynierska Projekt aplikacji
2. Złożenie zakładu
W celu złożenia zakładu należy najpierw wybrać żeton. Lista dostępnych żetonów, za
pomocą których gracz składa zakład, znajduje się w górnej części interfejsu graficznego pod
liczbą pieniędzy gracza. W grze do wyboru są żetony o następujących wartościach: 1, 5, 10,
25, 50 i 100. Wyboru żetonu dokonuje się klikając lewym przyciskiem myszy na interesujący
gracza żeton. Aktualnie wybrany żeton ma większy rozmiar od pozostałych.
Po wybraniu żetonu możliwe jest złożenie zakładu. W tym celu należy najechać
kursorem myszki nad pole, na które gracz chce złożyć zakład i kliknąć lewym klawiszem
myszki. Potwierdzeniem złożenia zakładu jest pojawienie się żetonu na danym polu. Liczba
znajdująca się na każdym żetonie na planszy z polami oznacza liczbę żetonów złożonych na
tym polu przez gracza.
3. Usunięcie wszystkich postawionych zakładów przez gracza
W celu usunięcie wszystkich postawionych zakładów przez gracza należy kliknąć
lewym przyciskiem myszy na przycisk z napisem  RESET . Przycisk znajduje siÄ™ w dolnej
części interfejsu graficznego. Przyciśniecie tego przycisku spowoduje zniknięcie żetonów
postawionych przez gracza oraz zwrócenie pieniędzy.
4. Zakończenie składania zakładów przez gracza
W celu zakończenia składania zakładów gracz powinien kliknąć lewym przyciskiem
myszy na przycisk z napisem  SPIN . Przycisk znajduje się w dolnej części interfejsu
graficznego. Przyciśnięcie tego przycisku spowoduje przekazanie informacji do serwera gry
o zakończeniu składania zakładów przez gracza. Przy każdym graczu, który przyciśnie
przycisk z napisem  SPIN , zostanie wyświetlona grafika informująca o tym fakcie.
Kliknięcie przycisku  SPIN nie powoduje zablokowania możliwości składania kolejnych
zakładów lub usunięcia wszystkich złożonych zakładów. Jest to jedynie informacja dla
serwera gry o gotowości gracza na losowanie wartości.
5. Przesłanie wiadomości czatowej
W celu przesłania wiadomości czatowej należy kliknąć lewym przyciskiem myszy na
pole tekstowe czatu znajdujące się w dolnej części interfejsu graficznego. Kolejnym krokiem
35
Praca inżynierska Projekt aplikacji
jest wprowadzenie wiadomości, którą gracz chce przesłać wszystkim graczom
uczestniczącym w rozgrywce. Po wprowadzeniu wiadomości należy wcisnąć klawisz
 ENTER w celu przesłania wiadomości. Każda wiadomość czatowa zostanie wyświetlona
w polu głównym czatu.
6. Losowanie liczby i koloru przez koło ruletki
Losowanie liczby i koloru przez koło ruletki odbywa się automatycznie po
wystąpieniu co najmniej jednego z następujących zdarzeń:
" zakończył się czas przeznaczony na stawianie zakładów,
" wszyscy gracze zakończyli stawianie zakładów poprzez kliknięcie w przycisk
z napisem  SPIN .
Po losowaniu wyświetli się okno podsumowujące z wylosowaną liczbą i wartością
wygranej gracza. Wygrane wartości zostaną przydzielone graczom, plansza z polami 
wyczyszczona z żetonów, a wylosowana liczba  dodana do historii losowań.
4.8. Pierwotna wersja gry
Przed powstaniem finalnej wersji gry stworzona została okrojona wersja aplikacji.
Pierwotna wersja gry nie posiadała zaimplementowanej funkcjonalności sieciowej, więc
możliwa była jedynie rozgrywka jednoosobowa. Niedozwolone było stawianie zakładów na
wartości graniczne numerów. Rożnica występowała również w wyglądzie interfejsu
graficznego.
36
Praca inżynierska Projekt aplikacji
Ilustracja 8. WyglÄ…d pierwotnej wersji gry
4.9. Interfejs graficzny
Interfejs graficzny został stworzony przy użyciu standardowych bibliotek graficznych
AWT i Swing. Projekt graficzny został przygotowany w programie graficznym Adobe
Illustrator. Okno główne aplikacji można podzielić na trzy części: cześć górną, środkową
i dolnÄ….
Po lewej stronie części górnej umieszczona została aktualna wartość pieniędzy gracza.
Poniżej znajdują się żetony, za pomocą których obstawiane są zakłady. Po prawej stronie
części górnej interfejsu graficznego znajduje się grafika koła ruletki oraz czas pozostały do
złożenia zakładów. Po wylosowaniu wartości, grafika koła ruletki wprowadzana jest w ruch
obrotowy zgodny z ruchem wskazówek zegara, symulując obrót prawdziwego koła ruletki.
37
Praca inżynierska Projekt aplikacji
W części środkowej okna głównego aplikacji znajduje się plansza z polami do
obstawiania oraz historia ostatnich sześciu losowań. Każdy postawiony zakład w rozgrywce
przedstawiony jest za pomocą żetonu o kolorze gracza umieszczonego na polu, na którym
postawiono zakład. Po najechaniu kursorem na pole planszy ze złożonym przez gracza co
najmniej jednym zakładem, wyświetlona zostanie suma wartości wszystkich zakładów
postawionych na to pole.
W części dolnej okna głównego aplikacji znajduje się czat oraz panel z dwoma
przyciskami. Czat składa się z pola tekstowego, do którego wprowadzana jest wiadomość
przesyłana do graczy lub polecenie konfigurujące serwer. Powyżej pola tekstowego czatu
znajduje się pole główne czatu, w którym wyświetlane są wszystkie komunikaty dotyczące
rozgrywki oraz wiadomości czatowe. Obok pola głównego czatu umieszczona jest lista
graczy wraz z ich wartościami pieniężnymi. Kolor tekstu w wierszu listy graczy jest zgodny
z kolorem danego gracza. W przypadku zakończenia składania zakładów przez gracza obok
jego kwoty pieniędzy pojawi się ikona informująca o tym fakcie pozostałych graczy. Po
prawej stronie od czatu znajdujÄ… siÄ™ dwa przyciski. Pierwszy przycisk posiada napis  SPIN
i służy do zakończenia składania zakładów przez gracza, natomiast drugi przycisk posiada
napis  RESET i pozwala na usunięcie wszystkich postawionych zakładów przez gracza.
38
Praca inżynierska Projekt aplikacji
Ilustracja 9. Wygląd aplikacji: główne okno aplikacji
Po wylosowaniu liczby zostanie wyświetlone okno podsumowujące losowanie
zawierające wartość liczby wylosowanej oraz wartość wygranej gracza.
39
Praca inżynierska Projekt aplikacji
Ilustracja 10. WyglÄ…d aplikacji: okno podsumowujÄ…ce losowanie
40
Praca inżynierska Podsumowanie
5. Podsumowanie
Celem niniejszej pracy dyplomowej było zaprojektowanie i zaimplementowanie
w języku Java aplikacji umożliwiającej wieloosobową rozgrywkę w ruletkę. Aplikacja miała
bazować na architekturze klient - serwer. Cel pracy został osiągnięty. Projekt został stworzony
zgodnie z założonymi wymaganiami. Wykorzystując podstawowe biblioteki graficzne
i wejścia/wyjścia języka Java, udało się stworzyć wydajną i intuicyjną aplikację sieciową.
Stworzona aplikacja może być podstawą do utworzenia wirtualnego kasyna
zawierającego wiele gier hazardowych. Aplikacja została stworzona w taki sposób, że
możliwe jest dodanie większej liczby poleceń konfigurujących serwer lub dodatkowych
pakietów protokół komunikacyjnych.
41
Praca inżynierska Indeks ilustracji
Indeks ilustracji
Ilustracja 1. Wygrawerowana francuska ruletka z 1800 roku [14].............................................6
Ilustracja 2. Zasada działania architektury oprogramowania klient - serwer [7]......................12
Ilustracja 3. Schemat sieci P2P [10]..........................................................................................14
Ilustracja 4. Aplikacja kalkulatora jako przykładu aplikacji okienkowej.................................18
Ilustracja 5. Nawiązywanie połączenia w protokole TCP (three-way handshake) [16]...........19
Ilustracja 6. Diagram komponentów aplikacji..........................................................................22
Ilustracja 7. Ogólna budowa pakietów protokołu komunikacyjnego........................................28
Ilustracja 8. WyglÄ…d pierwotnej wersji gry...............................................................................37
Ilustracja 9. Wygląd aplikacji: główne okno aplikacji..............................................................39
Ilustracja 10. WyglÄ…d aplikacji: okno podsumowujÄ…ce losowanie...........................................40
42
Praca inżynierska Indeks tabel
Indeks tabel
Tabela 1. Sekwencja numerów na kole ruletki [14]....................................................................8
Tabela 2. Zestawienie rodzajów i typów zakładów [5, ss. 15 17]............................................11
Tabela 3. Budowa polecenia służącego do wyświetlenia wszystkich dostępnych poleceń......23
Tabela 4. Budowa polecenia służącego do wyrzucenia gracza z serwera.................................23
Tabela 5. Budowa polecenia służącego do zablokowania adresu IP........................................24
Tabela 6. Budowa polecenia służącego do wyświetlenia listy zablokowanych adresów IP.....24
Tabela 7. Budowa polecenia służącego do usunięcia adresu IP z listy zablokowanych adresów
...................................................................................................................................................24
Tabela 8. Budowa polecenia służącego do wyświetlenia aktualnej lub zmiany na nową
wartość startowej liczby pieniędzy...........................................................................................25
Tabela 9. Budowa polecenia służącego do wyświetlenia aktualnego lub zmiany trybu
rozgrywki..................................................................................................................................25
Tabela 10. Budowa polecenia służącego do zrestartowania serwera gry..................................26
Tabela 11. Budowa polecenia służącego do wyświetlenia aktualnej lub zmiany na nową
maksymalnej liczby klientów....................................................................................................26
Tabela 12. Budowa polecenia służącego do wyświetlenie lub zmiany no nową wartość czasu
przeznaczonego na ruch............................................................................................................27
Tabela 13. Budowa pakietu  Pakiet00Login ...........................................................................28
Tabela 14. Budowa pakietu  Pakiet01Disconnect ..................................................................29
Tabela 15. Budowa pakietu  Pakiet02Newplayer ...................................................................29
Tabela 16. Budowa pakietu  Pakiet03Message ......................................................................30
Tabela 17. Budowa pakietu  Pakiet04Configuration ..............................................................30
Tabela 18. Budowa pakietu  Pakiet05KickPlayer ..................................................................31
Tabela 19. Budowa pakietu  Pakiet06BanPlayer ....................................................................31
Tabela 20. Budowa pakietu  Pakiet07LoginDenied ...............................................................31
Tabela 21. Budowa pakietu  Pakiet08Restart .........................................................................32
Tabela 22. Budowa pakietu  Pakiet09NewBet .......................................................................32
Tabela 23. Budowa pakietu  Pakiet10ResetBets ....................................................................33
Tabela 24. Budowa pakietu  Pakiet11FinishedBets ................................................................33
43
Praca inżynierska Indeks tabel
Tabela 25. Budowa pakietu  Pakiet12Results .........................................................................33
Tabela 26. Budowa pakietu  Pakiet13Time ............................................................................34
Tabela 27. Budowa pakietu  Pakiet14NewGame ...................................................................34
44
Praca inżynierska Bibliografia
Bibliografia
[1] Eckel B., Thinking in Java. Edycja polska. Wydanie IV, wyd. Helion, Gliwice 2006
[2] Gajda W., Git. Rozproszony system kontroli wersji, wyd. Helion, Gliwice 2013
[3] Hitchens R., Java NIO, wyd. O Reilly Media, Sebastopol 2002
[4] Kruchten P., Architectural Blueprints - The  4+1 ViewModel of Software Architecture,
IEEE Software, nr 12, ss. 42 50, 1995
[5] Pawłowicz K., Kasyna zawsze wygrywają? Spowiedz krupiera... czyli jak ograć kasyno!,
wyd. Złote Myśli, Gliwice 2006
[6] (3.1) Aplikacje okienkowe - Xion.org.pl, http://xion.org.pl/files/texts/mgt/html/3_1.html
(dostęp 01-03-2014)
[7] Architektura klient - serwer, http://www.inteca.pl/pl/blog/item/205-architektura-klient-
serwer (dostęp 30-12-2013)
[8] Historia Ruletki - Jak przez Wieki Zmieniała się Ruletka?, http://www.ruletka.pl/historia-
ruletki/ (dostęp 29-12-2013)
[9] Model klient  serwer, http://www.postter.pl/wszystko/publicystyka/teoria/model-klient-
serwer/ (dostęp 30-12-2013)
[10] Peer-to-peer, http://pl.wikipedia.org/wiki/Peer-to-peer (dostęp 30-12-2013)
[11] PWN Encyklopedia - protokół komunikacyjny, http://encyklopedia.pwn.pl/index.php?
module=haslo&id=3962902 (dostęp 30-12-2013)
[12] RFC791 Internet Protocol, http://tools.ietf.org/html/rfc791 (dostęp 01-04-2014)
[13] RFC793 Transmission Control Protocol, http://tools.ietf.org/search/rfc793 (dostęp 01-
04-2014)
[14] Roulette, http://en.wikipedia.org/wiki/Roulette (dostęp 29-12-2013)
[15] Rozrywka, http://pl.wikipedia.org/wiki/Rozrywka (dostęp 29-12-2013)
[16] Transmission Control Protocol,
http://pl.wikipedia.org/wiki/Transmission_Control_Protocol (dostęp 01-04-2014)
[17] Typy ruletki, http://www.ruletka.pl/typy-ruletki/ (dostęp 29-12-2013)
45


Wyszukiwarka

Podobne podstrony:
Sieci klient serwer
Delphi Bazy Danych W Architekturze Klient Server
19 Sieci równorzędne oraz klient – serwerid361
58$3302 opiekun klienta
Budowanie wizerunku firmy poprzez architekturÄ™
Sprawozdanie nr 3 inz
kn gik inz st 5 3
Przydatne wpisy do rejestru na komputerach klienta uzupełnie
Praca mag Interaktywny system regułowej analizy danych marketingowych dotyczących satysfakcji klie
Biblioteka PHP Wysyłanie pliku na serwer
dyd inz n01
architekt arki
technik architektury krajobrazu21[07] z2 01 u

więcej podobnych podstron