#include void main(int argc, char *argv[]) { int i, n = 0; printf("%%!PS-Adobe-2.0 EPSF-2.0\n"); printf("%%%%BoundingBox: 0 0 360 360\n"); printf("%%%%Title: Go game\n"); printf("/dot{0.1 sub exch 0.1 sub exch moveto 0 0.2 rlineto\n"); printf("0.2 0 rlineto 0 -0.2 rlineto closepath fill}def\n"); printf("/w{p gt{pop pop}{0.4 0 360 arc closepath gsave \n"); printf("1 1 1 setrgbcolor eofill grestore stroke}ifelse}def\n"); printf("/b{p gt{pop pop}{0.4 0 360 arc closepath gsave fill\n"); printf("grestore stroke}ifelse}def\n"); printf("/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2\n"); printf("roll mul 4 -2 roll mul setrgbcolor}bind def\n"); printf("/e{p gt {pop pop}{/y exch def /x exch def\n"); printf("x y 0.5 0 360 arc closepath 1 1 1 setrgbcolor\n"); printf("fill 0 0 0 setrgbcolor\n"); printf("x 0.55 sub 1 max y moveto x 0.55 add 9 min y lineto stroke\n"); printf("x y 0.55 sub 1 max moveto x y 0.55 add 9 min lineto stroke\n"); printf("x 3 eq x 7 eq or y 3 eq y 7 eq or and{x y dot}if}ifelse}def\n"); printf("/c{p eq {/ct exch def}{pop}ifelse}def\n"); printf("/g{/p exch def gsave /ct()def\n"); printf("30 30 scale 1 1 translate .01 setlinewidth\n"); printf("1 1 9{1 moveto 0 8 rlineto stroke}for\n"); printf("1 1 9{1 exch moveto 8 0 rlineto stroke}for\n"); printf("3 3 dot 3 7 dot 7 3 dot 7 7 dot\n"); while (!feof(stdin)) { char buffer[81]; char ch = (char)fgetc(stdin); int i = 0; while (!feof(stdin) && ch != '\n') { if (i < 80) buffer[i++] = ch; ch = (char)fgetc(stdin); } buffer[i] = '\0'; if (!strncmp(buffer, "B ", 2)) { int p = 0; for (i = 1; buffer[i] == ' '; i++); while (isdigit(buffer[i])) p = p * 10 + buffer[i++] - '0'; n = p; for (; buffer[i] == ' '; i++); if (strcmp(buffer + i, "Pass")) { int x = buffer[i] > 'I' ? buffer[i] - 'A' : buffer[i] - 'A' + 1; int y = buffer[i + 1] - '0'; printf("%d %d %d b\n", x, y, n); } } else if (!strncmp(buffer, "W ", 2)) { int p = 0; for (i = 1; buffer[i] == ' '; i++); while (isdigit(buffer[i])) p = p * 10 + buffer[i++] - '0'; n = p; for (; buffer[i] == ' '; i++); if (strcmp(buffer + i, "Pass")) { int x = buffer[i] > 'I' ? buffer[i] - 'A' : buffer[i] - 'A' + 1; int y = buffer[i + 1] - '0'; printf("%d %d %d w\n", x, y, n); } } else if (!strncmp(buffer, "PRISONER ", 9)) { for (i = 8; buffer[i] == ' '; i++); { int x = buffer[i] > 'I' ? buffer[i] - 'A' : buffer[i] - 'A' + 1; int y = buffer[i + 1] - '0'; printf("%d %d %d e\n", x, y, n); } } else if (!strncmp(buffer, "C ", 2)) printf("(%s) %d c\n", buffer + 2, n); else printf("%% buffer: %s\n", buffer); } printf("/Times-Roman findfont 0.5 scalefont setfont\n"); printf("1 0 moveto ct show\n"); printf("grestore showpage} bind def\n"); printf("%%%%EndProlog\n"); for (i = 1; i <= n; i++) printf("%%%%Page: %d %d\n%d g\n", i, i, i); printf("%%%%EOF\n"); }