壁沿い歩き防止 ■機能説明 modifiedWalkで指定したマスだけ壁から離れて歩きます。 ■使い方 config.txtでmodifiedWalkを適切な値に設定 ----- [kore.pl] +modifiedWalk() if($config{'modifiedWalk'}); move($ai_seq_args[0]{'solution'}[$ai_seq_args[0]{'index'}]{'x'}, $ai_seq_args[0]{'solution'}[$ai_seq_args[0]{'index'}]{'y'}); ----- [kore.pl] +sub modifiedWalk{ + my ($x,$y); + my ($oldX,$oldY)=($ai_seq_args[0]{'solution'}[$ai_seq_args[0]{'index'}]{'x'},$ai_seq_args[0]{'solution'}[$ai_seq_args[0]{'index'}]{'y'}); + return if(binSize(\@portalsID)); + return if (binFind(\@ai_seq, "attack")); + for ($i = -1; $i < 2; $i++) { + for ($j = -1; $j < 2; $j++) { + next if ($i == 0 && $j == 0); + if( $field{'field'}[($oldY + $i)*$field{'width'}+$oldX + $j]==1 ){ + $x=$j*-1*$config{'modifiedWalk'}+$oldX; + $y=$i*-1*$config{'modifiedWalk'}+$oldY; + if( $field{'field'}[$y*$field{'width'}+$x]==0 ){ + $ai_seq_args[0]{'solution'}[$ai_seq_args[0]{'index'}]{'x'}=$x; + $ai_seq_args[0]{'solution'}[$ai_seq_args[0]{'index'}]{'y'}=$y; + last; + } + } + } + } +} ----- [config.txt] +modifiedWalk 2