2011-08-31 70 views
0

我正在做一個客戶端,並與Windows服務器,C++發送控制信號?

設計是我決定的工作是

服務器只是發送什麼客戶都呈現取決於客戶發送消息。

排序瓷磚和對象,圖片,線條,矩形,圓形...的可以在客戶端繪製

和客戶端只是接收來自服務器的命令和渲染的東西

如果服務器發送一個消息如「draw picture.png srcX srcY width height destX destY」。 (picture.png在客戶端) 然後客戶端只是解析字符串,並做我想做的。

但是。 我想像發送控制信號以及

下面 「爲(Y = 0; Y < 30; Y ++){對於(X = 0; X < 30; X ++){得出tile.png 0 0 16 16×16 * Y * 16}」

我意識到sending a function is not a good idea (對所有答覆表示感謝。)

是有解決這個問題的任何好主意嗎?

發送

「繪製tile.png 0 0 16 16 0 0」

「繪製tile.png 0 0 16 16 0 16」

「繪製tile.png 0 0 16 16 0 32"

「繪製tile.png 0 0 16 16 0 48」

「繪製tile.png 0 0 16 16 0 64」

「繪製tile.png 0 0 16 16 0 96」

「繪製tile.png 0 0 16 16 0 112」

「繪製tile.png 0 0 16 16 0 128」

「畫tile.png 0 0 16 16 0 132"

... 30 * 30的時間將是矯枉過正

我在尋找有效的方式發送消息‘有什麼客戶端繪製’ 圖是不僅限於平鋪和對象,還可以包含繪製效果圖片命令在任何座標上。

感謝您的閱讀。

回答

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.

我知道這是相當原始的,但實施起來很簡單。

0

定義一種語言,在客戶端上實現解析器,並將這些命令作爲純文本發送。 您必須在服務器中實現反向解析器才能發送優化消息。