Witam
Próbuję zrobić grę sieciową coś w stylu Space Impact, z dedykowanym serwerem i dwoma klientami. Mam problem ponieważ nie umiem za bardzo zrobić, aby klienci widzieli swoje statki... Wiem jak działa zwykły czat z command lina i próbowałem to zrobić tak miej więcej na ten wzór, z wykorzystaniem ObjectOutputStream
i ObjectInputStream
. Wydaje mi się że dobrze klienci się łączą ze sobą i wysyłają informacje o obiekcie statku, robię to za pomocą: out.writeObject(ship)
i shipPrz = (ShipObject)in.readObject()
, ale kompletnie nie wiem jak je rysować... Mam nadzieje ze w miarę jasno opisałem o co mi chodzi, jeśli to będzie potrzebne to wkleję więcej kodu, będę wdzięczny za wszystkie rady i każdą pomoc ;)
0
0
- Napisz najpierw logikę samej gry, oderwaną od tego jaka będzie jej reprezentacja graficzna
- Napisz reprezentację graficzną niezależną od logiki (albo inaczej: niezależną od tego skąd pochodzą dane)
- Potem już będzie z górki.
dygresja: Piszesz to na socketach? A moze prosciej będzie ci wykorzystać RMI?
0
Właśnie zmieniłem koncepcje i będę robić na RMI ;) ale mój problem polega na tym, że nie wiem jak połączyć widok dwóch clientów w czasie rzeczywistym... Aby widzieli działanie drugiej osoby. W mojej nowej koncepcji pomyślałem, aby wszystko się działo na serwerze a clienci byli tak jakby tylko odpowiedzialni za czytanie klawiszy itp, tylko pojawia się tutaj moje pytanie, czy jest możliwość wysyłania całego np: JFrame z serwera do clienta, czy tylko jakieś dane dotyczące jego i rysowanie go już w cliencie?
1
Nie wygłupiaj się. Po co? Nie wystarczy tak:
- klient A wykonuje ruch -> lokalnie u niego się ten ruch wykonuje + wysyłana jest do serwera informacja że ruch zostal wykonany.
- serwer dostaje taką informację i przekazuje ja do klienta B
- klient B po otrzymaniu takiej informacji aktualizuje sobie pozycję klienta A
Albo inaczej:
- cała gra toczy sie na serwerze, klienci maja zarejestrowane listenery na "plansze"
- jeśli gracz A robi grę (poprzez wywołanie zdalnej metody .makeMove() czy coś) to aktumatycznie wszystkie listenery są informowane o tym ruchu
- każdy gracz który odbierze informacje z listenera aktualizuje sobie stan planszy
0
hmm dzięki za wskazówki będę kombinować i w razie czego jeszcze napisze ;)