ftp.nice.ch/pub/next/unix/games/gnugo.1.1.s.tar.gz#/gnugo/endgame.c

This is endgame.c in view mode; [Download] [Up]

/*
                GNU GO - the game of Go (Wei-Chi)
                Version 1.1   last revised 3-1-89
           Copyright (C) Free Software Foundation, Inc.
                      written by Man L. Li
                      modified by Wayne Iba
                    documented by Bob Webber
*/
/*
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation - version 1.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License in file COPYING for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Please report any bug/fix, modification, suggestion to

mail address:   Man L. Li
                Dept. of Computer Science
                University of Houston
                4800 Calhoun Road
                Houston, TX 77004

e-mail address: manli@cs.uh.edu         (Internet)
                coscgbn@uhvax1.bitnet   (BITNET)
                70070,404               (CompuServe)
*/

#include <stdio.h>

#define EMPTY 0

extern unsigned char p[19][19];
extern int mymove, umove;
extern int mk, uk;  /* piece captured */

endgame()
/* count pieces and announce the winner */
{
 char an[10];
 int i, j, mtot, utot, cont;

 printf("\nTo count score, we need the following steps:\n");
 printf("First, I need you to remove all dead pieces on the board.\n");
 printf("Second, I need you to fill in neutral territories with ");
 printf("pieces.\n");
 printf("Last, I will fill in all pieces and anounce the winner.\n");

/* remove dead pieces */
 printf("\nFirst, you should enter the dead pieces (blank and white) to");
 printf(" be removed.  Enter\n");
 printf(" 'stop' when you have finished.\n");

 cont = 1;
 do {
     printf("Dead piece? ");
     scanf("%s", an);
     if (strcmp(an, "stop"))
       {
	getij(an, &i, &j);
	if (p[i][j] == mymove)
	  {
	   p[i][j] = EMPTY;
	   mk++;
	 }
	else
	   if (p[i][j] == umove)
	     {
	      p[i][j] = EMPTY;
	      uk++;
	    }
	showboard();
      }
    else
       cont = 0;
   }
 while (cont);

/* fill in neutral */
 printf("Next, you need to fill in pieces (black and white) in all neutral");
 printf(" territories.\n");
 printf("Enter your and my pieces alternately and enter 'stop' when finish\n");
 cont = 1;

 do {
     printf("Your piece? ");
     scanf("%s", an);
     if (strcmp(an, "stop"))
       {
	getij(an, &i, &j);
	p[i][j] = umove;
	printf("My piece? ");
	scanf("%s", an);
	getij(an, &i, &j);
	p[i][j] = mymove;
	showboard();
      }
     else
	cont = 0;
   }
  while (cont);

/* set empty to side they belong to */
  for (i = 0; i < 19; i++)
     for (j = 0; j < 19; j++)
	if (p[i][j] == EMPTY)
	   p[i][j] = findcolor(i, j);

/* count total */
  mtot = 0;  utot = 0;
  for (i = 0; i < 19; i++)
     for (j = 0; j < 19; j++)
	if (p[i][j] == mymove)
	  ++mtot;
	else
	   if (p[i][j] == umove)
	     ++utot;

  showboard();
  printf("Your total number of pieces %d\n", utot);
  printf("My total number of pieces %d\n", mtot);

}  /* end endgame */

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.