private void UserMove(object sender, RoutedEventArgs e)
        {
            var bt = (Button)sender;
            var r  = Grid.GetRow(bt);
            var c  = Grid.GetColumn(bt);

            var moved = client.Move(r, c, out var serverRow, out var serverCol);

            if (moved)
            {
                bt.Content = "O";
            }
            else
            {
                status.Content = "Nie możesz wykonać takiego ruchu!";
                return;
            }

            var userResult = client.CheckWin(r, c);

            if (userResult != 0)
            {
                status.Content = "Wygrałeś!";
                Stop(r, c, userResult, true);
                return;
            }


            if (serverCol == -1 && serverRow == -1)
            {
                status.Content = "Remis!";
                Stop(r, c, 0, false);
                return;
            }


            var srv = (Button)board.Children.Cast <UIElement>()
                      .First(b => Grid.GetRow(b) == serverRow && Grid.GetColumn(b) == serverCol);

            srv.Content = "X";

            var serverResult = client.CheckWin(serverRow, serverCol);

            if (serverResult != 0)
            {
                status.Content = "Serwer wygrał!";
                Stop(serverRow, serverCol, serverResult, false);
                return;
            }

            status.Content = "Gra w toku...";
        }