From 3fd43cd5fcb22bb65bf2a92a25d95d801b11c9e0 Mon Sep 17 00:00:00 2001 From: Scott Gasch Date: Wed, 1 Jun 2016 18:58:58 -0700 Subject: Initial checkin for typhoon chess engine. --- src/piece.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100755 src/piece.c (limited to 'src/piece.c') 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 (scott.gasch@gmail.com) 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)); +} -- cgit v1.3