DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T s

⟦075a70afc⟧ TextFile

    Length: 2198 (0x896)
    Types: TextFile
    Names: »strength.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/X/Xgo/strength.c« 

TextFile

/*
 * $Header: strength.c,v 1.3 88/02/19 13:49:15 hale Exp $
 */

#include "go.h"
#include <pwd.h>

FILE *strfile;
char filename[500];
extern int strength,opponstr;
extern float wins;

GetStr()
{
	int id;
	struct passwd *pw;
	char *dir;
	id=geteuid();
	pw=getpwuid(id);
	dir = pw->pw_dir;
	strcpy(filename,dir);
	strcat(filename,GOFILE);
	/* fprintf(stderr,"FILENAME:%s\n",filename); */
	if ((strfile = fopen(filename, "r")) != NULL) {
		fscanf(strfile,"%d",&strength);
		fscanf(strfile,"%f",&wins);
		fclose(strfile);
	} else {
		strength = 0;
		wins = 0.0;
	}

}




savestr()
{
	float getdelta(), newwins;
	newwins = getdelta();
	if (newwins * wins < 0.0) wins = newwins;
	else wins += newwins;
	savestr0();
}

savestr0()
{
	if ((strfile=fopen(filename, "w")) != NULL) {
	    if ((wins >= WINSUP && strength < MAXSTR)) {
		fprintf(strfile,"%d 0.0\n", strength+1);
	    } else if ((wins <= -WINSUP && strength > 1)) {
		fprintf(strfile,"%d 0.0\n", strength-1);
	    } else {
		fprintf(strfile,"%d %f\n", strength,wins);
	    }
	    fclose(strfile);
	}
}


float getdelta()
{
	if (iwon) {		/* i won */
		if (strength < opponstr)	/* i'm weaker */
			return ( (opponstr - strength)/10.0 +1.0);
		else
			return ( ((strength - opponstr) > 20) ? 2.0 : 1.0);
	} else {
		if (strength < opponstr)
			return (-1.0);
		else
			return ( -((strength - opponstr)/20.0+1.0) );
	}
}

showstr()
{
	GetStr();
	if (strength < 31) {
		printf("Your strength is about: %d kyu.\n", 31-strength);
	} else if (strength < 40) {
		printf("Your strength is about: %d dan.\n", strength-30);
	} else if (strength < MAXSTR+1) {
		printf("Your strength is about: %d professional dan.\n", strength-39);
	} else {
		printf("Your are at maximum strength.\n");
	}
	if (wins>=0) printf("You have also won %d games in a row.\n",(int)(wins/2.0));
	else printf("You have also lost %d games in a row.\n",-(int)(wins));
}
/*
 * $Log:	strength.c,v $
 * Revision 1.3  88/02/19  13:49:15  hale
 * Added io changes for loading games.
 * Load game is cleaned up.  Variable board
 * sizes and formats available in save game
 * as well as printed comments.
 * 
 * Revision 1.2  88/02/13  12:52:11  hale
 * modified strength function.
 * 
 */