利きの評価を加えてみた
misakiBona411の評価関数に
for(int y=-1;y<=1;y++) for(int x=-1;x<=1;x++) { int pos=x+y*16; { int ks = kikiS[sou+pos]+kiki2S[sou+pos]; int ke = kikiE[sou+pos]+kiki2E[sou+pos]; if(ke>=1) score+=(ks-ke)*2; } { int ks = kikiS[eou+pos]+kiki2S[eou+pos]; int ke = kikiE[eou+pos]+kiki2E[eou+pos]; if(ks>=1) score+=(ks-ke)*2; } }
敵利きが王の周囲にあるときに、利き負けると減点というのをいれて、
自己対戦させてみたけど
97戦 先手49(50%)-後手48(49%)
入れた後手が負け越し、というか効果無し
さすがに1利きの差で2点は少なすぎかな。進行度も見てないし。
やばい守り駒の減点だけにして再度試してみます
if(thinkI==ENEMY && teban>=50) { for(int y=-1;y<=1;y++) for(int x=-1;x<=1;x++) { int pos=x+y*16; int koma = ban[sou+pos]; if(koma&SELF) { int ks = kikiS[sou+pos]+kiki2S[sou+pos]; int ke = kikiE[sou+pos]+kiki2E[sou+pos]; if((ks-ke)<0) score+=(ks-ke)*komav[koma&0x0f]/8; } koma = ban[eou+pos]; if(koma&ENEMY) { int ks = kikiS[eou+pos]+kiki2S[eou+pos]; int ke = kikiE[eou+pos]+kiki2E[eou+pos]; if((ks-ke)>0) score-=(ks-ke)*komav[koma&0x0f]/8; } }