aboutsummaryrefslogtreecommitdiffstats
path: root/FICS/movecheck.h
diff options
context:
space:
mode:
authorMarkus Uhlin <markus@nifty-networks.net>2023-12-07 21:31:49 +0100
committerMarkus Uhlin <markus@nifty-networks.net>2023-12-07 21:31:49 +0100
commit79b59f9b30fb6a1fdf8c3efb446271f7cb00d434 (patch)
treef6ade4ccbc3af20d825edacfd12b5da8ded8d240 /FICS/movecheck.h
FICS 1.6.2
Diffstat (limited to 'FICS/movecheck.h')
-rw-r--r--FICS/movecheck.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/FICS/movecheck.h b/FICS/movecheck.h
new file mode 100644
index 0000000..53a1712
--- /dev/null
+++ b/FICS/movecheck.h
@@ -0,0 +1,61 @@
+/* movecheck.h
+ *
+ */
+
+/*
+ fics - An internet chess server.
+ Copyright (C) 1993 Richard V. Nash
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+*/
+
+/* Revision history:
+ name email yy/mm/dd Change
+ Richard Nash 93/10/22 Created
+*/
+
+#ifndef _MOVECHECK_H
+#define _MOVECHECK_H
+
+#define MOVE_OK 0
+#define MOVE_ILLEGAL 1
+#define MOVE_STALEMATE 2
+#define MOVE_CHECKMATE 3
+#define MOVE_AMBIGUOUS 4
+#define MOVE_NOMATERIAL 5
+
+#define MS_NOTMOVE 0
+#define MS_COMP 1
+#define MS_COMPDASH 2
+#define MS_ALG 3
+#define MS_KCASTLE 4
+#define MS_QCASTLE 5
+
+#define isrank(c) (((c) <= '8') && ((c) >= '1'))
+#define isfile(c) (((c) >= 'a') && ((c) <= 'h'))
+
+#if !defined(_BOARD_H)
+#include "board.h"
+#endif
+
+extern int is_move(char *);
+extern int parse_move(char *, game_state_t *, move_t *, int);
+extern int execute_move(game_state_t *, move_t *, int);
+extern int backup_move(int, int);
+
+/* Some useful chess utilities */
+extern int NextPieceLoop(board_t, int *, int *, int);
+extern int InitPieceLoop(board_t, int *, int *, int);
+extern int legal_move(game_state_t *, int, int, int, int);
+extern int legal_andcheck_move(game_state_t *, int, int, int, int);
+extern int in_check(game_state_t *);
+
+#endif /* _MOVECHECK_H */