📄 agen.c
字号:
#include "old.h"bagen(){ int *p1, *p2, v; p1 = lmp; if((flag&010)!=0) if(board[5]==0 && board[6]==0 && board[7]==4) if(wattack(4) && wattack(5) && wattack(6)) btry(4, 0, 2); /* kingside castle */ if((flag&020)!=0) if(board[0]==4 && board[1]==0 && board[2]==0 && board[3]==0) if(wattack(2) && wattack(3) && wattack(4)) btry(4, 0, -2); /* queenside castle */ bgen(); p2 = p1; while(p2 != lmp) { v = *p2++; bmove(*p2); if(wattack(bkpos)) { *p1++ = v; *p1++ = *p2; } p2++; bremove(); } lmp = p1;}btry(from, mask, offset)int from, mask, offset;{ if((dir[from]&mask)==0) bcheck(from, from+offset);}bcheck(from, to)int from, to;{ if(board[to]>0) return(1); *lmp++ = (pval+6)[board[to]]-value; *lmp++ = (from<<8)|to; return(board[to] != 0);}wagen(){ int *p1, *p2, v; p1 = lmp; if((flag&1)!=0) if(board[61]==0 && board[62]==0 && board[63]== -4) if(battack(60) && battack(61) && battack(62)) wtry(60, 0, 2); /* kingside castle */ if((flag&2)!=0) if(board[56]== -4 && board[57]==0 && board[58]==0 && board[59]==0) if(battack(58) && battack(59) && battack(60)) wtry(60, 0, -2); /* queenside castle */ wgen(); p2 = p1; while(p2 != lmp) { v = *p2++; wmove(*p2); if(battack(wkpos)) { *p1++ = v; *p1++ = *p2; } p2++; wremove(); } lmp = p1;}wtry(from, mask, offset)int from, mask, offset;{ if((dir[from]&mask)==0) wcheck(from, from+offset);}wcheck(from, to)int from, to;{ if(board[to]<0) return(1); *lmp++ = value-(pval+6)[board[to]]; *lmp++ = (from<<8)|to; return(board[to] != 0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -