gnugo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnugo-devel] eye value patch


From: Gunnar Farneback
Subject: [gnugo-devel] eye value patch
Date: Thu, 13 Jun 2002 22:02:42 +0200
User-agent: EMH/1.14.1 SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.3 Emacs/20.7 (sparc-sun-solaris2.7) (with unibyte mode)

This patch introduces a struct eyevalue, which initially just
encapsulates the min and max numbers of eyes being used currently.
This is a preparation for a later change to a more sophisticated eye
value scheme, which will be slightly more powerful than the one
described in the paper "Eyespace Values in Go" (linked from the web
page). More about this later.

The patch should have absolutely no effects on the regressions, but I
haven't actually tested it on the full regressions.

- new struct eyevalue

/Gunnar

Index: engine/dragon.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/dragon.c,v
retrieving revision 1.65
diff -u -r1.65 dragon.c
--- engine/dragon.c     31 May 2002 15:09:41 -0000      1.65
+++ engine/dragon.c     13 Jun 2002 19:24:42 -0000
@@ -235,15 +235,14 @@
       if (black_eye[str].color == BLACK_BORDER
          && black_eye[str].origin == str)
       {
-       char max, min;
+       struct eyevalue value;
        int attack_point, defense_point;
 
-       compute_eyes(str, &max, &min, &attack_point, &defense_point, 
+       compute_eyes(str, &value, &attack_point, &defense_point, 
                     black_eye, half_eye, 1, color);
        DEBUG(DEBUG_EYES, "Black eyespace at %1m: min=%d, max=%d\n",
-             str, min, max);
-       black_eye[str].maxeye = max;
-       black_eye[str].mineye = min;
+             str, value.mineye, value.maxeye);
+       black_eye[str].value = value;
        black_eye[str].attack_point = attack_point;
        black_eye[str].defense_point = defense_point;
        propagate_eye(str, black_eye);
@@ -252,15 +251,14 @@
       if (white_eye[str].color == WHITE_BORDER
          && white_eye[str].origin == str)
       {
-       char max, min;
+       struct eyevalue value;
        int attack_point, defense_point;
 
-       compute_eyes(str, &max, &min, &attack_point, &defense_point,
+       compute_eyes(str, &value, &attack_point, &defense_point,
                     white_eye, half_eye, 1, color);
        DEBUG(DEBUG_EYES, "White eyespace at %1m: min=%d, max=%d\n",
-             str, min, max);
-       white_eye[str].maxeye = max;
-       white_eye[str].mineye = min;
+             str, value.mineye, value.maxeye);
+       white_eye[str].value = value;
        white_eye[str].attack_point = attack_point;
        white_eye[str].defense_point = defense_point;
        propagate_eye(str, white_eye);
@@ -281,9 +279,10 @@
       gg_assert(board[dr] == BLACK);
       TRACE("eye at %1m found for dragon at %1m--augmenting genus\n",
            str, dr);
-      DRAGON2(dr).genus += black_eye[str].mineye;
-      DRAGON2(dr).heyes += (black_eye[str].maxeye - black_eye[str].mineye);
-      if (black_eye[str].maxeye - black_eye[str].mineye > 0)
+      DRAGON2(dr).genus += black_eye[str].value.mineye;
+      DRAGON2(dr).heyes += (black_eye[str].value.maxeye
+                           - black_eye[str].value.mineye);
+      if (black_eye[str].value.maxeye - black_eye[str].value.mineye > 0)
        DRAGON2(dr).heye = black_eye[str].attack_point;
     }
     
@@ -295,9 +294,10 @@
       gg_assert(board[dr] == WHITE);
       TRACE("eye at %1m found for dragon at %1m--augmenting genus\n",
            str, dr);
-      DRAGON2(dr).genus += white_eye[str].mineye;
-      DRAGON2(dr).heyes += (white_eye[str].maxeye - white_eye[str].mineye);
-      if (white_eye[str].maxeye - white_eye[str].mineye > 0) {
+      DRAGON2(dr).genus += white_eye[str].value.mineye;
+      DRAGON2(dr).heyes += (white_eye[str].value.maxeye
+                           - white_eye[str].value.mineye);
+      if (white_eye[str].value.maxeye - white_eye[str].value.mineye > 0) {
        DRAGON2(dr).heye = white_eye[str].attack_point;
       }
     }
@@ -998,7 +998,7 @@
   for (pos = BOARDMIN; pos < BOARDMAX; pos++) {
     if (mx[pos]
        && eye[pos].msize == 0
-       && eye[pos].mineye > 0)
+       && eye[pos].value.mineye > 0)
       strong_eyes++;
   }
 
Index: engine/liberty.h
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/liberty.h,v
retrieving revision 1.103
diff -u -r1.103 liberty.h
--- engine/liberty.h    3 Jun 2002 15:00:59 -0000       1.103
+++ engine/liberty.h    13 Jun 2002 19:24:42 -0000
@@ -800,13 +800,17 @@
   int final_status[BOARDMAX];
 };
 
+struct eyevalue {
+  char maxeye;       /* number of eyes if defender plays first               */
+  char mineye;       /* number of eyes if attacker plays first               */
+};
+
 struct eye_data {
   int color;/* BLACK, WHITE, BLACK_BORDERED, WHITE_BORDERED or GRAY_BORDERED */
   int esize;         /* size of the eyespace                                 */
   int msize;         /* number of marginal vertices                          */
   int origin;        /* The origin                                           */
-  char maxeye;       /* number of eyes if defender plays first               */
-  char mineye;       /* number of eyes if attacker plays first               */
+  struct eyevalue value; /* Number of eyes.                                  */
   int attack_point;  /* vital point for attack                               */
   int defense_point; /* vital point for defense                              */
 
@@ -821,8 +825,6 @@
   char cut;                  /* Opponent can cut at vertex.                */
 };
 
-typedef struct eye_data row_of_eye_data[BOARDMAX];
-
 extern struct eye_data white_eye[BOARDMAX];
 extern struct eye_data black_eye[BOARDMAX];
 
@@ -830,18 +832,18 @@
  * definition of struct eye_data or struct half_eye_data.
  */
 
-void compute_eyes(int pos, char *max, char *min,
+void compute_eyes(int pos, struct eyevalue *value,
                   int *attack_point, int *defense_point,
                   struct eye_data eye[BOARDMAX],
                   struct half_eye_data heye[BOARDMAX],
                   int add_moves, int color);
-void compute_eyes_pessimistic(int pos, char *max, char *min,
+void compute_eyes_pessimistic(int pos, struct eyevalue *value,
                               char *pessimistic_min,
                               int *attack_point, int *defense_point,
                               struct eye_data eye[BOARDMAX],
                               struct half_eye_data heye[BOARDMAX]);
 int recognize_eye2(int pos, int *attack_point,
-                  int *defense_point, char *max, char *min,
+                  int *defense_point, struct eyevalue *value,
                   struct eye_data eye[BOARDMAX],
                   struct half_eye_data heye[BOARDMAX],
                     int add_moves, int color);
Index: engine/life.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/life.c,v
retrieving revision 1.15
diff -u -r1.15 life.c
--- engine/life.c       22 May 2002 19:22:25 -0000      1.15
+++ engine/life.c       13 Jun 2002 19:24:42 -0000
@@ -604,7 +604,7 @@
 
 int
 recognize_eye2(int pos, int *attack_point, int *defense_point,
-              char *max, char *min, 
+              struct eyevalue *value,
               struct eye_data eyedata[BOARDMAX],
               struct half_eye_data heye[BOARDMAX],
               int add_moves, int color)
@@ -676,16 +676,16 @@
   DEBUG(DEBUG_EYES, "Max: ko_master %C, eyes=%d, ko=%d, defense: %1m\n",
        OTHER_COLOR(eye_color), max2b, ko2b, eye[defense_point2b]);
   
-  *min = min1a;
-  *max = max2b;
+  value->mineye = min1a;
+  value->maxeye = max2b;
 
   /* Ignore the distinction between seki and two proper eyes for now. */
-  if (*min == 3)
-    *min = 2;
-  if (*max == 3)
-    *max = 2;
+  if (value->mineye == 3)
+    value->mineye = 2;
+  if (value->maxeye == 3)
+    value->maxeye = 2;
   
-  if (*min != *max) {
+  if (value->mineye != value->maxeye) {
     if (attack_point)
       *attack_point = eye[attack_point1a];
     if (defense_point)
@@ -698,8 +698,8 @@
    * deal with chimeras. As a workaround we report the eyespace as one
    * and a half eye instead.
    */
-  if (*max - *min == 2)
-    *min = 1;
+  if (value->maxeye - value->mineye == 2)
+    value->mineye = 1;
   
   gg_assert(stackp == save_stackp);
 
Index: engine/optics.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/optics.c,v
retrieving revision 1.46
diff -u -r1.46 optics.c
--- engine/optics.c     31 May 2002 15:09:41 -0000      1.46
+++ engine/optics.c     13 Jun 2002 19:24:42 -0000
@@ -65,13 +65,13 @@
                          int *esize, int *msize,
                          struct eye_data eye[BOARDMAX]);
 static int recognize_eye(int pos, int *attack_point, int *defense_point,
-                        char *max, char *min, 
+                        struct eyevalue *value,
                         struct eye_data eye[BOARDMAX],
                         struct half_eye_data heye[BOARDMAX],
                         int add_moves, int color);
 static void guess_eye_space(int pos, int effective_eyesize, int margins,
                            struct eye_data eye[BOARDMAX],
-                           char *max, char *min, char *pessimistic_min);
+                           struct eyevalue *value, char *pessimistic_min);
 static void first_map(int q, int map[MAXEYE]);
 static int next_map(int *q, int map[MAXEYE], int esize);
 static void print_eye(struct eye_data eye[BOARDMAX],
@@ -98,8 +98,8 @@
   eye->esize = 0;
   eye->msize = 0;
   eye->origin = NO_MOVE;
-  eye->maxeye = 0;
-  eye->mineye = 0;
+  eye->value.maxeye = 0;
+  eye->value.mineye = 0;
   eye->attack_point = NO_MOVE;
   eye->defense_point = NO_MOVE;
   eye->marginal = 0;
@@ -592,8 +592,7 @@
       eye[pos].esize         = eye[origin].esize;
       eye[pos].msize         = eye[origin].msize;
       eye[pos].origin        = eye[origin].origin;
-      eye[pos].maxeye        = eye[origin].maxeye;
-      eye[pos].mineye        = eye[origin].mineye;
+      eye[pos].value         = eye[origin].value;
       eye[pos].attack_point  = eye[origin].attack_point;
       eye[pos].defense_point = eye[origin].defense_point;
     }
@@ -744,7 +743,7 @@
  */
 
 void
-compute_eyes(int pos, char *max, char *min,
+compute_eyes(int pos, struct eyevalue *value,
             int *attack_point, int *defense_point,
             struct eye_data eye[BOARDMAX],
             struct half_eye_data heye[BOARDMAX],
@@ -762,12 +761,12 @@
   
   /* First we try to let the life code evaluate the eye space. */
   if (life && eye[pos].esize <= life_eyesize) {
-    char max1, min1;
+    struct eyevalue value1;
     int attack_point1;
     int defense_point1;
     int status;
 
-    if (recognize_eye2(pos, attack_point, defense_point, max, min,
+    if (recognize_eye2(pos, attack_point, defense_point, value,
                       eye, heye, add_moves, color)) {
 
       /* made these printouts contingent on DEBUG_EYES /gf */
@@ -776,12 +775,13 @@
        showboard(2);
        
        status = recognize_eye(pos, &attack_point1, &defense_point1,
-                              &max1, &min1, eye, heye, 0, EMPTY);
+                              &value1, eye, heye, 0, EMPTY);
        
        if (status) {
          gprintf("Number of eyes:  --life: (%d, %d)  old: (%d, %d) at %1m\n", 
-                 *max, *min, max1, min1, pos);
-         if (*min != *max) {
+                 value->maxeye, value->mineye, value1.maxeye, value1.mineye,
+                 pos);
+         if (value->mineye != value->maxeye) {
            gprintf("  vital point:     attack: %1m   defense: %1m\n",
                    *attack_point, *defense_point);
            gprintf("  old vital point: attack: %1m   defense: %1m\n",
@@ -789,8 +789,9 @@
          }
        }
        else {
-         gprintf("Number of eyes:  new: (%d, %d) at %1m\n", *max, *min, pos);
-         if (*min != *max)
+         gprintf("Number of eyes:  new: (%d, %d) at %1m\n",
+                 value->maxeye, value->mineye, pos);
+         if (value->mineye != value->maxeye)
            gprintf("  vital point:   attack: %1m   defense: %1m\n",
                    *attack_point, *defense_point);
        }
@@ -803,7 +804,7 @@
   /* Fall back on the graphs database if the eye is too big or the
    * life code is disabled.
    */
-  if (recognize_eye(pos, attack_point, defense_point, max, min,
+  if (recognize_eye(pos, attack_point, defense_point, value,
                    eye, heye, add_moves, color))
     return;
 
@@ -822,17 +823,17 @@
    * some additional heuristics to guess the values of unknown
    * eyespaces.
    */
-  if (eye[pos].esize-2*eye[pos].msize > 3) {
-    *min = 2;
-    *max = 2;
-  }
-  else if (eye[pos].esize-2*eye[pos].msize > 0) {
-    *min = 1;
-    *max = 1;
+  if (eye[pos].esize - 2*eye[pos].msize > 3) {
+    value->mineye = 2;
+    value->maxeye = 2;
+  }
+  else if (eye[pos].esize - 2*eye[pos].msize > 0) {
+    value->mineye = 1;
+    value->maxeye = 1;
   }
   else {
-    *min = 0;
-    *max = 0;
+    value->mineye = 0;
+    value->maxeye = 0;
   }
 }
 
@@ -844,7 +845,7 @@
  * been removed.
  */
 void
-compute_eyes_pessimistic(int pos, char *max, char *min,
+compute_eyes_pessimistic(int pos, struct eyevalue *value,
                         char *pessimistic_min,
                         int *attack_point, int *defense_point,
                         struct eye_data eye[BOARDMAX],
@@ -897,19 +898,19 @@
   /* First we try to let the life code evaluate the eye space. */
   if (life
       && eye[pos].esize <= life_eyesize
-      && recognize_eye2(pos, attack_point, defense_point, max, min,
+      && recognize_eye2(pos, attack_point, defense_point, value,
                        eye, heye, 0, EMPTY)) {
-    *pessimistic_min = *min - margins;
+    *pessimistic_min = value->mineye - margins;
 
     DEBUG(DEBUG_EYES, "  life - max=%d, min=%d, pessimistic_min=%d\n",
-         *max, *min, *pessimistic_min);
+         value->maxeye, value->mineye, *pessimistic_min);
   }
   /* Fall back on the graphs database if the eye is too big or the
    * life code is disabled.
    */
-  else if (recognize_eye(pos, attack_point, defense_point, max, min,
+  else if (recognize_eye(pos, attack_point, defense_point, value,
                         eye, heye, 0, EMPTY)) {
-    *pessimistic_min = *min - margins;
+    *pessimistic_min = value->mineye - margins;
 
     /* A single point eye which is part of a ko can't be trusted. */
     if (eye[pos].esize == 1
@@ -918,7 +919,7 @@
 
     DEBUG(DEBUG_EYES,
          "  graph matching - max=%d, min=%d, pessimistic_min=%d\n",
-         *max, *min, *pessimistic_min);
+         value->maxeye, value->mineye, *pessimistic_min);
   }
   
   /* Ideally any eye space that hasn't been matched yet should be two
@@ -928,9 +929,9 @@
    */
   else {
     guess_eye_space(pos, effective_eyesize, margins, eye,
-                   max, min, pessimistic_min); 
+                   value, pessimistic_min); 
     DEBUG(DEBUG_EYES, "  guess_eye - max=%d, min=%d, pessimistic_min=%d\n",
-         *max, *min, *pessimistic_min);
+         value->maxeye, value->mineye, *pessimistic_min);
   }
 
   if (*pessimistic_min < 0) {
@@ -948,7 +949,7 @@
   
   if (attack_point
       && *attack_point == NO_MOVE
-      && *max != *pessimistic_min) {
+      && value->maxeye != *pessimistic_min) {
     /* Find one marginal vertex and set as attack and defense point.
      *
      * We make some effort to find the best marginal vertex by giving
@@ -1015,11 +1016,11 @@
 static void
 guess_eye_space(int pos, int effective_eyesize, int margins,
                struct eye_data eye[BOARDMAX],
-               char *max, char *min, char *pessimistic_min)
+               struct eyevalue *value, char *pessimistic_min)
 {
   if (effective_eyesize > 3) {
-    *min = 2;
-    *max = 2;
+    value->mineye = 2;
+    value->maxeye = 2;
     if ((margins == 0 && effective_eyesize > 7)
        || (margins > 0 && effective_eyesize > 9))
       *pessimistic_min = 2;
@@ -1027,19 +1028,19 @@
       *pessimistic_min = 1;
   }
   else if (effective_eyesize > 0) {
-    *min = 1;
-    *max = 1;
+    value->mineye = 1;
+    value->maxeye = 1;
     if (margins > 0)
       *pessimistic_min = 0;
     else
       *pessimistic_min = 1;
   }
   else {
-    *min = 0;
+    value->mineye = 0;
     if (eye[pos].esize - margins > 2)
-      *max = 1;
+      value->maxeye = 1;
     else
-      *max = 0;
+      value->maxeye = 0;
     *pessimistic_min = 0;
   }
 }
@@ -1062,7 +1063,7 @@
 
 static int
 recognize_eye(int pos, int *attack_point, int *defense_point,
-             char *max, char *min, 
+             struct eyevalue *value,
              struct eye_data eye[BOARDMAX], 
              struct half_eye_data heye[BOARDMAX], 
              int add_moves, int color)
@@ -1243,9 +1244,9 @@
 
     /* We have found a match! Now sort out the vital moves. */
     if (q == eye_size) {
-      *max = graphs[graph].max;
-      *min = graphs[graph].min;
-      if (*max != *min) {
+      value->maxeye = graphs[graph].max;
+      value->mineye = graphs[graph].min;
+      if (value->maxeye != value->mineye) {
        /* Collect all attack and defense points in the pattern. */
        int attack_points[4 * MAXEYE];
        int defense_points[4 * MAXEYE];
@@ -1456,10 +1457,10 @@
   int max_black = 0;
   
   if (white_eye[pos].color == WHITE_BORDER)
-    max_white = white_eye[pos].maxeye;
+    max_white = white_eye[pos].value.maxeye;
 
   if (black_eye[pos].color == BLACK_BORDER)
-    max_black = black_eye[pos].maxeye;
+    max_black = black_eye[pos].value.maxeye;
 
   return gg_max(max_white, max_black);
 }
Index: engine/owl.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/owl.c,v
retrieving revision 1.91
diff -u -r1.91 owl.c
--- engine/owl.c        3 Jun 2002 15:00:59 -0000       1.91
+++ engine/owl.c        13 Jun 2002 19:24:43 -0000
@@ -2212,7 +2212,8 @@
   signed char mx[BOARDMAX]; /* mark potential half or false eyes */
   int vital_values[BOARDMAX];
   int true_genus = 0;
-  char max, min, pessimistic_min;
+  struct eyevalue eyevalue;
+  char pessimistic_min;
   int attack_point;
   int defense_point;
   int m, n;
@@ -2378,7 +2379,7 @@
        int value = 0;
        const char *reason = "";
        int i, j;
-       compute_eyes_pessimistic(pos, &max, &min, &pessimistic_min,
+       compute_eyes_pessimistic(pos, &eyevalue, &pessimistic_min,
                                 &attack_point, &defense_point,
                                 eye, owl->half_eye);
        /* If this eyespace includes an owl inessential string, we
@@ -2392,11 +2393,11 @@
              pessimistic_min = 0;
        
        true_genus += pessimistic_min;
-       *probable_min += min;
-       *probable_max += max;
+       *probable_min += eyevalue.mineye;
+       *probable_max += eyevalue.maxeye;
 
-       /* Fill in the maxeye field for use by the owl_eyespace() function. */
-       eye[pos].maxeye = max;
+       /* Fill in the value field for use by the owl_eyespace() function. */
+       eye[pos].value = eyevalue;
        
        /* This shortcut has been disabled for two reasons:
         * 1. Due to the vital attack moves being able to later reduce
@@ -2413,16 +2414,16 @@
        }
 #endif
        
-       if (max != min) {
+       if (eyevalue.maxeye != eyevalue.mineye) {
          value = 50;
-         if (max - min == 2)
+         if (eyevalue.maxeye - eyevalue.mineye == 2)
            value = 70;
-         else if (max - pessimistic_min == 2)
+         else if (eyevalue.maxeye - pessimistic_min == 2)
            value = 60;
          reason = "vital move";
        }
-       else if (max != pessimistic_min) {
-         if (max - pessimistic_min == 2)
+       else if (eyevalue.maxeye != pessimistic_min) {
+         if (eyevalue.maxeye - pessimistic_min == 2)
            value = 40;
          else
            value = 30;
@@ -2438,8 +2439,8 @@
            }
            
            TRACE("%s at %1m, score %d (eye at %1m, max %d, min %d, 
pessimistic_min %d)\n",
-                 reason, attack_point, value, pos, max, min,
-                 pessimistic_min);
+                 reason, attack_point, value,
+                 pos, eyevalue.maxeye, eyevalue.mineye, pessimistic_min);
            
            if (eye[attack_point].marginal
                && modify_stupid_eye_vital_point(&attack_point))
@@ -2487,8 +2488,8 @@
            }
            
            TRACE("%s at %1m, score %d (eye at %1m, max %d, min %d, 
pessimistic_min %d)\n",
-                 reason, defense_point, value, pos, max, min,
-                 pessimistic_min);
+                 reason, defense_point, value, pos,
+                 eyevalue.maxeye, eyevalue.mineye, pessimistic_min);
 
            if (eye[defense_point].marginal
                && modify_stupid_eye_vital_point(&defense_point))
@@ -4416,7 +4417,7 @@
   return (ON_BOARD(origin)
          && (current_owl_data->my_eye[origin].color
              == BORDER_COLOR(current_owl_data->color))
-         && current_owl_data->my_eye[origin].maxeye > 0);
+         && current_owl_data->my_eye[origin].value.maxeye > 0);
 }
 
 
@@ -4434,7 +4435,7 @@
   return (ON_BOARD(origin) 
          && (current_owl_data->my_eye[origin].color
              == BORDER_COLOR(current_owl_data->color))
-         && current_owl_data->my_eye[origin].maxeye == 2);
+         && current_owl_data->my_eye[origin].value.maxeye == 2);
 }
 
 
Index: engine/sgfdecide.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/sgfdecide.c,v
retrieving revision 1.33
diff -u -r1.33 sgfdecide.c
--- engine/sgfdecide.c  22 May 2002 19:22:25 -0000      1.33
+++ engine/sgfdecide.c  13 Jun 2002 19:24:43 -0000
@@ -545,7 +545,7 @@
 decide_eye(int pos, const char *sgf_output)
 {
   int color;
-  char max, min;
+  struct eyevalue value;
   int attack_point;
   int defense_point;
   int eyepos;
@@ -576,20 +576,23 @@
   
   if (black_eye[pos].color == BLACK_BORDER) {
     eyepos = black_eye[pos].origin;
-    compute_eyes(eyepos, &max, &min, &attack_point, &defense_point,
+    compute_eyes(eyepos, &value, &attack_point, &defense_point,
                 black_eye, half_eye, 0, EMPTY);
-    gprintf("Black eyespace at %1m: min=%d, max=%d\n", eyepos, min, max);
-    if (max != min) {
+    gprintf("Black eyespace at %1m: min=%d, max=%d\n", eyepos,
+           value.mineye, value.maxeye);
+    if (value.maxeye != value.mineye) {
       gprintf("  vital points: %1m (attack) %1m (defense)\n", attack_point,
              defense_point);
     }
   }
+  
   if (white_eye[pos].color == WHITE_BORDER) {
     eyepos = white_eye[pos].origin;
-    compute_eyes(eyepos, &max, &min, &attack_point, &defense_point,
+    compute_eyes(eyepos, &value, &attack_point, &defense_point,
                 white_eye, half_eye, 0, EMPTY);
-    gprintf("White eyespace at %1m: min=%d, max=%d\n", eyepos, min, max);
-    if (max != min) {
+    gprintf("White eyespace at %1m: min=%d, max=%d\n", eyepos,
+           value.mineye, value.maxeye);
+    if (value.maxeye != value.mineye) {
       gprintf("  vital points: %1m (attack) %1m (defense)\n", attack_point,
              defense_point);
     }
Index: interface/play_gtp.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/interface/play_gtp.c,v
retrieving revision 1.76
diff -u -r1.76 play_gtp.c
--- interface/play_gtp.c        22 May 2002 19:22:25 -0000      1.76
+++ interface/play_gtp.c        13 Jun 2002 19:24:43 -0000
@@ -1455,7 +1455,7 @@
 gtp_eval_eye(char *s, int id)
 {
   int m, n;
-  char max, min;
+  struct eyevalue value;
   int attack_point;
   int defense_point;
   int pos;
@@ -1467,12 +1467,12 @@
   
   if (black_eye[POS(m, n)].color == BLACK_BORDER) {
     pos = black_eye[POS(m, n)].origin;
-    compute_eyes(pos, &max, &min, &attack_point, &defense_point,
+    compute_eyes(pos, &value, &attack_point, &defense_point,
                 black_eye, half_eye, 0, EMPTY);
   }
   else if (white_eye[POS(m, n)].color == WHITE_BORDER) {
     pos = white_eye[POS(m, n)].origin;
-    compute_eyes(pos, &max, &min, &attack_point, &defense_point,
+    compute_eyes(pos, &value, &attack_point, &defense_point,
                 white_eye, half_eye, 0, EMPTY);
   }
   else
@@ -1480,8 +1480,8 @@
     return gtp_success(id, "-1");
 
   gtp_printid(id, GTP_SUCCESS);
-  gtp_printf("%d %d", min, max);
-  if (max != min) {
+  gtp_printf("%d %d", value.mineye, value.maxeye);
+  if (value.maxeye != value.mineye) {
     gtp_printf(" ");
     gtp_print_vertex(I(attack_point), J(attack_point));
     gtp_printf(" ");
Index: interface/debugboard/gui.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/interface/debugboard/gui.c,v
retrieving revision 1.16
diff -u -r1.16 gui.c
--- interface/debugboard/gui.c  16 May 2002 19:14:41 -0000      1.16
+++ interface/debugboard/gui.c  13 Jun 2002 19:24:43 -0000
@@ -397,9 +397,9 @@
   gg_wprintw(info_window, "%d  ", eyedata[pos].marginal);
 
   wmove(info_window, 4, 55);
-  gg_wprintw(info_window, "%d ", eyedata[pos].maxeye);
+  gg_wprintw(info_window, "%d ", eyedata[pos].value.maxeye);
   wmove(info_window, 5, 55);
-  gg_wprintw(info_window, "%d ", eyedata[pos].mineye);
+  gg_wprintw(info_window, "%d ", eyedata[pos].value.mineye);
 
   wmove(info_window, 6, 55);
   if (eyedata[pos].attack_point == NO_MOVE)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]