2013-08-19 2 views
0

В настоящее время я пытаюсь создать игру линкора в java. Два игрока подключаются к серверу, отправляют туда и запускают игру. Я создал сервер и клиент. Я не знаю, как перенести координаты одного игрока с одного игрока на другой. Координаты судна хранятся в списке на стороне клиента. Какое лучшее решение для общения с игроком? Может быть, координаты корабля игрока должны быть отправлены на сервер, а второй игрок проверяет их на сервере? Или я должен остаться с идеей, что игрок посылает другому игроку координаты и получает результат? Может быть, у кого-то будет лучшая идея.Совет по игре с линкором в java

+0

Я бы подумал отправить все позиции на сервер и получить его для отправки «ударов» и «пропустить» отчеты обеим сторонам в ответ на каждое «увольнение». Вы можете использовать спокойную веб-службу и отправлять данные с помощью чего-то вроде jaxb –

ответ

1

Что вы используете для связи прямо сейчас? Поскольку вы задали свой вопрос с помощью сокета, я думаю, вы используете простые ip-сокеты. Возможно, у вас есть вид RMI. Его легко настроить, и вы можете использовать его почти как обычный Java-вызов.

Этот способ обновления выстрела игрока - это всего лишь вопрос вызова метода.

2

Если вы не хотите, чтобы люди обманывали, вы сохраняете все данные координат на сервере. Клиенты запрашивают координаты данных с сервера.

Ваши клиенты отправляют сообщения на сервер, и сервер предоставляет ответ. Это единственный способ, которым вы, как игрок, знаете, что сервер все еще подключен.

Содержание сообщений и содержание ответа зависит только от вас.

2

При запуске отправьте корабельные координаты на сервер. (Не храните их на клиенте. Игра с линкором не требует сверхбыстрой скорости, поэтому лучше, если она на сервере.) Затем дайте серверу отправить «ваш поворот» -пакет клиенту, который должен начать , Клиент выбирает место съемки, которое переносится на сервер. Сервер проверяет судно или воду и отправляет эти данные обоим клиентам. Следующий поворот-пакет, и так далее ...

Надеется, что это помогает :)

PS: Я хотел бы использовать библиотеку KryoNet! https://code.google.com/p/kryonet/