Отправка контрольного сигнала? - PullRequest
0 голосов
/ 31 августа 2011

Я работаю над созданием клиента и сервера с windows, c ++

дизайн, который я решил

сервер просто отправляет то, что должен сделать клиент, зависит от отправляющего сообщения клиента.

сортировка плиток и объектов, рисунка, линии, прямоугольника, круга ... можно нарисовать на стороне клиента

а клиент просто получает команду от сервера и что-то отрисовывает

если сервер отправляет сообщение типа "draw picture.png srcX srcY width height destX destY". (picture.png находится на стороне клиента) тогда клиент просто разбирает строку и делает то, что я хочу.

но. Я тоже хочу отправить контрольный сигнал

как показано ниже "for (y = 0; y <30; y ++) {for (x = 0; x <30; x ++) {draw tile.png 0 0 16 16 x * 16 y * 16}}" </p>

Я понимаю, что отправка функции не очень хорошая идея (спасибо за все ответы.)

Есть ли хорошая идея, чтобы решить эту проблему?

отправка

"draw tile.png 0 0 16 16 0 0"

"draw tile.png 0 0 16 16 0 16"

"draw tile.png 0 0 16 16 0 32"

"draw tile.png 0 0 16 16 0 48"

"draw tile.png 0 0 16 16 0 64"

"draw tile.png 0 0 16 16 0 96"

"draw tile.png 0 0 16 16 0 112"

"draw tile.png 0 0 16 16 0 128"

"draw tile.png 0 0 16 16 0 132"

... в течение 30 * 30 раз было бы излишним

Я ищу эффективный способ отправки сообщения "что клиент должен нарисовать" рисование не ограничивается только плиткой и объектом, но может содержать команду рисования с эффектом рисунка для любых координат.

спасибо за чтение.

Ответы [ 2 ]

0 голосов
/ 31 августа 2011

Что ж, если вы не хотите отправлять и выполнять сценарии, попробуйте найти какое-нибудь простое решение.Например, формат сообщения может быть определен как:

draw file name srcX srcY width height destX destY [srcX srcY width height destX destY ...]

Может быть применена некоторая оптимизация, например, вы можете передать только разницу между предыдущим и текущим изображением:

draw tile.png 0 0 16 16 0 0 (5 16)

Тоозначает: увеличить элемент # 5 предыдущего пакета на 16.

Я знаю, что это довольно примитивно, но просто для реализации.

0 голосов
/ 31 августа 2011

Определите язык, внедрите синтаксический анализатор на клиенте и отправьте команды в виде чистого текста. Для отправки оптимизированных сообщений вам также потребуется реализовать обратный парсер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...