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); }
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; } } }