24 int countShort(
PtypeO ptypeO,
int center_dx,
int center_dy){
44 LongEffect calcLong(
Direction d,
int center_dx,
int center_dy){
54 assert(dx!=0 || dy!=0);
58 if(dx_min<=dx*i && dx*i <=dx_max &&
59 dy_min<=dy*i && dy*i <=dy_max)
break;
64 if(!(dx_min<=dx*i && dx*i <=dx_max &&
65 dy_min<=dy*i && dy*i <=dy_max))
break;
68 ret.offset=Offset(dx,dy);
69 assert(!ret.offset.zero());
94 ret[index]=calcLong(longD,center_dx,center_dy);
95 if(!ret[index].offset.zero())index++;
103 return os <<
"(" << longEffect.
offset <<
"," << longEffect.
minIndex
104 <<
"," << longEffect.
maxIndex <<
")";
130 for(
int i=0;i<2;i++,pl=
alt(pl)){
133 for(
int dy= -8;dy<=8;dy++)
134 for(
int dx= -8;dx<=8;dx++){
137 countShort(ptypeO,dx,dy);
145 for(
int i=0;i<2;i++,pl=
alt(pl)){
146 for(
int j=0;j<8;j++){
148 for(
int dy= -8;dy<=8;dy++)
149 for(
int dx= -8;dx<=8;dx++){
151 blockEffect[j][o32.
index()]=
160 for(
int i=0;i<2;i++,pl=
alt(pl)){
163 for(
int dy= -8;dy<=8;dy++)
164 for(
int dx= -8;dx<=8;dx++){
167 calcLong4(ptypeO,dx,dy);
177 for(
int x=1;x<=9;x++)
178 for(
int y=1;y<=9;y++){
181 for(
int dx=0;dx<5;dx++){
182 for(
int dy=0;dy<3;dy++){
183 const Square p(center.
x()+dx-2,center.
y()+dy-1);
184 int val=16-std::abs(p.x()-king.
x());
185 attackEffect[
BLACK][king.
index()][dx*3+dy]=val;
189 for(
int x=1;x<=9;x++)
190 for(
int y=1;y<=9;y++){
193 for(
int dx=0;dx<5;dx++){
194 for(
int dy=0;dy<3;dy++){
195 int r_dx=4-dx,r_dy=2-dy;
197 attackEffect[
BLACK][r_king.
index()][r_dx*3+r_dy];
206 for(
int x=1;x<=9;x++)
207 for(
int y=1;y<=9;y++){
210 for(
int dx=0;dx<5;dx++){
211 for(
int dy=0;dy<3;dy++){
212 const Square p(center.
x()+dx-2,center.
y()+dy-1);
213 int val=16-std::abs(p.x()-king.
x());
214 defenseEffect[
WHITE][king.
index()][dx*3+dy]=val;
218 for(
int x=1;x<=9;x++)
219 for(
int y=1;y<=9;y++){
222 for(
int dx=0;dx<5;dx++){
223 for(
int dy=0;dy<3;dy++){
224 int r_dx=4-dx,r_dy=2-dy;
226 defenseEffect[
WHITE][r_king.
index()][r_dx*3+r_dy];
239 setupDefenseEffect();