AIにどの手が一番いい手なのかを決定させるべく、
マス目に得点を割り振り、
(移動後のマスの得点)-(移動前のマスの得点)
で各手をソートしたいです。
class Point //座標
{
public:
int x,y;
};
class Route{ //各手
public:
Point now; //移動前
Point next; //異動後
};
class AI
{
protected:
vector<char> score_board[20]; //各マスの点数表
public:
Route TakeStep(); //最善手を返す関数
};
class Comp
{
public:
char score_board[20][20]; //得点格納表
bool operator()(const Route& left, const Route& right) const
{
int left_point,right_point;
left_point = score_board[left.next.x][left.next.y]
- score_board[left.now.x][left.now.y];
right_point = score_board[right.next.x][right.next.y]
- score_board[right.now.x][right.now.y];
return left_point < right_point;
};
Comp(vector<char> _score_board[20])
{
for(int i = 0; i < 20; i++)
for(int j = 0; j < 20; j++)
score_board[i][j] = _score_board[i][j];
};
};
Route AI::TakeStep()
{
vector <Route> all_routes; //可能な全手格納
Comp check(score_board); //比較関数
sort(all_routes.begin(),all_routes.end(),check);
return all_routes[0]; //最善手を返す
};
どのように書けばいいのでしょうか?