# score for the center, edges, and corners # positive for x, negative for o # 012 # 345 # 678 # center = 5 # corner = 2 # edge = 1 sub eval { local($board) = @_; # print "blocker: >$board<\n"; local($score) = 0; local($i); # center $score += docount($board, 4, 5); # corner $score += docount($board, 0, 2); $score += docount($board, 2, 2); $score += docount($board, 6, 2); $score += docount($board, 8, 2); # edge $score += docount($board, 1, 1); $score += docount($board, 3, 1); $score += docount($board, 5, 1); $score += docount($board, 7, 1); return($score); } sub docount { local($board, $i, $p) = @_; local($total) = 0; if (substr($board, $i, 1) eq "x") { $total += $p; } if (substr($board, $i, 1) eq "o") { $total -= $p; } return $total; }