Esempio n. 1
0
        private void recibe_embarcaciones(string data, string[] datos, List <embarcacion> flota)
        {
            data = data.Substring(datos[0].Length + 1, data.Length - (datos[0].Length + 1));
            //MessageBox.Show(data);

            /*
             * prepa.chat_text.Text = prepa.chat_text.Text + "data: " + data + "\r\n";
             * prepa.chat_text.Text = prepa.chat_text.Text + "tamaño config: " + datos[0].Length + "\r\n";
             * prepa.chat_text.Text = prepa.chat_text.Text + "tamaño data: " + data.Length + "\r\n";
             */
            datos = data.Split('-');

            for (int i = 0; i < datos.Length; i++)
            {
                string[] atributos = datos[i].Split(',');

                //prepa.chat_text.Text = prepa.chat_text.Text + valores[1] + "\r\n";

                embarcacion embarc = new embarcacion();
                embarc.nombre = atributos[0].Split(':')[1];
                embarc.inicio = Convert.ToInt32(atributos[1].Split(':')[1]);
                embarc.fin    = Convert.ToInt32(atributos[2].Split(':')[1]);
                embarc.estado = "vivo";
                embarc.celdas = new List <int>();
                flota.Add(embarc);
                //navalWar.mi_flota.Add(embarc);
            }

            rellena_celdas(flota);
        }
Esempio n. 2
0
        private void button2_Click(object sender, EventArgs e)
        {
            string bar = comboBox1.Text;

            int rango_in = int.Parse(inicio.Text);
            int rango_fn = int.Parse(fin.Text);
            int rangox1 = 0, rangoy1 = 0, rangox2 = 0, rangoy2 = 0;
            int i, j = 0, aux = 0;
            int resul = 0, resul2 = 0;

            for (i = 0; i < datos.Count; i++)
            {
                for (j = 0; j < datos.Count; j++)
                {
                    if (rango_in == datos[i].casilla && rango_fn == datos[j].casilla)
                    {
                        if (datos[i].i == datos[j].i)
                        {//busca en forma horizontal
                            if (datos[i].j < datos[j].j)
                            {
                                rangoy1 = datos[i].j;
                                rangox1 = datos[i].i;

                                rangox2 = datos[j].i;
                                rangoy2 = datos[j].j;
                            }
                            else
                            {
                                rangoy1 = datos[j].j;
                                rangox1 = datos[j].i;

                                rangox2 = datos[i].i;
                                rangoy2 = datos[i].j;
                            }
                            resul = rangoy2 - rangoy1;
                        }
                        else if (datos[i].j == datos[j].j)
                        {//busqueda en forma vertical
                            if (datos[i].i < datos[j].i)
                            {
                                rangoy1 = datos[i].j;
                                rangox1 = datos[i].i;

                                rangox2 = datos[j].i;
                                rangoy2 = datos[j].j;
                            }
                            else
                            {
                                rangoy1 = datos[j].j;
                                rangox1 = datos[j].i;

                                rangox2 = datos[i].i;
                                rangoy2 = datos[i].j;
                            }

                            resul = rangox2 - rangox1;
                        }
                        else
                        {//busqueda en diagonal
                            if (datos[i].i < datos[j].i)
                            {
                                rangoy1 = datos[i].j;
                                rangox1 = datos[i].i;

                                rangox2 = datos[j].i;
                                rangoy2 = datos[j].j;
                            }
                            else
                            {
                                rangoy1 = datos[j].j;
                                rangox1 = datos[j].i;

                                rangox2 = datos[i].i;
                                rangoy2 = datos[i].j;
                            }

                            resul2 = Math.Abs(rangoy2 - rangoy1);
                            resul  = rangox2 - rangox1;
                            if ((resul - resul2) == 0)
                            {
                                resul = rangox2 - rangox1;
                            }
                            else
                            {
                                resul = 0;
                            }
                        }
                    }
                }
            }

            for (i = 0; i < barcos.Count; i++)
            {
                if (bar == barcos[i].nombre)
                {
                    aux = barcos[i].espacio;
                }
            }


            //MessageBox.Show("resul2 " + resul2);
            if (aux - 1 != resul)
            {
                MessageBox.Show("no se puede realizar esta operacion");

                celda[0] = "";
                celda[1] = "";
                for (i = 0; i < datos.Count; i++)
                {
                    for (j = 0; j < datos.Count; j++)
                    {
                        if (rango_in == datos[i].casilla && rango_fn == datos[j].casilla)
                        {
                            boton_casilla[datos[i].i, datos[i].j].BackColor = Color.Black;
                            boton_casilla[datos[j].i, datos[j].j].BackColor = Color.Black;
                        }
                    }
                }
            }
            else
            {
                //MessageBox.Show("se puede realizar esta operacion "+resul);
                int k = 0, var = resul, verificador = 0, var2 = resul;

                for (i = 0; i < datos.Count; i++)
                {
                    if (rangox1 == datos[i].i && rangoy1 == datos[i].j)
                    {
                        while (var2 >= 0)
                        {
                            if (datos[i + k].casilla == ver_casill[i + k].numero)
                            {
                                if (ver_casill[i + k].estado == "libre")   // se cuenta si las casillas que se ocuparan estan libre o no
                                {
                                    verificador = verificador + 1;
                                }
                                if (rangox1 == rangox2 && rangoy1 != rangoy2)
                                {// horizontal
                                    k = k + 1;
                                }
                                if (rangox1 != rangox2 && rangoy1 == rangoy2)
                                {//vertical
                                    k = k + 20;
                                }
                                if (rangox1 + var == rangox2 && rangoy1 + var == rangoy2)
                                {// para movimientos en diagonal
                                    k = k + 21;
                                }
                                if (rangox1 + var == rangox2 && rangoy1 - var == rangoy2)
                                {// para movimientos en diagonal
                                    k = k + 19;
                                }
                            }
                            var2 = var2 - 1;
                        }
                    }
                }

                //MessageBox.Show("resul " + resul);
                //MessageBox.Show("verificador " + verificador);
                k = 0;
                if (resul == verificador - 1)
                {
                    for (i = 0; i < datos.Count; i++)
                    {
                        if (rangox1 == datos[i].i && rangoy1 == datos[i].j)
                        {
                            while (resul >= 0)
                            {
                                boton_casilla[datos[i + k].i, datos[i + k].j].BackColor = Color.Blue;
                                boton_casilla[datos[i + k].i, datos[i + k].j].Enabled   = false; // se que se precione este boton como uno de los rangos
                                ver_casill[i + k].estado = "ocupado";                            // se marcan las casillas
                                if (rangox1 == rangox2 && rangoy1 != rangoy2)
                                {                                                                // horizontal
                                    k = k + 1;
                                }
                                if (rangox1 != rangox2 && rangoy1 == rangoy2)
                                {//vertical
                                    k = k + 20;
                                }
                                if (rangox1 + var == rangox2 && rangoy1 + var == rangoy2)
                                {// para movimientos en diagonal
                                    k = k + 21;
                                }
                                if (rangox1 + var == rangox2 && rangoy1 - var == rangoy2)
                                {// para movimientos en diagonal
                                    k = k + 19;
                                }


                                resul = resul - 1;
                            }
                        }
                    }
                    contador = contador + 1;
                    comboBox1.Items.Remove(bar);
                    listBox1.Items.Remove(bar + ":  " + aux);
                }
                else
                {
                    MessageBox.Show("alguna de las casillas dentro del rango ya esta ocupada. \nVuelva a elegir un nuevo rango de casillas");

                    for (i = 0; i < datos.Count; i++)
                    {
                        for (j = 0; j < datos.Count; j++)
                        {
                            if (rango_in == datos[i].casilla && rango_fn == datos[j].casilla)
                            {
                                boton_casilla[datos[i].i, datos[i].j].BackColor = Color.Black;
                                boton_casilla[datos[j].i, datos[j].j].BackColor = Color.Black;
                            }
                        }
                    }
                }

                embarcacion emb = new embarcacion();
                emb.nombre = bar;
                emb.inicio = rango_in;
                emb.fin    = rango_fn;
                emb.estado = "vivo";
                embarcacion.Add(emb);


                inicio.Text = "";
                fin.Text    = "";
                resul       = 0;
                rangox1     = 0;
                rangoy1     = 0;
                rangox2     = 0;
                rangoy2     = 0;
                celda[0]    = "";
                celda[1]    = "";
                verificador = 0;

                if (contador == 5)
                {
                    button2.Enabled = false;
                }
            }
        }