Пример #1
0
        //-----------------------------------------------------------------------------------------------
        public factor KRPPKRP(cPosicion pos)
        {
            sq wnCasillaPeon1 = pos.GetList(m_cFuerte, cPieza.PEON)[0];
              sq wnCasillaPeon2 = pos.GetList(m_cFuerte, cPieza.PEON)[1];
              sq nCasillaReyNegro = pos.GetRey(m_cDebil);

              if (pos.IsPeonPasado(m_cFuerte, wnCasillaPeon1) || pos.IsPeonPasado(m_cFuerte, wnCasillaPeon2))
            return cFactorEscala.NAN;

              fila r = Math.Max(cTypes.FilaProxima(m_cFuerte, wnCasillaPeon1), cTypes.FilaProxima(m_cFuerte, wnCasillaPeon2));

              if (cBitBoard.ColumDistancia(nCasillaReyNegro, wnCasillaPeon1) <= 1
            && cBitBoard.ColumDistancia(nCasillaReyNegro, wnCasillaPeon2) <= 1
            && cTypes.FilaProxima(m_cFuerte, nCasillaReyNegro) > r)
              {
            switch (r)
            {
              case FILA.F2: return (10);
              case FILA.F3: return (10);
              case FILA.F4: return (15);
              case FILA.F5: return (20);
              case FILA.F6: return (40);
              default: break;
            }
              }
              return cFactorEscala.NAN;
        }