summaryrefslogtreecommitdiff
path: root/src/recogn.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/recogn.c')
-rw-r--r--src/recogn.c30
1 files changed, 12 insertions, 18 deletions
diff --git a/src/recogn.c b/src/recogn.c
index c0b1bb8..c8fc856 100644
--- a/src/recogn.c
+++ b/src/recogn.c
@@ -334,7 +334,7 @@ Return value:
uAdjacent = 0;
for (u = 1; u < pos->uNonPawnCount[uStrong][0]; u++)
{
- uAdjacent += DISTANCE(cWeakKing, pos->cNonPawns[uStrong][u] == 1);
+ uAdjacent += (DISTANCE(cWeakKing, pos->cNonPawns[uStrong][u]) == 1);
}
if (uAdjacent > 1)
{
@@ -345,6 +345,10 @@ Return value:
// If it's the weak side's turn and the strong king is close
// enough that the weak side may be stalemated, fail to recognize.
//
+ ASSERT(IS_ON_BOARD(pos->cNonPawns[uStrong][0]));
+ ASSERT(IS_KING(pos->rgSquare[pos->cNonPawns[uStrong][0]].pPiece));
+ u = DISTANCE(cWeakKing, pos->cNonPawns[uStrong][0]);
+ ASSERT(u != 1);
if (pos->uToMove != uStrong)
{
ASSERT(pos->uToMove == FLIP(uStrong));
@@ -352,17 +356,12 @@ Return value:
{
return(UNRECOGNIZED);
}
-
- ASSERT(IS_ON_BOARD(pos->cNonPawns[uStrong][0]));
- ASSERT(IS_KING(pos->rgSquare[pos->cNonPawns[uStrong][0]].pPiece));
- u = DISTANCE(cWeakKing, pos->cNonPawns[uStrong][0]);
- ASSERT(u != 1);
if ((u == 2) && (ON_EDGE(cWeakKing)))
{
return(UNRECOGNIZED);
}
}
-
+
//
// This is a recognized win for the strong side. Compute a score
// that encourages cornering the weak king and making progress
@@ -549,9 +548,9 @@ Return value:
uAdjacent = 0;
for (u = 1; u < pos->uNonPawnCount[uStrong][0]; u++)
{
- uAdjacent = (DISTANCE(pos->cNonPawns[uStrong][u], cWeakKing) == 1);
+ uAdjacent += (DISTANCE(pos->cNonPawns[uStrong][u], cWeakKing) == 1);
}
- if (!uAdjacent)
+ if (uAdjacent)
{
return(UNRECOGNIZED);
}
@@ -561,18 +560,13 @@ Return value:
// that there might be a stalemate if the weak side is on move and
// on the edge.
//
+ ASSERT(IS_ON_BOARD(pos->cNonPawns[uStrong][0]));
+ ASSERT(IS_KING(pos->rgSquare[pos->cNonPawns[uStrong][0]].pPiece));
+ u = DISTANCE(cWeakKing, pos->cNonPawns[uStrong][0]);
+ ASSERT(u != 1);
if (pos->uToMove != uStrong)
{
ASSERT(pos->uToMove == FLIP(uStrong));
- if (uAdjacent == 1)
- {
- return(UNRECOGNIZED);
- }
-
- ASSERT(IS_ON_BOARD(pos->cNonPawns[uStrong][0]));
- ASSERT(IS_KING(pos->rgSquare[pos->cNonPawns[uStrong][0]].pPiece));
- u = DISTANCE(cWeakKing, pos->cNonPawns[uStrong][0]);
- ASSERT(u != 1);
if ((u == 2) && (ON_EDGE(cWeakKing)))
{
return(UNRECOGNIZED);