summaryrefslogtreecommitdiff
path: root/src/piece.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/piece.c')
-rwxr-xr-xsrc/piece.c86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/piece.c b/src/piece.c
new file mode 100755
index 0000000..d5eeece
--- /dev/null
+++ b/src/piece.c
@@ -0,0 +1,86 @@
+/**
+
+Copyright (c) Scott Gasch
+
+Module Name:
+
+ piece.c
+
+Abstract:
+
+ Chess piece related code.
+
+Author:
+
+ Scott Gasch ([email protected]) 14 Apr 2004
+
+Revision History:
+
+ $Id: piece.c 345 2007-12-02 22:56:42Z scott $
+
+**/
+
+#include "chess.h"
+
+PIECE_DATA g_PieceData[] =
+{
+ // piece value piece value / 100 invert value piece name
+ { 0, 0, 0, "NONE" },
+ { VALUE_PAWN, (VALUE_PAWN / 100), INVERT_PAWN, "PAWN" },
+ { VALUE_KNIGHT, (VALUE_KNIGHT / 100), INVERT_KNIGHT, "KNIGHT" },
+ { VALUE_BISHOP, (VALUE_BISHOP / 100), INVERT_BISHOP, "BISHOP" },
+ { VALUE_ROOK, (VALUE_ROOK / 100), INVERT_ROOK, "ROOK" },
+ { VALUE_QUEEN, (VALUE_QUEEN / 100), INVERT_QUEEN, "QUEEN" },
+ { VALUE_KING, 100, INVERT_KING, "KING" },
+ { 0, 0, 0, "NONE" }
+};
+
+
+CHAR *
+PieceAbbrev(PIECE p)
+{
+ static char _PieceAbbrev[] =
+ {
+ '-', 'p', 'n', 'b', 'r', 'q', 'k', '\0'
+ };
+ static char buf[3];
+
+ if (!IS_VALID_PIECE(p))
+ {
+ buf[0] = buf[1] = '?';
+ buf[2] = 0;
+ return(buf);
+ }
+
+ buf[1] = _PieceAbbrev[PIECE_TYPE(p)];
+ if (PIECE_COLOR(p) == WHITE)
+ {
+ buf[0] = '.';
+ buf[1] = (char)toupper(buf[1]);
+ }
+ else
+ {
+ buf[0] = '*';
+ }
+ buf[2] = 0;
+
+ return(buf);
+}
+
+ULONG
+PieceValueOver100(PIECE p)
+{
+ return(PIECE_VALUE_OVER_100(p));
+}
+
+ULONG
+PieceValue(PIECE p)
+{
+ return(PIECE_VALUE(p));
+}
+
+ULONG
+PieceInvertedValue(PIECE p)
+{
+ return(INVERTED_PIECE_VALUE(p));
+}