void DBUpdatePlayer (const char *player, const char *resultstr) { const char *p; char *x; int index; int result = R_NORESULT; memset(lname,0,sizeof(lname)); p = player; x = lname; strcpy(lname,player); do { if (*p != ' ') *x++ = *p++; else p++; } while (*p != '\0'); *x = '\000'; memset(playerdb,0,sizeof(playerdb[MAXPLAYERS])); DBReadPlayer (); index = DBSearchPlayer (lname); if (index == -1) { strcpy(playerdb[totalplayers].player,lname); playerdb[totalplayers].wins = 0; playerdb[totalplayers].losses = 0; playerdb[totalplayers].draws = 0; index = totalplayers; totalplayers++; } if (strncmp(resultstr,"1-0",3) == 0) result = R_WHITE_WINS; else if (strncmp(resultstr,"0-1",3) == 0) result = R_BLACK_WINS; else if (strncmp(resultstr,"1/2-1/2",7) == 0) result = R_DRAW; if ((computerplays == white && result == R_WHITE_WINS)|| (computerplays == black && result == R_BLACK_WINS)) playerdb[index].wins++; else if ((computerplays == white && result == R_BLACK_WINS)|| (computerplays == black && result == R_WHITE_WINS)) playerdb[index].losses++; else /* Shouln't one check for draw here? Broken PGN files surely exist */ playerdb[index].draws++; DBWritePlayer (); }
void DBListPlayer (const char *style) { int i; DBReadPlayer (); DBSortPlayer (style); for (i = 0; i < totalplayers; i++) { printf("%s %2.0f%% %d %d %d\n", playerdb[i].player, 100.0*(playerdb[i].wins+((float)playerdb[i].draws/2))/ (playerdb[i].wins+playerdb[i].draws+playerdb[i].losses), playerdb[i].wins, playerdb[i].losses, playerdb[i].draws); if ((i+1) % 10 == 0) {printf("[Type a character to continue.]\n"); getchar();} } }