예제 #1
0
        private void btnMain_Click(object sender, EventArgs e)
        {
            if (status == StatusBotao.Procurar)
            {
                Status = StatusBotao.Cancelar;

                Cliente = new ClienteP2P(txtNome.Text, tabuleiro);

                OnConfigurarCliente?.Invoke(Cliente);

                Cliente.OnClienteDisponivel          += Cliente_OnClienteDisponivel;
                Cliente.OnClienteConectado           += Cliente_OnClienteConectado;
                Cliente.OnClienteIndisponivel        += Cliente_OnClienteIndisponivel;
                Cliente.OnClienteRequisitandoConexao += Cliente_OnClienteRequisitandoConexao;

                Cliente.Iniciar();
            }
            else if (status == StatusBotao.Conectar)
            {
                Cliente.SolicitarConexao(clientesDisponiveis[lsbClientes.SelectedIndex]);
            }
            else
            {
                Cliente = null;
                AtualizarListbox();
                Status = StatusBotao.Procurar;
            }
        }
예제 #2
0
 private void Cliente_OnClienteDesconectado(System.Net.IPAddress addr)
 {
     Invoke(new Action(delegate()
     {
         MessageBox.Show(this, "O cliente se desconectou", "Cliente desconectado", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
         cliente = null;
         PosicionarNavios();
     }));
 }
예제 #3
0
        private void Cliente_OnResultadoDeTiro(Tiro t, ResultadoDeTiro resultado)
        {
            if (resultado == ResultadoDeTiro.Ganhou)
            {
                MessageBox.Show(this, "Você ganhou!", "UHUL :)", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                cliente = null;
                PosicionarNavios();
            }

            tInimigo.ResultadoTiro(t, resultado);
        }
예제 #4
0
        private void Reiniciar()
        {
            frmNavios = new Navios();
            frmNavios.Show(this);

            cliente   = null;
            tabuleiro = new Tabuleiro();

            frmJogadores = null;

            tirosDados     = new Dictionary <Tiro, ResultadoDeTiro>();
            tirosRecebidos = new List <Tiro>();
        }
예제 #5
0
 // Use this for initialization
 void Start()
 {
     if (Fluxo.tipoJogo == 1)
     {
         maquina = new Maquina();
     }
     if (Fluxo.tipoJogo == 2)
     {
         conexao  = new Conexao();
         cliente  = new ClienteP2P();
         servidor = new ServidorP2P();
     }
     turno = 1;
     mudaTurno(false);
     BuscaLargura.init(prefab, solido);
 }
예제 #6
0
 public void ConfigurarCliente(ClienteP2P cliente)
 {
     if (InvokeRequired && !Disposing)
     {
         Invoke(new Action(delegate()
         {
             ConfigurarCliente(cliente);
         }));
     }
     else
     {
         cliente.OnResultadoDeTiro     += Cliente_OnResultadoDeTiro;
         cliente.OnDarTiro             += Cliente_OnDarTiro;
         cliente.OnTiroRecebido        += Cliente_OnTiroRecebido;
         cliente.OnClienteDesconectado += Cliente_OnClienteDesconectado;
     }
 }
예제 #7
0
        private void pictureBox1_DragDrop(object sender, DragEventArgs e)
        {
            if (frmNavios.Direcao == 0)
            {
                if (10 - navio.Tamanho() < y1)
                {
                    y1 = 10 - navio.Tamanho();
                }
            }
            else
            if (10 - navio.Tamanho() < x1)
            {
                x1 = 10 - navio.Tamanho();
            }

            try
            {
                tabuleiro.PosicionarNavio(navio, x1, y1, (Direcao)frmNavios.Direcao);
                frmNavios.RemoverNavio(navio);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Posição inválida");
            }
            if (tabuleiro.EstaCompleto())
            {
                frmNavios.Close();
                cliente      = new ClienteP2P(lblJogador.Text, tabuleiro);
                frmJogadores = new Jogadores();
                frmJogadores.btnConectar.Click += BtnConectar_Click;
                frmJogadores.Show(this);
                cliente.OnClienteDisponivel          += Cliente_OnClienteDisponivel;
                cliente.OnClienteRequisitandoConexao += Cliente_OnClienteRequisitandoConexao;
                cliente.OnClienteConectado           += Cliente_OnClienteConectado;
                cliente.OnClienteDesconectado        += Cliente_OnClienteDesconectado;
                cliente.OnDarTiro             += Cliente_OnDarTiro;
                cliente.OnResultadoDeTiro     += Cliente_OnResultadoDeTiro;
                cliente.OnTiroRecebido        += Cliente_OnTiroRecebido;
                cliente.OnClienteDisponivel   += Cliente_OnClienteDisponivel;
                cliente.OnClienteIndisponivel += Cliente_OnClienteIndisponivel;
                // cliente.OnFimDeJogo += Cliente_OnFimDeJogo;
                cliente.Iniciar();
            }
            navio = default(TipoDeNavio);
        }
예제 #8
0
        public FrmConectar(ClienteP2P cliente, Tabuleiro tabuleiro)
        {
            if (tabuleiro == null)
            {
                throw new ArgumentException("Tabuleiro não pode ser nulo");
            }

            if (!tabuleiro.EstaCompleto())
            {
                throw new ArgumentException("Tabuleiro não pode estar incompleto");
            }

            this.tabuleiro = tabuleiro;
            Cliente        = cliente;
            Conectado      = false;

            InitializeComponent();
        }
예제 #9
0
        private void Form1_Load(object sender, EventArgs e)
        {
            Tabuleiro t = new Tabuleiro();

            t.PosicionarNavio(Navio.PortaAvioes, 0, 0, 3);
            t.PosicionarNavio(Navio.Encouracado, 0, 1, 3);
            t.PosicionarNavio(Navio.Encouracado, 0, 2, 3);
            t.PosicionarNavio(Navio.Cruzador, 0, 3, 3);
            t.PosicionarNavio(Navio.Cruzador, 0, 4, 3);
            t.PosicionarNavio(Navio.Cruzador, 0, 5, 3);
            //t.PosicionarNavio(Navio.Submarino, 6, 1, 3);
            //t.PosicionarNavio(Navio.Submarino, 6, 2, 3);
            //t.PosicionarNavio(Navio.Destroier, 0, 8, 3);
            //t.PosicionarNavio(Navio.Destroier, 0, 9, 3);

            cl = new ClienteP2P("Player", null);
            cl.Iniciar();

            cl.OnClienteDisponivel += Cl_OnClienteDisponivel;
        }
예제 #10
0
        private void Conectar()
        {
            if (PodeConectar)
            {
                FrmConectar frm = new FrmConectar(cliente, tJogador.Tabuleiro);
                frm.OnConfigurarCliente += ConfigurarCliente;

                Status anterior = status;
                status = Status.Conectando;

                if (frm.ShowDialog(this) == DialogResult.OK)
                {
                    status        = Status.Jogando;
                    cliente       = frm.Cliente;
                    lblInfo.Text  = "Jogando contra " + cliente.NomeRemoto;
                    lblInfo2.Text = "";
                }
                else
                {
                    status = anterior;
                }
            }
        }