Как деактивировать одного из клиентов?

    Это сервер здесь я в момент когда присваиваю имя, ещё вызываю метод 
    BlockBoard если Server.Clients.Count != 0 ну в общем если это первый 
    клиент, то пусть он будет белым

 private void HandleComand(string data)
{
    if (data.Contains("#setname"))
    {

        BlockBoard();
        _userName = data.Split('&')[1];
        UpdateChat();
        return;
    }
    if (data.Contains("#newmsg"))
    {
        string message = data.Split('&')[1];
        ChatController.AddMessage(_userName, message);
        return;
    }
    if (data.Contains("#changePos"))
    {
        string message = data.Split('&')[1];
        ChatController.ChangePosition(_userName, data.ToString());
        return;
    }

}

public void BlockBoard()
{
    string data = "";
    if (Server.Clients.Count == 0)
    {
        data = "#white";
    }
    else
    {
        data = "#black";
    }
    
    byte[] buffer = Encoding.UTF8.GetBytes(data);
    int bytesSent = _handler.Send(buffer);
}

Затем в клиенте я получаю этот white, а что дальше с ним делать?

while (_serverSocket.Connected)
{

    byte[] buffer = new byte[8196];
    int bytesRec = _serverSocket.Receive(buffer);
    string data = Encoding.UTF8.GetString(buffer, 0, bytesRec);

    if (data.Contains("#white"))
    {
        this.isWhitePlayer = true;
    }
    else if (data.Contains("#black"))
    {
        this.isWhitePlayer = false;
    }
    if (data.Contains("#updatechat"))
    {
        UpdateChat(data);
        continue;
    }
    if (data.Contains("#Updateboard"))
    {
        UpdateBoardd(data);
        continue;
    }

}

Ответы (1 шт):

Автор решения: Andrew

Слишком много лишнего кода в вопросе.

Собственно, тебе нужно понять кто именно ходит первым (кто за белых).

Допустим ты создаешь флаг "isWhitePlayer". А дальше все просто - если сейчас ход белых - проверяешь флаг на True - клиент может ходить.

Если сейчас ход черных - проверяешь флаг на False - клиент может ходить.

А по какой логике ты присвоишь тому или иному игроку цвет выбирать тебе.


на стороне клиента внутри Listener добавь:

if (data.Contains("#white"))
{
    this.isWhitePlayer = true;
    continue;
}
else if (data.Contains("#black"))
{
    this.isWhitePlayer = false;
    continue;
}

на стороне сервера - отправляй эти самые "#black" и "#white" на самом начале игры каждому из клиентов


Если на стороне клиента не наш ход(проверяя this.isWhitePlayer и теперешний ход должны делать черные или белые ) - не делаем SendPosition.

→ Ссылка