发送控制信号?

时间:2011-08-31 13:51:30

标签: c++ controls send signals

我正在制作一个带有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}}”

我意识到sending a function is not a good idea (感谢所有回复。)

有什么好主意可以解决这个问题吗?

发送

“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 :(得分:0)

定义语言,在客户端上实现解析器并将命令作为纯文本发送。 您必须在服务器中实现反向解析器以发送优化的消息。

答案 1 :(得分:0)

好吧,如果您不想发送和执行脚本,请尝试找一些简单的解决方案。例如,消息格式可以定义为:

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个。

我知道这很原始,但实施起来很简单。