blob: b59c81d594b527ff5c4c4fb3ac4b1b0eaa8aa21f [file] [log] [blame]
/*
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>
#include <string.h>
#define EMPTY 0
extern unsigned char p[19][19];
extern int mymove, umove;
extern int mk, uk; /* piece captured */
extern int getij(char move[], int *i, int *j);
extern void showboard(void);
extern int findcolor(int i, int j);
void endgame(void)
/* 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 */