home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / OPENSTEP / Games / NeXTGo-3.0-MIS / findsavr.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-06  |  1.1 KB  |  50 lines

  1. #include "comment.header"
  2.  
  3. /* $Id: findsavr.c,v 1.3 1997/07/06 19:34:58 ergo Exp $ */
  4.  
  5. /*
  6.  * $Log: findsavr.c,v $
  7.  * Revision 1.3  1997/07/06 19:34:58  ergo
  8.  * actual version
  9.  *
  10.  * Revision 1.2  1997/05/04 18:57:02  ergo
  11.  * added time control for moves
  12.  *
  13.  */
  14.  
  15. extern unsigned char p[19][19], l[19][19];
  16. extern int currentStone, MAXX, MAXY;
  17. extern void initmark();
  18. extern int findnextmove(int,int,int*,int*,int*,int);
  19.  
  20. int findsaver(int *i, int *j, int *val)
  21.      /* find move if any pieces are threatened */
  22. {
  23.   int m, n, minlib;
  24.   int ti, tj, tval;
  25.   
  26.   *i = -1;   *j = -1;     *val = -1;
  27.   for (minlib = 1; minlib < 4; minlib++)
  28.     {
  29.       /* count piece with minimum liberty */
  30.       for (m = 0; m < MAXX; m++)
  31.     for (n = 0; n < MAXY; n++)
  32.       if ((p[m][n] == currentStone) && (l[m][n] == minlib))
  33.         /* find move to save pieces */
  34.         {
  35.           initmark();
  36.           if (findnextmove(m, n, &ti, &tj, &tval, minlib) && (tval > *val))
  37.         {
  38.           *val = tval;
  39.           *i = ti;
  40.           *j = tj;
  41.         }
  42.         }
  43.     }
  44.   if (*val > 0)   /* find move */
  45.     return 1;
  46.   else        /* move not found */
  47.     return 0;
  48. }  /* findsaver */
  49.  
  50.