Как деактивировать одного из клиентов?
Это сервер здесь я в момент когда присваиваю имя, ещё вызываю метод
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 шт):
Слишком много лишнего кода в вопросе.
Собственно, тебе нужно понять кто именно ходит первым (кто за белых).
Допустим ты создаешь флаг "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.