|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 5685 (0x1635) Types: TextFile Names: »score.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/X/Xtetris/score.c«
#include "defs.h" update_highscore_table() { /* This version only allows 1 entry in the HIGH SCORE TABLE per user */ int i, j; long when; extern char *ctime(); extern long time(); char hostname[20]; char buf[BUFSIZ]; /* re-read high-score table in case someone else on the network is * playing at the same time */ read_high_scores(); /* Check for previous best score */ for (i = 0; (i < HIGH_TABLE_SIZE) && (strcmp(name, high_scores[i].name) != 0); i++); if (i < HIGH_TABLE_SIZE) { if (high_scores[i].score >= score) return; /* Same/worse score - no update */ for (j = i; j > 0; j--) /* Remove previous best */ high_scores[j] = high_scores[j - 1]; } /* Next line finds score greater than current one */ for (i = 0; ((i < HIGH_TABLE_SIZE) && (score >= high_scores[i].score)); i++); i--; if (i >= 0) { for (j = 0; j < i; j++) high_scores[j] = high_scores[j + 1]; strcpy(high_scores[i].name, name); high_scores[i].score = score; high_scores[i].rows = rows; high_scores[i].level = rows / 10; if (gethostname(hostname, BUFSIZ) == -1) strcpy(high_scores[i].hostname, "unknown-host"); else strcpy(high_scores[i].hostname, hostname); time(&when); strcpy(buf, ctime(&when)); /* ctime() adds a newline * char */ strip_eoln(buf); /* so remove it */ strcpy(high_scores[i].date, buf); write_high_scores(); } } read_high_scores() { FILE *fp; int i; char *c, buf[BUFSIZ]; for (i = 0; i < HIGH_TABLE_SIZE; i++) { strcpy(high_scores[i].name, " "); high_scores[i].score = 0; high_scores[i].rows = 0; high_scores[i].level = 0; strcpy(high_scores[i].hostname, " "); strcpy(high_scores[i].date, " "); } if ((fp = fopen(HIGH_SCORE_TABLE, "r")) == NULL) { fprintf(stderr, "tetris: No High score file\n"); return; } for (i = 0; i < HIGH_TABLE_SIZE; i++) { fgets(buf, BUFSIZ, fp); strip_eoln(buf); strcpy(high_scores[i].name, buf); fgets(buf, BUFSIZ, fp); strip_eoln(buf); high_scores[i].score = atoi(buf); fgets(buf, BUFSIZ, fp); strip_eoln(buf); high_scores[i].rows = atoi(buf); fgets(buf, BUFSIZ, fp); strip_eoln(buf); high_scores[i].level = atoi(buf); fgets(buf, BUFSIZ, fp); strip_eoln(buf); strcpy(high_scores[i].hostname, buf); fgets(buf, BUFSIZ, fp); strip_eoln(buf); strcpy(high_scores[i].date, buf); } fclose(fp); } strip_eoln(s) char *s; { char *s1; while (*s != '\0') { if (*s == '\n') { /* End of line char */ s1 = s; do { *s1 = *(s1 + 1); /* Copy rest of string */ s1++; } while (*s1 != '\0'); } else s++; } } write_high_scores() { FILE *fp; int i; if ((fp = fopen(HIGH_SCORE_TABLE, "w")) == NULL) { fprintf(stderr, "tetris: Couldn't open high score file %s\n", HIGH_SCORE_TABLE); return; } for (i = 0; i < HIGH_TABLE_SIZE; i++) fprintf(fp, "%s\n%d\n%d\n%d\n%s\n%s\n", high_scores[i].name, high_scores[i].score, high_scores[i].rows, high_scores[i].level, high_scores[i].hostname, high_scores[i].date); fclose(fp); } void print_high_scores() { int i,j; char buf[BUFSIZ]; /* re-read high-score table in case someone else on the network is * playing at the same time */ read_high_scores(); for (i = HIGH_TABLE_SIZE - 1; i >= 0; i--) { sprintf(buf, "%3d) %-15s %6d %5d %3d %-10s %s \n", HIGH_TABLE_SIZE - i, high_scores[i].name, high_scores[i].score, high_scores[i].rows, high_scores[i].level, high_scores[i].hostname, high_scores[i].date); j=0; XtSetArg(args[j], XtNstring, buf); j++; XtSetValues(high_score_item[HIGH_TABLE_SIZE - i],args,j); } XtPopup(score_frame, XtGrabExclusive); } print_authors() { printf("This version of Tetris was written by Didier Tallot <tallot@bdblues.altair.fr>\nfor X windows with the HP Widgets set.\n"); printf("Based on the version by Phill Everson <everson@cs.bris.ac.uk>\nand Martyn Shortley <shortley@cs.bris.ac.uk>,\n"); printf("Based on the version posted to comp.sources.games by Adam Marguilies <vespa@ssyx.ucsc.edu>\n\nLet us know if you like it.\n"); }