|
|
1.1 root 1:
2: /* This file contains code for X-CHESS.
3: Copyright (C) 1986 Free Software Foundation, Inc.
4:
5: This file is part of X-CHESS.
6:
7: X-CHESS is distributed in the hope that it will be useful,
8: but WITHOUT ANY WARRANTY. No author or distributor
9: accepts responsibility to anyone for the consequences of using it
10: or for whether it serves any particular purpose or works at all,
11: unless he says so in writing. Refer to the X-CHESS General Public
12: License for full details.
13:
14: Everyone is granted permission to copy, modify and redistribute
15: X-CHESS, but only under the conditions described in the
16: X-CHESS General Public License. A copy of this license is
17: supposed to have been given to you along with X-CHESS so you
18: can know your rights and responsibilities. It should be in a
19: file named COPYING. Among other things, the copyright notice
20: and this notice must be preserved on all copies. */
21:
22:
23: /* RCS Info: $Revision: 1.2 $ on $Date: 89/04/28 08:44:02 $
24: * $Source: /usr/local/src/source/X.V11R3/contrib/games/xchess/Xchess/RCS/xchess.c,v $
25: * Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
26: * Permission is granted to do anything with this code except sell it
27: * or remove this message.
28: */
29:
30: #define USAGE "xchess [ -d ] [ -f recordfile ] [ -r savedfile ] [ -i ]\n\
31: \t[ -t moves/timeunit ] [ -c ] [ -p program ] [ -b ] [ -bnw ] [ -s ]\n\
32: \t[ -n ] [ -h host ] [ -v ] [ -R ] [ whitedisplay ] [ blackdisplay ]"
33:
34: #include <signal.h>
35: #include "xchess.h"
36:
37: bool debug = false;
38: bool oneboard = false;
39: bool bnwflag = false;
40: bool progflag = false;
41: bool blackflag = false;
42: bool quickflag = false;
43:
44: char *progname = DEF_PROGRAM;
45: char *proghost = NULL;
46: char *piecenames[] = { "pawn", "rook", "knight", "bishop", "queen", "king" } ;
47: char *colornames[] = { "white", "black", "none" } ;
48: char *movetypenames[] = { "move", "qcastle", "kcastle", "capture" } ;
49: char *dispname1 = NULL, *dispname2 = NULL;
50:
51: char *black_piece_color = BLACK_PIECE_COLOR;
52: char *white_piece_color = WHITE_PIECE_COLOR;
53: char *black_square_color = BLACK_SQUARE_COLOR;
54: char *white_square_color = WHITE_SQUARE_COLOR;
55: char *border_color = BORDER_COLOR;
56: char *text_color = TEXT_COLOR;
57: char *text_back = TEXT_BACK;
58: char *error_text = ERROR_TEXT;
59: char *player_text = PLAYER_TEXT;
60: char *cursor_color = CURSOR_COLOR;
61:
62: int num_flashes = NUM_FLASHES;
63: int flash_size = FLASH_SIZE;
64: char *program;
65: char *recfile = NULL;
66:
67: #ifdef notdef
68: /*
69: * Serves no purpose.
70: */
71: die () {
72: fprintf(stderr, "child proc changed status?!\n");
73: }
74: #endif
75:
76: void
77: main(ac, av)
78: char **av;
79: {
80: bool randflag = false;
81: move *m;
82: char *s;
83:
84: program = av[0];
85:
86: #ifdef notdef
87: signal(SIGCHLD, die);
88: #endif
89:
90: /* Process args. */
91: av++; ac--;
92: while (ac > 0 && **av == '-') {
93: if (eq(*av, "-d")) {
94: debug = true;
95: } else if (eq(*av, "-f")) {
96: av++; ac--;
97: if (*av)
98: record_file = *av;
99: else
100: goto usage;
101: } else if (eq(*av, "-r")) {
102: av++; ac--;
103: if (*av)
104: recfile = *av;
105: else
106: goto usage;
107: } else if (eq(*av, "-i")) {
108: record_english = false;
109: } else if (eq(*av, "-R")) {
110: randflag = true;
111: } else if (eq(*av, "-v")) {
112: win_flashmove = true;
113: } else if (eq(*av, "-q")) {
114: quickflag = true;
115: } else if (eq(*av, "-t")) {
116: av++; ac--;
117: if (*av) {
118: movesperunit = atoi(*av);
119: if (s = index(*av, '/'))
120: timeunit = atoi(s + 1) * 60;
121: else
122: timeunit = 60;
123: } else
124: goto usage;
125: } else if (eq(*av, "-p")) {
126: av++; ac--;
127: if (*av)
128: progname = *av;
129: else
130: goto usage;
131: } else if (eq(*av, "-h")) {
132: av++; ac--;
133: if (*av)
134: proghost = *av;
135: else
136: goto usage;
137: } else if (eq(*av, "-b")) {
138: blackflag = true;
139: } else if (eq(*av, "-c")) {
140: progflag = true;
141: } else if (eq(*av, "-bnw")) {
142: bnwflag = true;
143: } else if (eq(*av, "-s")) {
144: saveflag = true;
145: } else if (eq(*av, "-n")) {
146: noisyflag = true;
147: } else
148: goto usage;
149: av++; ac--;
150: }
151: if (ac > 0)
152: dispname1 = av[0];
153: if (ac > 1)
154: dispname2 = av[1];
155: if (ac > 2)
156: goto usage;
157:
158: if (!dispname2)
159: oneboard = true;
160:
161: srandom(getpid());
162:
163: if (!oneboard && randflag && (random() % 2)) {
164: s = dispname1;
165: dispname1 = dispname2;
166: dispname2 = s;
167: }
168:
169: if (!dispname1)
170: dispname1 = getenv("DISPLAY");
171:
172: /* Set up the board. */
173: board_setup();
174:
175: /* Create the windows. */
176: win_setup(dispname1, dispname2);
177:
178: board_drawall();
179:
180: /* Start the program if necessary. */
181: if (progflag)
182: if (!program_init(progname))
183: exit(1);
184:
185: if (recfile)
186: load_game(recfile);
187:
188: /* Go into a loop of prompting players alternately for moves, checking
189: * them, and updating things.
190: */
191: for (;;) {
192: win_process(false);
193: clock_update();
194: if (progflag && ((!blackflag && (nexttomove == BLACK)) ||
195: (blackflag && (nexttomove == WHITE)))) {
196: m = program_get();
197: if (m)
198: prog_move(m);
199: }
200: }
201:
202: usage: fprintf(stderr, "Usage: %s\n", USAGE);
203: exit(1);
204: }
205:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.