Delphi 7 крестики-нолики

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by logger, 11 Sep 2011.

  1. logger

    logger New Member

    Joined:
    15 Jan 2010
    Messages:
    32
    Likes Received:
    3
    Reputations:
    0
    Всем привет. Пишу игру крестики-нолики онлан. Есть сервер и клиент, но работать игра не хочет.
    Игрок 1 сервер, игрок 2 клиент. Делаю так когда игрок 2 нажимает button1:
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Button1.Caption := '0';
    Button1.Enabled := false;
    ClientSocket1.Socket.SendText('a');
    end;
    На сервере делаю так:
    Code:
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
    Memo1.Lines.Add(Socket.ReceiveText());
    if Socket.ReceiveText() = 'a' then
    begin
    Button1.Caption := '0';
    Button1.Enabled := false;
    end
    else
    if Socket.ReceiveText() = 'b' then
    begin
    Button2.Caption := '0';
    Button2.Enabled := false;
    end
    else
    if Socket.ReceiveText() = 'c' then
    begin
    Button3.Caption := '0';
    Button3.Enabled := false;
    end
    else
    if Socket.ReceiveText() = 'd' then
    begin
    Button4.Caption := '0';
    Button4.Enabled := false;
    end
    else
    if Socket.ReceiveText() = 'e' then
    begin
    Button5.Caption := '0';
    Button5.Enabled := false;
    end
    else
    if Socket.ReceiveText() = 'f' then
    begin
    Button6.Caption := '0';
    Button6.Enabled := false;
    end
    else
    if Socket.ReceiveText() = 'g' then
    begin
    Button7.Caption := '0';
    Button7.Enabled := false;
    end
    else
    if Socket.ReceiveText() = 'h' then
    begin
    Button8.Caption := '0';
    Button8.Enabled := false;
    end
    else
    if Socket.ReceiveText() = 'j' then
    begin
    Button9.Caption := '0';
    Button9.Enabled := false;
    end
    end;
    Но кнопка 1 на сервере не блокируется и название на 0 не меняется. Так со всеми кнопками. В чем ошибка?
     
  2. ride

    ride New Member

    Joined:
    18 Apr 2010
    Messages:
    26
    Likes Received:
    4
    Reputations:
    0
    не пробовали в procedure TForm1.ServerSocket1ClientRead
    обозначить строковую переменную, записать в нее значение Socket.ReceiveText() и потом уже с ней оперировать?
     
  3. logger

    logger New Member

    Joined:
    15 Jan 2010
    Messages:
    32
    Likes Received:
    3
    Reputations:
    0
    да. делал так:
    Code:
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var
    bukva: string;
    begin
    bukva := Socket.ReceiveText(); 
    ......
    
    
    У меня анализ не правильный какой-то. Как по-другому не придумал.
     
  4. logger

    logger New Member

    Joined:
    15 Jan 2010
    Messages:
    32
    Likes Received:
    3
    Reputations:
    0
    Справился

    Code:
    var
    param: string;
    begin
    param := Socket.ReceiveText();
     case ANSIIndexText( param , ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j']) of
     0:
     begin
     Button1.Caption := '0';
     Button1.Enabled := false;
     end;
    ..........