Alter Pawn-shield scoring
authorH.G.Muller <hgm@hgm-xboard.(none)>
Mon, 6 Feb 2017 17:17:22 +0000 (18:17 +0100)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Mon, 6 Feb 2017 17:17:22 +0000 (18:17 +0100)
dropper.c

index 6fd442d..3a4f513 100644 (file)
--- a/dropper.c
+++ b/dropper.c
@@ -712,18 +712,18 @@ static int rightsScore[] = { 0, -10, 10, 0, -10, -30, 0, -20, 10, 0, 30, 20, 0,
 int
 Evaluate (int stm, int rights)
 {
-    int k, score = 0;
-    k = location[WHITE+31];
-    score += ((board[k+22] == WHITE) + (board[k+22+1] == WHITE) + (board[k+22-1] == WHITE))*2;
-    score -= !board[k+22] + !board[k+22+1] + !board[k+22-1];
-    score -= ((board[k+44] == BLACK) + (board[k+44+1] == BLACK) + (board[k+44-1] == BLACK))*5;
+    int k, s, score = 0;
+    k = location[WHITE+31]; s = (k >= 1*22)*6 + 1;
+    score += ((board[k+22] == WHITE) + ((board[k+22+1] == WHITE) + (board[k+22-1] == WHITE) - 2)*s)*2;
+    score += (!board[k+1] + !board[k-1])*(board[k+22] != BLACK)*5;
+    score -= (2*(board[k+22] == BLACK) + (board[k+44] == BLACK) + (board[k+44+1] == BLACK) + (board[k+44-1] == BLACK))*5;
     if(k >= killZone) score -= 100;
-    k = location[BLACK+31];
-    score -= ((board[k-22] == BLACK) + (board[k-22+1] == BLACK) + (board[k-22-1] == BLACK))*2;
-    score += !board[k-22] + !board[k-22+1] + !board[k-22-1];
-    score += ((board[k-44] == WHITE) + (board[k-44+1] == WHITE) + (board[k-44-1] == WHITE))*5;
+    k = location[BLACK+31]; s = (k < boardEnd - 1*22)*6 + 1;
+    score -= ((board[k-22] == BLACK) + ((board[k-22+1] == BLACK) + (board[k-22-1] == BLACK) - 2)*s)*2;
+    score -= (!board[k+1] + !board[k-1])*(board[k-22] != WHITE)*5;
+    score += (2*(board[k-22] == WHITE) + (board[k-44] == WHITE) + (board[k-44+1] == WHITE) + (board[k-44-1] == WHITE))*5;
     if(k < boardEnd - killZone) score += 100;
-    score *= 20;
+    score *= 5;
     score += rightsScore[rights];
     return stm == WHITE ? score : -score;
 }