Połączenie sieciowe

0

Cześć, mam sobie grę w javie napisaną. Gra w karty. Jak do singla dorobić sieć lan na takiej zasadzie, że:

1 host odpala grę i wciska button host- gra się ładuje.
2 client odpala grę i klika button Client i łączy go z hostem->dane typu port/ip były by wpisywane albo zapisane już w kodzie.

0

No dobra, ale jak to mam z logicznego puntu ułożyć? kiedy mam odpalać metodę rysującą okno dla klienta? co mam przesłać przez sieć?

0
Pabloss napisał(a):

No dobra, ale jak to mam z logicznego puntu ułożyć? kiedy mam odpalać metodę rysującą okno dla klienta? co mam przesłać przez sieć?

Odpowiedzi: kiedy chcesz, co chcesz.

Generalnie swoją wizję opisać musisz sam bo Ty ją znasz lepiej niż ja :)

Zakładam układ klient-host (tak jak są np. dawne gry po LAN zorganizowane - nie ma oddzielnego serwera, tylko dwóch graczy łączy się z sobą bezpośrednio). Obaj powinni mieć opcje "hostuj" i "połącz się", po wybraniu "połącz się" powinno zostać nawiązane połączenie z wklepanym adresem IP.
Protokół musisz napisać sam, najłatwiej będzie stworzyć jakieś serializowalne obiekty typu GameCommand (przesyłanie informacji o akcjach graczy) i GameStatus (przesyłanie informacji o stanie gry - czy ktoś wygrał, czy nie, czyja kolej itp.). Potem je serializujesz do String, String do ByteArray i przesyłasz przez socket do drugiego klienta.

Np.
0. Gracz 1 i Gracz 2 odpalają aplikację.

  1. Gracz 1 [Maszyna 1] - klika hostuj
  2. Gracz 2 [Maszyna 2] - klika "dołącz", wklepuje adres maszyny #1
  3. [Maszyna 1] - tworzy handler do połączenia z maszyną #2.
  4. [Maszyna 1] - rozsyła informacje o grze do gracza 1 i - przez socket - do maszyny 2 (i gracza 2)
  5. Gracz 1 wykonuje ruch, Maszyna 1 wysyła informację do gracza 2
  6. Gracz 1 czeka na ruch Gracza 2
  7. Gracz 2 wykonuje ruch itp.

Pętla rysująca nie powinna być zależna od wątków obsługujących ruch sieciowy.

0

No tak, dokłądnie tak to ma wg mnie również działać. Tylko nie bardzo mam pomysł jak to zaimplementować. Mógłbyś podać jakiś pseudo kod?

1 użytkowników online, w tym zalogowanych: 0, gości: 1