ソートしたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
Cr
記事: 93
登録日時: 8年前

ソートしたい

#1

投稿記事 by Cr » 6年前

ダイヤモンドゲームの続きを作っています。
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];      //最善手を返す
};



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

nil
記事: 428
登録日時: 7年前

Re: ソートしたい

#2

投稿記事 by nil » 6年前

all_routesの中身に何も代入されていないように見えるのですが…………。

アバター
Cr
記事: 93
登録日時: 8年前

Re: ソートしたい

#3

投稿記事 by Cr » 6年前

コード全体はとても長いので関連部だけ抜き出してます。
all_routeには関数を使って値を代入して、中に値が入っている事も全表示をしてたしかめたので大丈夫かと思います。

アバター
Cr
記事: 93
登録日時: 8年前

Re: ソートしたい

#4

投稿記事 by Cr » 6年前

比較関数Compの不等号の向きが逆でした…
どうもありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る