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