void PGNReadFromFile (const char *file) /**************************************************************************** * * To read a game from a PGN file. * ****************************************************************************/ { FILE *fp; fp = fopen (file, "r"); if (fp == NULL) { printf ("Cannot open file %s\n", file); return; } yyin = fp; InitVars (); data_dest = DEST_GAME; (void) yylex(); fclose (fp); ShowBoard (); TTClear (); }
void PGNReadFromFile (const char *file) /**************************************************************************** * * To read a game from a PGN file. * ****************************************************************************/ { FILE *fp; char s[100], c, wmv[8], bmv[8]; int moveno; leaf *p; fp = fopen (file, "r"); if (fp == NULL) { printf ("Cannot open file %s\n", file); return; } /* Skip all the tags */ do { if ((c = fgetc (fp)) == '[') fgets (s, 100, fp); } while (c == '['); ungetc (c, fp); InitVars (); while (!feof (fp)) { c = fgetc(fp); if (c == '*') break; ungetc (c, fp); fscanf (fp, "%d. %7s %7s ", &moveno, wmv, bmv); p = ValidateMove (wmv); if (!p) { printf ("Illegal move %d. %s\n", moveno, wmv); break; } MakeMove (white, &p->move); strcpy (Game[GameCnt].SANmv, wmv); if (*bmv == '*' ) break; p = ValidateMove (bmv); if (!p) { printf ("Illegal move %d. ... %s\n", moveno, bmv); break; } MakeMove (black, &p->move); strcpy (Game[GameCnt].SANmv, bmv); } printf ("%d\n", GameCnt); fclose (fp); ShowBoard (); TTClear (); return; }