Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Problema com TClientSocket e Timer

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Duvida Problema com TClientSocket e Timer

    Olá Atualmente estou desenvolvendo um PONG em Delphi com Multiplayer (Usando TClientSocket e TServerSocket(Não sei se isso é possível ...))

    A Versão Single Player funcionou Porem quando tentei criar a Versão Multiplayer eu usei os Sockets e um timer para mandar do server para o client a atual posição da bolinha e Usei o codigo:

    procedure TForm3.Timer5Timer(Sender: TObject);
    begin
    b:=Ball.Top;
    end;
    procedure TForm3.Timer4Timer(Sender: TObject);
    var
    i:integer;
    begin

    if not(PosX=b) then
    for i:=0 to form2.t.Socket.ActiveConnections-1 do
    form2.t.Socket.Connections[i].SendText(IntToStr(Ball.Top));
    end;
    procedure TForm5.lRead(Sender: TObject; Socket: TCustomWinSocket);
    begin
    form6.Ball.Left:=(StrToInt(Socket.ReceiveText));
    end;
    OBS: este é o código usado apenas para a posição Left da bolinha também usei um para o TOP

    Mas quando testo o programa ele da o seguinte erro:


    Desculpa sou Novo no fórum e é a primeira vez que tento um jogo assim caso alguém saiba como posso fazer com que a bolinha que está se movimentando no server se movimente nos mesmas posições no client ou de uma outra forma que também funcione
    "The Quieter You Become The More You Are Able to Hear."
    sigpic

  • Font Size
    #2
    Pra dar uma explicação mais precisa, eu iria necessitar ver o código todo, porém vou tentar ver se entendi corretamente.

    if not(PosX=b) then
    for i:=0 to form2.t.Socket.ActiveConnections-1
    O que é esse trecho no código? O que ele está perguntando?
    O que é PosX e b ?

    Sabemos que a bola está SEMPRE em constante movimento, e o que interfere o movimento dela é a barra do jogador. Logo a troca de informações tem que ser ATÉ O FIM DO JOGO. Enviando a posição da barra e a posição da bola, sempre.

    A foto está muito pequena, não pude ver qual o erro, sabe me dizer qual a mensagem que aparece? Gostaria de saber também sobre o intervalo do timer.
    sigpic

    Decidi deixar de ser usuário e virar desenvolvedor

    Comment


    • Font Size
      #3
      no Trecho
      if not(PosX=b) then
      for i:=0 to form2.t.Socket.ActiveConnections-1 do
      form2.t.Socket.Connections[i].SendText(IntToStr(Ball.Top));
      end;
      esse é um código que conecta com o servidor para começar uma partida multiplayer(ele manda a posição X da bolinha X=bolinha.left)

      PosX é posição x da bolinha

      b é uma variável q usei q representa o PosX porem declarado no timer
      Pois como a bolinha fica parada no começo do jogo eu estava tendo problemas com o servidor que estava recebendo a posição da bolinha mesmo ela estando parada e como o intervalo n é mto grande a variável estava estourando assim q o programa iniciava então declarei o b e usei esse codigo para que seja mandada a posição ao servidor apenas quando o B for diferente de PosX que é declarado como a posição inicial ja B utiliza um timer que mesmo tendo declarada a posição inicial = a do posX graças ao timer ela está atualizando constantemente

      OBSn sei se essa parte do código é realmente necessária mas foi uma forma que encontrei de n ficar mandando a posição quando a bolinha estiver parada)

      e nos erros aparecem diversos números que são as cordeadas da bolinha ea mensagem "is not a valid integer value"
      "The Quieter You Become The More You Are Able to Hear."
      sigpic

      Comment

      X
      Working...
      X