Exemple #1
0
 private void hilo_LocalizaNumero()
 {
     while (hcoms.nCte == -1)
     {
         Thread.Sleep(10);
     }
     nCte    = hcoms.nCte;
     comsUDP = new HiloComsUDP(201 + nCte);
     hiloUDP = new Thread(new ThreadStart(comsUDP.startplayer));
     hiloUDP.Start();
     comsUDP.enviaMensaje("identifica@" + usr + "@" + nCte.ToString());
     hiloVerifica = new Thread(new ThreadStart(hilo_VerificaServidorActivo));
     hiloVerifica.Start();
     hiloLoseOP = new Thread(new ThreadStart(hilo_VerificaLoseOP));
     hiloLoseOP.Start();
     hiloAquireOP = new Thread(new ThreadStart(hilo_VerificaAquireOP));
     hiloAquireOP.Start();
 }
 public void accionPieza(int x, int y, String tipo)
 {
     if (seleccionada)
     {
         seleccionada = false;
         String tag = (String)tablero[x, y].btn.BackgroundImage.Tag;
         //----------------------------------------------Mueve Pieza-----------------------------------------------
         if (tag == "l" || tag == "r" || tipo == "AUTOMATICO")
         {
             bool cr = false;
             limpiaEnroque();
             iluminaPosibles(selectX, selectY, "");
             Pieza aux = tablero[x, y].pza;
             if (tag == "r" || tipo == "AUTOMATICO")
             {
                 tablero[x, y].pza             = tablero[selectX, selectY].pza;
                 tablero[selectX, selectY].pza = null;
             }
             else
             {
                 comsUDP.enviaMensaje("partida@MOVIMIENTO@" + comsUDP.nCte1.ToString() + "@" + comsUDP.nOp.ToString() + "@" + selectX.ToString() + "@" + selectY.ToString() + "@" + x.ToString() + "@" + y.ToString() + "@N");
                 while (!movida)
                 {
                     Thread.Sleep(10);
                 }
                 movida = false;
                 return;
             }
             //Posicion de los Reyes
             if (tablero[x, y].pza.color && tablero[x, y].pza.roll == "king")
             {
                 reyb.x = x; reyb.y = y; cr = true;
             }
             else if (!tablero[x, y].pza.color && tablero[x, y].pza.roll == "king")
             {
                 reyn.x = x; reyn.y = y; cr = true;
             }
             if (tag == "r" || tipo == "AUTOMATICO")
             {
                 tablero[selectX, selectY].colocaPieza();
                 tablero[x, y].colocaPieza();
             }
             //---------------------
             if (jaqueAlRey(turnoBlanca))
             {
                 if (turnoBlanca)
                 {
                     MessageBox.Show("El Rey Blanco está en Jaque", "Jaque");
                 }
                 else
                 {
                     MessageBox.Show("El Rey Dorado está en Jaque", "Jaque");
                 }
                 tablero[selectX, selectY].pza = tablero[x, y].pza;
                 tablero[x, y].pza             = aux;
                 //Regresar posicion de los Reyes
                 if (cr)
                 {
                     if (tablero[selectX, selectY].pza.color)
                     {
                         reyb.x = selectX; reyb.y = selectY;
                     }
                     else
                     {
                         reyn.x = selectX; reyn.y = selectY;
                     }
                 }
                 tablero[selectX, selectY].colocaPieza();
                 tablero[x, y].colocaPieza();
             }
             else
             {
                 //Comprueba piezaz que alteren el enroque
                 alteranEnroque(x, y);
                 //Peon a Dama
                 if (tablero[x, y].piezaBlanca() && tablero[x, y].pza.roll == "pawn" && y == 0)
                 {
                     tablero[x, y].pza.roll = "queen"; tablero[x, y].colocaPieza(); MessageBox.Show("Peon blanco a Reina", "Promocion");
                 }
                 else if (tablero[x, y].piezaNegra() && tablero[x, y].pza.roll == "pawn" && y == 7)
                 {
                     tablero[x, y].pza.roll = "queen"; tablero[x, y].colocaPieza(); MessageBox.Show("Peon dorado a Reina", "Promocion");
                 }
                 //Turno
                 if (comsUDP.enroque)
                 {
                     comsUDP.enroque = false;
                 }
                 else
                 {
                     if (turnoBlanca)
                     {
                         turnoBlanca = false;
                     }
                     else
                     {
                         turnoBlanca = true;
                     }
                 }
                 int i, j, auxX = selectX, auxY = selectY;
                 iluminado = 0;
                 amenaza   = false;
                 for (j = 0; j < 8; j++)
                 {
                     for (i = 0; i < 8; i++)
                     {
                         if (tablero[i, j].pza != null)
                         {
                             if (tablero[i, j].pza.color == turnoBlanca)
                             {
                                 selectX = i;
                                 selectY = j;
                                 iluminaPosibles(i, j, "j");
                             }
                         }
                     }
                 }
                 if (jaqueAlRey(turnoBlanca))
                 {
                     if (iluminado == 0)
                     {
                         terminado = true;
                         tm        = false;
                         MessageBox.Show("Jaque Mate", "Jaque");
                         //this.Close();
                     }
                     else
                     {
                         if (turnoBlanca)
                         {
                             MessageBox.Show("Jaque al Rey Blanco", "Jaque");
                         }
                         else
                         {
                             MessageBox.Show("Jaque al Rey Dorado", "Jaque");
                         }
                     }
                 }
                 else
                 if (iluminado == 0)
                 {
                     MessageBox.Show("Ahogado", "Empate");
                     //this.Close();
                 }
             }
         }
         else
         {
             limpiaEnroque();
             iluminaPosibles(selectX, selectY, "");
             if (tag == "g")
             {
                 enroque(x, y);
             }
             if (tag == "y")
             {
                 MessageBox.Show("No es posible enrocar en esta direccion", "Enroque");
             }
         }
     }
     //--------------------------------------------------Seleccionar la Pieza----------------------------------
     else
     {
         if (!terminado)
         {
             if (tablero[x, y].pza != null)
             {
                 if ((turnoBlanca && tablero[x, y].piezaBlanca()) || (!turnoBlanca && tablero[x, y].piezaNegra()) || tipo == "AUTOMATICO")
                 {
                     if ((tablero[x, y].piezaBlanca() && comsUDP.color == "blancas") || (tablero[x, y].piezaNegra() && comsUDP.color == "doradas") || tipo == "AUTOMATICO")
                     {
                         iluminado = 0;
                         selectX   = x;
                         selectY   = y;
                         amenaza   = false;
                         if (tipo == "MANUAL")
                         {
                             iluminaPosibles(x, y, "l");
                         }
                         else
                         {
                             seleccionada = true;
                         }
                         if (iluminado > 0)
                         {
                             seleccionada = true;
                             //Comprueba condiciones para enroque
                             compruebaEnroque();
                         }
                         else
                         if (amenaza)
                         {
                             if (turnoBlanca)
                             {
                                 MessageBox.Show("Rey Blanco quedará en Jaque", "Jaque");
                             }
                             else
                             {
                                 MessageBox.Show("Rey Dorado quedará en Jaque", "Jaque");
                             }
                             iluminaPosibles(x, y, "");
                         }
                     }
                     else
                     {
                         MessageBox.Show("No son tus piezas", "Color");
                     }
                 }
                 else
                 {
                     if (turnoBlanca)
                     {
                         MessageBox.Show("Es el turno de las Blancas", "Turno");
                     }
                     else
                     {
                         MessageBox.Show("Es el turno de las Doradas", "Turno");
                     }
                 }
             }
         }
     }
 }