Ejemplo n.º 1
0
        /// <summary>
        /// Envia a mensagem XML passada como parâmetro para o servidor atual e retorna a resposta do servidor.
        /// Este método cria uma nova thread para o envio da mensagem e aguarda a resposta em uma variável compartilhada.
        /// A mensagem é enviada utilizando-se o protocolo UDP.
        /// </summary>
        /// <param name="mensagem">mensagem XML de requisição que será enviado ao servidor.</param>
        private void lerTabuleiro()
        {
            String             mensagem = formPai.enviandoMensagem("<REQUEST><RT>game board</RT><GID>" + jogo + "</GID></REQUEST>");
            Regex              exp      = new Regex(@"<GAME CURRENT BOARD>(.+)</GAME CURRENT BOARD>", RegexOptions.IgnoreCase);
            Regex              exp2     = new Regex(@"<(.)>", RegexOptions.IgnoreCase);
            RespostaDoServidor resp1    = new RespostaDoServidor(mensagem);

            //int[] tabuleiro = new int[9];

            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    int id    = i * 3 + j;
                    int valor = 0;

                    if (resp1.tabuleiro[i, j] == "-")
                    {
                        valor             = -1;
                        tabLabel[id].Text = "O";
                    }
                    else if (resp1.tabuleiro[i, j] == "+")
                    {
                        valor             = +1;
                        tabLabel[id].Text = "X";
                    }
                    tabuleiro[id] = valor;
                }
            }

            String             resposta = formPai.enviandoMensagem(MensagensDeRequisicao.estadoDoJogo(jogo, jogador));
            RespostaDoServidor resp     = new RespostaDoServidor(resposta);

            if (!resp.jogoEncerrado)
            {
                if (resp.turnoDoJogadorAtual)
                {
                    lblStatus.Text = "seu turno";
                    if (botAtivado && !botJogou)
                    {
                        jogarAutomaticamente();
                    }

                    timer1.Enabled = true;
                }
                else if (resp.turnoDoAdversario)
                {
                    if (jogadorAtual != tiposDeJogadores.Observador)
                    {
                        lblStatus.Text = "turno do adversário";
                    }
                    timer1.Enabled = true;
                }
                botJogou = false;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Método acionado pelo Tick do Timer timer1.
        /// Envia mensagem ao servidor para verificar se há mudanças no jogo e
        ///   atualiza o formulário com os dados da resposta do servidor.
        /// </summary>
        private void timer1_Tick(object sender, EventArgs e)
        {
            String             resposta = formPai.enviandoMensagem(MensagensDeRequisicao.estadoDoJogo(jogo, jogador));
            RespostaDoServidor resp1    = new RespostaDoServidor(resposta);

            if (resp1.jogoEncerrado)
            {
                verificarStatus(resp1);
            }
            else if (resp1.turnoDoJogadorAtual)
            {
                lblStatus.Text = "seu turno";
                if (botAtivado)
                {
                    jogarAutomaticamente();
                }
                else
                {
                    timer1.Enabled = false;
                }
                lerTabuleiro();
                verificarStatus(resp1);
            }
        }