www.delorie.com/gnu/docs/gnugo/gnugo_125.html search
GNU Go Documentation

 [ < ] [ > ] [ << ] [ Up ] [ >> ] [Top] [Contents] [Index] [ ? ]

10.6 Half Eyes and False Eyes

A half eye is a place where, if the defender plays first, an eye will materialize, but where if the attacker plays first, no eye will materialize. A false eye is a vertex which is surrounded by a dragon yet is not an eye. Here is a half eye:

 ```XXXXX OO..X O.O.X OOXXX ```

Here is a false eye:

 ```XXXXX XOO.X O.O.X OOXXX ```

The "topological" algorithm for determining half and false eyes is described elsewhere (see section 11.7 Topology of Half Eyes and False Eyes).

The half eye data is collected in the dragon array. Before this is done, however, an auxiliary array called half_eye_data is filled with information. The field `type` is 0, or else `HALF_EYE` or `FALSE_EYE` depending on which type is found; the fields `attack_point[]` point to up to 4 points to attack the half eye, and similarly `defense_point[]` gives points to defend the half eye.

 ```struct half_eye_data half_eye[MAX_BOARD]; struct half_eye_data { float value; /* Topological eye value */ int type; /* HALF_EYE or FALSE_EYE */ int num_attacks; /* Number of attacking points */ int attack_point[4]; /* The moves to attack a topological halfeye */ int num_defends; /* Number of defending points */ int defense_point[4]; /* The moves to defend a topological halfeye */ }; ```

The array `struct half_eye_data half_eye[MAX_BOARD]` contains information about half and false eyes. If the type is `HALF_EYE` then up to four moves are recorded which can either attack or defend the eye. In rare cases the attack points could be different from the defense points.

 webmaster delorie software   privacy Copyright © 2003   by The Free Software Foundation Updated Jun 2003