private bool isUtilizable(Ficha f, Orientacion o) { if (compOrientacion(f, o)) { return(true); } f.girarFicha(); return(compOrientacion(f, o)); }
public void Add(Ficha f) { fichas.Add(f); f.SetVertical(f.IsDoble()); foreach (var o in Enum.GetValues(typeof(Orientacion))) { extremos.Insert((int)o, f); } }
public void Add(Ficha f, Orientacion o) { if (!compOrientacion(f, o)) { f.girarFicha(); } if (o == Orientacion.Derecha) { fichas.Add(f); } else { fichas.Insert(0, f); } f.SetVertical(f.IsDoble()); var i = (int)o; extremos.RemoveAt(i); extremos.Insert(i, f); }
private bool compOrientacion(Ficha f, Orientacion o) { var val = (int)o; return(extremos[val].Valores[val] == f.Valores[++val % extremos.Count]); }
public List <Orientacion> OrientacionesPosibles(Ficha f) { var list = new List <Orientacion>((Orientacion[])Enum.GetValues(typeof(Orientacion))); return(list.FindAll(o => isUtilizable(f, o))); }
private void button1_Click(object sender, EventArgs e) { string[] trozos = textBox1.Text.Split('-'); ficha1 = new Ficha(Convert.ToInt32(trozos[0]), Convert.ToInt32(trozos[1]), 99); Comprobar_Afinidad_Ficha(ficha1, posicion_seleccionada); }
private void Comprobar_Afinidad_Ficha(Ficha ficha_jugada, Coordenada punto_insercion) { //Primero comprobamos si punto de inserción está en la lista de posiciones válidas Boolean encontrado = false; string peticion; for (int i = 0; i < posiciones_validas.NUM; i++) { if ((punto_insercion.X == posiciones_validas.LISTA_COORDENADAS[i].X) && (punto_insercion.Y == posiciones_validas.LISTA_COORDENADAS[i].Y)) { encontrado = true; } } if (encontrado) { //Hemos encontrado la posición, por tanto podemos continuar //Ahora deberemos comprobar si algún número de la ficha puede encajar en la posición //Para ello comprobaremos si el valor de la casilla, coincide con algun valor //de nuestra ficha //Comprobamos que el número que haya en la posición seleccionada concuerde con uno de los de la ficha if (ficha_jugada.NUM_1 == Convert.ToInt32(dataGridView1.Rows[punto_insercion.Y].Cells[punto_insercion.X].Value)) { //Ahora que la ficha es válida, comprobamos en que posiciones podemos colocar el primer número Coordenada arriba = new Coordenada(punto_insercion.X, punto_insercion.Y - 1); Coordenada abajo = new Coordenada(punto_insercion.X, punto_insercion.Y + 1); Coordenada izquierda = new Coordenada(punto_insercion.X - 1, punto_insercion.Y); Coordenada derecha = new Coordenada(punto_insercion.X + 1, punto_insercion.Y); int ocupadas_arriba = Comprobar_Celdas_Colindantes_Si0(arriba); int ocupadas_abajo = Comprobar_Celdas_Colindantes_Si0(abajo); int ocupadas_izquierda = Comprobar_Celdas_Colindantes_Si0(izquierda); int ocupadas_derecha = Comprobar_Celdas_Colindantes_Si0(derecha); if ((ocupadas_arriba <= 1) && (Convert.ToInt32(dataGridView1.Rows[arriba.Y].Cells[arriba.X].Value) == 0)) { dataGridView1.Rows[arriba.Y].Cells[arriba.X].Value = "*"; } if ((ocupadas_abajo <= 1) && (Convert.ToInt32(dataGridView1.Rows[abajo.Y].Cells[abajo.X].Value) == 0)) { dataGridView1.Rows[abajo.Y].Cells[abajo.X].Value = "*"; } if ((ocupadas_izquierda <= 1) && (Convert.ToInt32(dataGridView1.Rows[izquierda.Y].Cells[izquierda.X].Value) == 0)) { dataGridView1.Rows[izquierda.Y].Cells[izquierda.X].Value = "*"; } if ((ocupadas_derecha <= 1) && (Convert.ToInt32(dataGridView1.Rows[derecha.Y].Cells[derecha.X].Value) == 0)) { dataGridView1.Rows[derecha.Y].Cells[derecha.X].Value = "*"; } pon_este = ficha_jugada.NUM_1; pon_otro = ficha_jugada.NUM_2; //Antes de nada notificamos a los demás jugadores que esa ya no será una posición de juego válida peticion = "8/- " + Convert.ToString(posicion_seleccionada.X) + " " + Convert.ToString(posicion_seleccionada.Y); byte[] msg = System.Text.Encoding.ASCII.GetBytes(peticion); server.Send(msg); Eliminar_Posicion_Jugable(posicion_seleccionada); textBox1.Text = null; listBox2.Items.RemoveAt(actual_index); } else if (ficha_jugada.NUM_2 == Convert.ToInt32(dataGridView1.Rows[punto_insercion.Y].Cells[punto_insercion.X].Value)) { //Ahora que la ficha es válida, comprobamos en que posiciones podemos colocar el primer número Coordenada arriba = new Coordenada(punto_insercion.X, punto_insercion.Y - 1); Coordenada abajo = new Coordenada(punto_insercion.X, punto_insercion.Y + 1); Coordenada izquierda = new Coordenada(punto_insercion.X - 1, punto_insercion.Y); Coordenada derecha = new Coordenada(punto_insercion.X + 1, punto_insercion.Y); int ocupadas_arriba = Comprobar_Celdas_Colindantes_Si0(arriba); int ocupadas_abajo = Comprobar_Celdas_Colindantes_Si0(abajo); int ocupadas_izquierda = Comprobar_Celdas_Colindantes_Si0(izquierda); int ocupadas_derecha = Comprobar_Celdas_Colindantes_Si0(derecha); if ((ocupadas_arriba <= 1) && (Convert.ToInt32(dataGridView1.Rows[arriba.Y].Cells[arriba.X].Value) == 0)) { dataGridView1.Rows[arriba.Y].Cells[arriba.X].Value = "*"; } if ((ocupadas_abajo <= 1) && (Convert.ToInt32(dataGridView1.Rows[abajo.Y].Cells[abajo.X].Value) == 0)) { dataGridView1.Rows[abajo.Y].Cells[abajo.X].Value = "*"; } if ((ocupadas_izquierda <= 1) && (Convert.ToInt32(dataGridView1.Rows[izquierda.Y].Cells[izquierda.X].Value) == 0)) { dataGridView1.Rows[izquierda.Y].Cells[izquierda.X].Value = "*"; } if ((ocupadas_derecha <= 1) && (Convert.ToInt32(dataGridView1.Rows[derecha.Y].Cells[derecha.X].Value) == 0)) { dataGridView1.Rows[derecha.Y].Cells[derecha.X].Value = "*"; } pon_este = ficha_jugada.NUM_2; pon_otro = ficha_jugada.NUM_1; //Antes de nada notificamos a los demás jugadores que esa ya no será una posición de juego válida peticion = "8/- " + Convert.ToString(posicion_seleccionada.X) + " " + Convert.ToString(posicion_seleccionada.Y); byte[] msg = System.Text.Encoding.ASCII.GetBytes(peticion); server.Send(msg); Eliminar_Posicion_Jugable(posicion_seleccionada); textBox1.Text = null; listBox2.Items.RemoveAt(actual_index); } else { PonMensajeServidor("Vaya, la ficha no encaja aquí :("); } } else { PonMensajeServidor("Vaya, elige otra casilla y vuelve a pulsar a jugar :("); } }