Javaなら局面クラスPositionから抽象クラスPlayerのsearchの中で
サブクラスにある下のメソッドを呼ぶ。

class AfoPlayer extends Player {
public Move searchMove(Position org) {
// 合法手取得(全部+∞)
MoveTreeSet mts = org.getAllMoves();
// 1手取りだし
Move m = mts.removeFirst();
// 1手指す
org.move(m);
// 局面評価値を手の評価値にする
m.setValue(org.calcValue());
// 手を追加(クラスMoveTreeSetが評価値順に挿入してくれる)
mts.add(m);
// 最善手を返す
return mts.best();
}
}