Updating to version 1.3, release made by Mike Vanier (mvanier@bbb.caltech.edu).
[gnushogi.git] / xshogi / xshogi.h
blob10b596d77b2d392e3340bac98d4c77414ed2cfee
1 /*
2 * FILE: xshogi.h
4 * Main header file for xshogi.
6 * ------------------------------------------------------------------------
7 * xshogi is based on XBoard -- an Xt/Athena user interface for GNU Chess.
9 * Original authors: Dan Sears, Chris Sears
10 * Enhancements (Version 2.0 and following): Tim Mann
11 * Modifications to XShogi (Version 1.0): Matthias Mutz
12 * Enhancements to XShogi (Version 1.1): Matthias Mutz
13 * Modified implementation of ISS mode for XShogi: Matthias Mutz
14 * Current maintainer: Michael C. Vanier
16 * XShogi borrows its piece bitmaps from CRANES Shogi.
18 * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
19 * Enhancements Copyright 1992 Free Software Foundation, Inc.
20 * Enhancements for XShogi Copyright 1993, 1994, 1995 Matthias Mutz
21 * Copyright (c) 1999 Michael Vanier and the Free Software Foundation
23 * The following terms apply to Digital Equipment Corporation's copyright
24 * interest in XBoard:
25 * ------------------------------------------------------------------------
26 * All Rights Reserved
28 * Permission to use, copy, modify, and distribute this software and its
29 * documentation for any purpose and without fee is hereby granted,
30 * provided that the above copyright notice appear in all copies and that
31 * both that copyright notice and this permission notice appear in
32 * supporting documentation, and that the name of Digital not be
33 * used in advertising or publicity pertaining to distribution of the
34 * software without specific, written prior permission.
36 * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
37 * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
38 * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
39 * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
40 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
41 * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
42 * SOFTWARE.
43 * ------------------------------------------------------------------------
45 * This file is part of GNU shogi.
47 * GNU shogi is free software; you can redistribute it and/or modify
48 * it under the terms of the GNU General Public License as published by
49 * the Free Software Foundation.
51 * GNU shogi is distributed in the hope that it will be useful,
52 * but WITHOUT ANY WARRANTY; without even the implied warranty of
53 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
54 * GNU General Public License for more details.
56 * You should have received a copy of the GNU General Public License
57 * along with GNU shogi; see the file COPYING. If not, write to
58 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
60 * ------------------------------------------------------------------------
64 #ifndef _XSHOGI_H_
65 #define _XSHOGI_H_
67 #define BOARD_SIZE 9
68 #define DROP_LINES 3
69 #define DROP_COLS 3
71 #ifdef WESTERN_BITMAPS
72 #define LARGE_SQUARE_SIZE 32
73 #define MEDIUM_SQUARE_SIZE 32
74 #else
75 #define LARGE_SQUARE_SIZE 64
76 #define MEDIUM_SQUARE_SIZE 49
77 #endif
79 #define SMALL_SQUARE_SIZE 32
80 #define LINE_GAP 2
81 #define MAX_MOVES 512
82 #define MSG_SIZ 256
83 #define DIALOG_SIZE 256
84 #define MOVE_
85 #define MOVE_LEN 16 /* enough for "Black resigns\000"*/
86 #define TIME_CONTROL "5" /* in minutes */
87 #define TIME_DELAY "1.0" /* seconds between moves */
88 #define MOVES_PER_SESSION 40 /* moves per TIME_CONTROL */
89 #define BlackOnMove(move) ((int) ((move) % 2) == 0)
91 #define BELLCHAR '\007'
92 #define NULLCHAR '\000'
94 #ifndef FIRST_SHOGI_PROGRAM
95 #define FIRST_SHOGI_PROGRAM "gnushogi"
96 #endif
98 #ifndef SECOND_SHOGI_PROGRAM
99 #define SECOND_SHOGI_PROGRAM "gnushogi"
100 #endif
102 #ifndef FIRST_HOST
103 #define FIRST_HOST "localhost"
104 #endif
106 #ifndef SECOND_HOST
107 #define SECOND_HOST "localhost"
108 #endif
110 #define MATCH_MODE "False"
111 #define INIT_STRING "beep\neasy\nrandom\n"
112 #define BLACK_STRING "black\ngo\n"
113 #define WHITE_STRING "white\ngo\n"
114 #define DEFAULT_SIZE "Small"
115 #define LIGHT 1
116 #define DARK 0
117 #define CHAR_PIECE_COLOR "Black"
118 #define ZERO_COLOR "#000000"
119 #define ONE_COLOR "#FFFFFF"
120 #define BLACK_PIECE_COLOR "#FFFFD7"
121 #define WHITE_PIECE_COLOR "#FFFFD7"
122 #define LIGHT_SQUARE_COLOR "#EBDFB0"
123 #define DARK_SQUARE_COLOR "#EBDFB0"
124 #define MAIN_FONT "-*-helvetica-medium-o-normal--*-*-*-*-*-*-*-*"
125 #define COORD_FONT "-*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*"
126 #define DEFAULT_FONT "*font: -*-helvetica-medium-r-normal--*-120-*-*-*-*-*-*"
127 #define BLINK_COUNT 3
128 #define BORDER_X_OFFSET 3
129 #define BORDER_Y_OFFSET 27
133 typedef enum
135 Large, Medium, Small
136 } BoardSize;
138 typedef enum
140 BeginningOfGame, MachinePlaysBlack, MachinePlaysWhite, TwoMachinesPlay,
141 ForceMoves, PlayFromGameFile, PauseGame, EndOfGame,
142 EditPosition
143 } GameMode;
145 typedef enum
147 MatchFalse, MatchInit, MatchPosition, MatchOpening
148 } MatchMode;
150 typedef enum
152 BlackPawn, BlackLance, BlackKnight, BlackSilver, BlackGold,
153 BlackBishop, BlackRook, BlackPPawn, BlackPLance, BlackPKnight,
154 BlackPSilver, BlackPBishop, BlackPRook, BlackKing,
155 WhitePawn, WhiteLance, WhiteKnight, WhiteSilver, WhiteGold,
156 WhiteBishop, WhiteRook, WhitePPawn, WhitePLance, WhitePKnight,
157 WhitePSilver, WhitePBishop, WhitePRook, WhiteKing,
158 EmptySquare,
159 ClearBoard, BlackPlay, WhitePlay /* for use on EditPosition menus */
160 } ShogiSquare;
162 typedef ShogiSquare Board[BOARD_SIZE][BOARD_SIZE];
164 typedef int Catched[2][8];
166 typedef enum
168 BlackPromotion = 1, WhitePromotion, BlackDrop, WhiteDrop,
169 NormalMove,
170 BlackWins, WhiteWins, GameIsDrawn, StartGame, BadMove, Comment,
171 AmbiguousMove
172 } ShogiMove;
174 typedef enum
176 ResetTimers, DecrementTimers, SwitchTimers,
177 ReDisplayTimers, StopTimers, StartTimers
178 } ClockMode;
180 #endif /* _XSHOGI_H_ */