⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 piece.h

📁 超强国际象棋引擎
💻 H
字号:
// piece.h

#ifndef PIECE_H

#define PIECE_H

// includes

#include "color.h"
#include "util.h"

// macros

#define PAWN_MAKE(color)         (pawn_make[color])
#define PAWN_OPP(pawn)           ((pawn)^(((1 << 2) | (1 << 0))^((1 << 3) | (1 << 1))))

#define PIECE_COLOUR(piece)      (((piece)&3)-1)
#define PIECE_TYPE(piece)        ((piece)&~3)

#define PIECE_IS_PAWN(piece)     (((piece)&((1 << 2) | (1 << 3)))!=0)
#define PIECE_IS_KNIGHT(piece)   (((piece)&(1 << 4))!=0)
#define PIECE_IS_BISHOP(piece)   (((piece)&((1 << 5) | (1 << 6)))==(1 << 5))
#define PIECE_IS_ROOK(piece)     (((piece)&((1 << 5) | (1 << 6)))==(1 << 6))
#define PIECE_IS_QUEEN(piece)    (((piece)&((1 << 5) | (1 << 6)))==((1 << 5) | (1 << 6)))
#define PIECE_IS_KING(piece)     (((piece)&(1 << 7))!=0)
#define PIECE_IS_SLIDER(piece)   (((piece)&((1 << 5) | (1 << 6)))!=0)

#define PIECE_TO_12(piece)       (piece_to_12[piece])

#define PIECE_ORDER(piece)       (piece_order[piece])

#define PAWN_MOVE_INC(color)     (pawn_move_inc[color])
#define PIECE_INC(piece)         (piece_inc[piece])

// types

typedef int inc_t;

// "constants"

extern const int pawn_make[2];

extern const int PieceFrom12[12];

extern const inc_t pawn_move_inc[2];

extern const inc_t knight_inc[8+1];

extern const inc_t bishop_inc[4+1];

extern const inc_t rook_inc[4+1];

extern const inc_t queen_inc[8+1];

extern const inc_t king_inc[8+1];

// variables

extern int piece_to_12[256];

extern int piece_order[256];

extern const inc_t * piece_inc[256];

// functions

extern void piece_init();
extern bool piece_is_ok(int piece);
extern int piece_from_12(int piece_12);
extern int piece_to_char(int piece);
extern int piece_from_char(int c);

#endif // !defined PIECE_H

// end of piece.h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -