?? attack.h
字號:
// attack.h
#ifndef ATTACK_H
#define ATTACK_H
// includes
#include "board.h"
#include "distance.h"
// macros
#define IS_IN_CHECK(board,color) (is_attacked((board),KING_POS((board),(color)),COLOUR_OPP((color))))
#define DELTA_INC_LINE(delta) (delta_inc_line[119+(delta)])
#define DELTA_INC_ALL(delta) (delta_inc_all[119+(delta)])
#define DELTA_MASK(delta) (delta_mask[119+(delta)])
#define INC_MASK(inc) (inc_mask[17+(inc)])
#define PIECE_ATTACK(board,piece,from,to) (PSEUDO_ATTACK((piece),(to)-(from))&&line_is_empty((board),(from),(to)))
#define PSEUDO_ATTACK(piece,delta) (((piece)&DELTA_MASK(delta))!=0)
#define SLIDER_ATTACK(piece,inc) (((piece)&INC_MASK(inc))!=0)
#define ATTACK_IN_CHECK(attack) ((attack)->dn!=0)
// types
struct attack_t
{
int dn;
int ds[2 + 1];
int di[2 + 1];
};
// variables
extern int delta_inc_line[239];
extern int delta_inc_all[239];
extern int delta_mask[239];
extern int inc_mask[35];
// functions
extern void attack_init();
extern bool is_attacked(const board_t *board, int to, int color);
extern bool line_is_empty(const board_t *board, int from, int to);
extern bool is_pinned(const board_t *board, int square, int color);
extern bool attack_is_ok(const attack_t *attack);
extern void attack_set(attack_t *attack, const board_t *board);
extern bool piece_attack_king(const board_t *board, int piece, int from, int king);
#endif // !defined ATTACK_H
// end of attack.h
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -