Beispiel #1
0
 private bool isUtilizable(Ficha f, Orientacion o)
 {
     if (compOrientacion(f, o))
     {
         return(true);
     }
     f.girarFicha();
     return(compOrientacion(f, o));
 }
Beispiel #2
0
 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);
     }
 }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        private bool compOrientacion(Ficha f, Orientacion o)
        {
            var val = (int)o;

            return(extremos[val].Valores[val] == f.Valores[++val % extremos.Count]);
        }
Beispiel #5
0
        public List <Orientacion> OrientacionesPosibles(Ficha f)
        {
            var list = new List <Orientacion>((Orientacion[])Enum.GetValues(typeof(Orientacion)));

            return(list.FindAll(o => isUtilizable(f, o)));
        }
Beispiel #6
0
 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);
 }
Beispiel #7
0
        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 :(");
            }
        }