Java - kółko i krzyżyk

Java - kółko i krzyżyk
H5
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 4 lata
  • Postów:66
0

Piszę grę w kółko i krzyżyk (przy pomocy Swinga) przez sieć. Sama gra nie jest problemem, jednak pomimo przeglądania przykładowych kodów nie potrafię zrobić tego przez sieć. Chcę napisać program dla serwera i klienta, które łączyłyby się ze sobą za pomocą Socket. Nie jestem do końca pewny co powinien zawierać każdy z programów. Dla przykładu samo tworzenie okienka do gry i "obliczania" wyniku gry nie jest chyba potrzebne w obu programach? Jak zrobić w takim razie to tak, aby po połączeniu okienko, które zostanie utworzone np. według kodu klienta pojawiło się także dla serwera? I ogólnie co który program powinien robić?

Z góry dziękuję za pomoc :)

LU
  • Rejestracja:ponad 11 lat
  • Ostatnio:3 dni
  • Lokalizacja:Gdańsk
1

Serwer raczej nie powinien mieć interfejsu graficznego. Serwer powinien wystawić jakieś proste api dla klienta np.

Kopiuj
Server {

   setNick(nick)

   playerMove(x, y)

}

oraz powinien być odpowiedzialny za całą mechanikę i logikę gry.
Natomiast klient powinien aktualizować widok w zależności od tego
co się zadzieje w grze na serwerze.


szopn
  • Rejestracja:prawie 6 lat
  • Ostatnio:11 miesięcy
  • Postów:11
0

Tutaj masz coś podobnego co chcesz zrobić https://cs.lmu.edu/~ray/notes/javanetexamples/#tictactoe

H5
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 4 lata
  • Postów:66
0

A w tym programie co powinienem wpisać jako argument? Próbowałem z localhost, ale wtedy nie działa. Co wpisać, aby programy połączyły się na jednym komputerze?

K5
  • Rejestracja:około 6 lat
  • Ostatnio:około 7 godzin
  • Postów:1002
0
Kopiuj
var listener = new ServerSocket(59090)

Z dokumentacji (https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html) argument w nawiasie to port, na którym działa server.
Także poza localhostem, musisz podać konkretny port.

Nawet masz obrazek dołączony przez autora :)
title

H5
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 4 lata
  • Postów:66
0

Ale w tym przykładowym programie port już jest podany (wpisany w kodzie w odpowiedniej funkcji). Chyba że coś źle rozumiem?

K5
  • Rejestracja:około 6 lat
  • Ostatnio:około 7 godzin
  • Postów:1002
0

Ok, zacznijmy od początku.

Wierze Ci, że umiesz zrobić kółko krzyżyk konsolowo. Chcesz teraz to połączyć z serverem? Podejdź do tego inaczej - zaimplementuj najpierw łatwy program korzystający z TCP. Napisz server i clienta, który będzie się z nim komunikować, np wysyłanie prostej wiadomości przez klienta, odbieranie wiadomości na serverze i odsyłanie potwierdzenia do klienta.
Gdy ogarniesz sobie jak to działa, wtedy możesz dodać do tego implementację gry :)

Przykład TCP Servera i clienta - https://www.pegaxchange.com/2017/12/07/simple-tcp-ip-server-client-java/
Poradnik jest dobrze napisany, sam w przeszłości korzystałem z niego aby ogarnąć z czym to się je.

H5
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 4 lata
  • Postów:66
0

Dobra, poczytam o tym i odezwę się pewnie niedługo. A tak dla pewności - chodziło mi o to co podać w argumencie wywołania programu, a nie samej funkcji, bo nie wiem czy się dobrze zrozumielismy 😂

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.