Показать сообщение отдельно
  #1  
Старый 23.11.2011, 16:53
Toland Toland вне форума
Прохожий
 
Регистрация: 23.11.2011
Сообщения: 1
Репутация: 10
По умолчанию Сетевая игра

Уважаемые программисты, помогите пожалуйста разобраться с одной проблемой.
Я задумал сделать очень простую сетевую игру танчики.

В клиенте создается TImage с изображением танка
(Tank:array [1..10] of TImage; ), его номер отправляется
на сервер и рассылается всем подключенным клиентам.
И на тех клиентах создаются TImage с таким же номером.

В клиенте передвигаю TImage по форме, её кординаты
передаются на сервер и рассылаются всем подключенным клиентам.
У меня есть вот такая структура, которую я передаю через сокеты:
Код:
    
type
    PlayerPosition = packed record
      PosX:integer; //Положение по X
      PosY:integer; //Положение по Y
      id:integer;   //id танка
  end;
Сначала эта структура попадает на сервер и он рассылает её всем клиентам вот таким образом:
Код:
procedure TForm1.SendPosTank;
var 
i: integer;
Pos:PlayerPosition;
begin
  for i := 0 to ServerSocket1.Socket.ActiveThreads - 1 do
    begin
      ServerSocket1.Socket.Connections[i].SendBuf(Pos,SizeOf(Pos));
    end;
end;
Дело в том, что TServerSocket находится в режиме stThreadBlocking и такой способ является неправильным, так как каждый поток должен заниматься отправкой данных только своему клиенту.
Подскажите пожалуйста как можно реализовать данную задумку?
Заранее большое спасибо.
Ответить с цитированием