📄 square.h
字号:
// square.h
#ifndef SQUARE_H
#define SQUARE_H
// includes
#include "color.h"
#include "util.h"
// macros
#define SQUARE_IS_OK(square) ((((square)-0x44)&~0x77)==0)
#define SQUARE_MAKE(file,rank) (((rank)<<4)|(file))
#define SQUARE_FILE(square) ((square)&0xF)
#define SQUARE_RANK(square) ((square)>>4)
#define SQUARE_FROM_64(square) (square_from_64[square])
#define SQUARE_TO_64(square) (square_to_64[square])
#define SQUARE_IS_PROMOTE(square) (square_is_promote[square])
#define SQUARE_EP_DUAL(square) ((square)^16)
#define SQUARE_COLOUR(square) (((square)^((square)>>4))&1)
#define SQUARE_FILE_MIRROR(square) ((square)^0x0F)
#define SQUARE_RANK_MIRROR(square) ((square)^0xF0)
#define FILE_OPP(file) ((file)^0xF)
#define RANK_OPP(rank) ((rank)^0xF)
#define PAWN_RANK(square,color) (SQUARE_RANK(square)^rank_mask[color])
#define PAWN_PROMOTE(square,color) (promote_rank[color]|((square)&0xF))
// types
typedef int sq_t;
// "constants"
extern const int square_from_64[64];
extern const int rank_mask[2];
extern const int promote_rank[2];
// variables
extern int square_to_64[256];
extern bool square_is_promote[256];
// functions
extern void square_init();
extern int file_from_char(int c);
extern int rank_from_char(int c);
extern int file_to_char(int file);
extern int rank_to_char(int rank);
extern bool square_to_string(int square, char string [], int size);
extern int square_from_string(const char string []);
#endif // !defined SQUARE_H
// end of square.h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -