Ticket #43: nando_7_8.2.diff

File nando_7_8.2.diff, 1.9 kB (added by nando, 3 years ago)

If necessary and possible, select a new origin after an OWL cut occured

  • engine/owl.c

    RCS file: /cvsroot/gnugo/gnugo/engine/owl.c,v
    retrieving revision 1.237
    diff -u -r1.237 owl.c
     
    231231                        struct local_owl_data *owl); 
    232232static void eat_lunch_escape_bonus(int lunch, int *min, int *probable, 
    233233                                   int *max, struct local_owl_data *owl); 
     234static int select_new_goal_origin(int origin, struct local_owl_data *owl); 
    234235static void compute_owl_escape_values(struct local_owl_data *owl); 
    235236static int owl_escape_route(struct local_owl_data *owl); 
    236237static void do_owl_analyze_semeai(int apos, int bpos,  
     
    20852086       */ 
    20862087      if (IS_STONE(board[str])) 
    20872088        origin = str; 
    2088       else { 
    2089         int pos; 
    2090         origin = NO_MOVE; 
    2091         for (pos = BOARDMIN; pos < BOARDMAX; pos++) { 
    2092           if (board[pos] == color && owl->goal[pos] == 1) { 
    2093             origin = find_origin(pos); 
    2094             break; 
    2095           } 
    2096         } 
    2097       } 
     2089      else 
     2090        origin = select_new_goal_origin(NO_MOVE, owl); 
    20982091 
    20992092      /* Test whether the move cut the goal dragon apart. */ 
    2100       if (moves[k].cuts[0] != NO_MOVE) 
     2093      if (moves[k].cuts[0] != NO_MOVE) { 
    21012094        owl_test_cuts(owl->goal, owl->color, moves[k].cuts); 
     2095        if (!owl->goal[origin]) 
     2096          origin = select_new_goal_origin(origin, owl); 
     2097      } 
    21022098      mark_goal_in_sgf(owl->goal); 
    21032099 
    21042100      if (origin == NO_MOVE) 
     
    62286224} 
    62296225 
    62306226  
     6227/* Find a new origin when it has been captured or cut out of the 
     6228 * goal. Used in do_owl_attack() 
     6229 */ 
     6230static int 
     6231select_new_goal_origin(int origin, struct local_owl_data *owl) 
     6232{ 
     6233  int pos; 
     6234  for (pos = BOARDMIN; pos < BOARDMAX; pos++) 
     6235    if (board[pos] == owl->color && owl->goal[pos] == 1) 
     6236      return find_origin(pos); 
     6237 
     6238  return origin; 
     6239} 
     6240 
     6241 
    62316242/* Retrieve topological eye values stored in the half_eye[] array of 
    62326243 * the current owl data. 
    62336244 *