ページ 11

ソートしたい

Posted: 2012年10月26日(金) 00:35
by Cr
ダイヤモンドゲームの続きを作っています。
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];      //最善手を返す
};



そこで上記のようなプログラムを書いたのですが、ソートが全く行われている様子がありません。
どのように書けばいいのでしょうか?

Re: ソートしたい

Posted: 2012年10月26日(金) 00:55
by nil
all_routesの中身に何も代入されていないように見えるのですが…………。

Re: ソートしたい

Posted: 2012年10月27日(土) 01:07
by Cr
コード全体はとても長いので関連部だけ抜き出してます。
all_routeには関数を使って値を代入して、中に値が入っている事も全表示をしてたしかめたので大丈夫かと思います。

Re: ソートしたい

Posted: 2012年10月27日(土) 01:13
by Cr
比較関数Compの不等号の向きが逆でした…
どうもありがとうございました。