home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1995 August / NEBULA.mdf / Apps / Games / NeXTGo / Source / exambord.c < prev    next >
Encoding:
C/C++ Source or Header  |  1977-12-27  |  2.9 KB  |  112 lines

  1. /*
  2.   GNU GO - the game of Go (Wei-Chi)
  3.   Version 1.1   last revised 3-1-89
  4.   Copyright (C) Free Software Foundation, Inc.
  5.   written by Man L. Li
  6.   modified by Wayne Iba
  7.   documented by Bob Webber
  8.   NeXT version by John Neil
  9.   */
  10. /*
  11.   This program is free software; you can redistribute it and/or modify
  12.   it under the terms of the GNU General Public License as published by
  13.   the Free Software Foundation - version 1.
  14.   
  15.   This program is distributed in the hope that it will be useful,
  16.   but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.   GNU General Public License in file COPYING for more details.
  19.   
  20.   You should have received a copy of the GNU General Public License
  21.   along with this program; if not, write to the Free Software
  22.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  23.   
  24.   Please report any bug/fix, modification, suggestion to
  25.   
  26.   mail address:   Man L. Li
  27.   Dept. of Computer Science
  28.   University of Houston
  29.   4800 Calhoun Road
  30.   Houston, TX 77004
  31.   
  32.   e-mail address: manli@cs.uh.edu         (Internet)
  33.   coscgbn@uhvax1.bitnet   (BITNET)
  34.   70070,404               (CompuServe)
  35.  
  36. For the NeXT version, please report any bug/fix, modification, suggestion to
  37.  
  38. mail address:   John Neil
  39.                 Mathematics Department
  40.                 Portland State University
  41.                 PO Box 751
  42.                 Portland, OR  97207
  43.  
  44. e-mail address: neil@math.mth.pdx.edu  (Internet)
  45.                 neil@psuorvm.bitnet    (BITNET)
  46.   */
  47.  
  48. #define EMPTY 0
  49. #define BLACKSTONE 2
  50.  
  51. extern unsigned char p[19][19], l[19][19];
  52. extern int MAXX, MAXY;
  53. extern int currentStone, opposingStone, whiteCaptured, blackCaptured;
  54. extern int whiteCapturedKoI, whiteCapturedKoJ, blackCapturedKoI, blackCapturedKoJ;
  55. extern void eval(int color);
  56.  
  57. void examboard(int color)
  58.      /* examine pieces */
  59. {
  60.   int i, j, n;
  61.   
  62.   /* find liberty of each piece */
  63.   eval(color);
  64.   
  65.   /* initialize piece captured */
  66.   if (color == BLACKSTONE)
  67.     {
  68.       blackCapturedKoI = -1;
  69.       blackCapturedKoJ = -1;
  70.     }
  71.   else
  72.     {
  73.       whiteCapturedKoI = -1;
  74.       whiteCapturedKoJ = -1;
  75.     }
  76.   n = 0; /* The number of captures this move for Ko purposes */
  77.   
  78.   /* remove all piece of zero liberty */
  79.   for (i = 0; i < MAXX; i++)
  80.     for (j = 0; j < MAXY; j++)
  81.       if ((p[i][j] == color) && (l[i][j] == 0))
  82.     {
  83.       p[i][j] = EMPTY;
  84.       /* record piece captured */
  85.       if (color == BLACKSTONE)
  86.         {
  87.           blackCapturedKoI = i;
  88.           blackCapturedKoJ = j;
  89.           ++blackCaptured;
  90.         }
  91.       else
  92.         {
  93.           whiteCapturedKoI = i;
  94.           whiteCapturedKoJ = j;
  95.           ++whiteCaptured;
  96.         }
  97.       ++n;  /* increment number of captures on this move */
  98.     }
  99.   /* reset to -1 if more than one stone captured since  no Ko possible */
  100.   if ((color == BLACKSTONE) && (n > 1))
  101.     {
  102.       blackCapturedKoI = -1;
  103.       blackCapturedKoJ = -1;
  104.     }
  105.   else if ( n > 1 )
  106.     {
  107.       whiteCapturedKoI = -1;
  108.       whiteCapturedKoJ = -1;
  109.     }
  110. }  /* end examboard */
  111.  
  112.