#pragma once



/// <summary>
/// 差し手
/// </summary>
struct Move
{
	/// <summary>
	/// 白と黒のどちらの番か(元に戻すため）
	/// </summary>
	int color;
	/// <summary>
	/// The drop down position
	/// 石を置いた場所
	/// </summary>
	int drop_pos;

	/// <summary>
	/// ひっくり返る石の数
	/// </summary>
	int rev_pos_count;
	
	/// <summary>
	/// The reverse positions
	/// ひっくり返る位置
	/// 最大で18個ひっくり返る可能性がある。
	/// 例えば角に置いたときで3方向×6個 = 18個
	/// </summary>
	int rev_pos[18];

	/// <summary>
	/// Determines whether this instance is invalid.
	/// 有効な手ではないかどうかを返す。
	/// </summary>
	/// <returns>
	///   <c>true</c> if this instance is invalid; otherwise, <c>false</c>.
	/// </returns>
	bool isInvalid() {
		return rev_pos_count == 0;
	}

	/// <summary>
	/// Adds the revpos.
	/// </summary>
	/// <param name="position">The position.</param>
	void AddRevpos(int position) {
		rev_pos[rev_pos_count] = position;
		rev_pos_count++;
	}
	Move(int position) {
		drop_pos = position;
		rev_pos_count = 0;
	}
	//int ReverseCount() {
	//	return rev_pos_count;
	//}
	//int DropPosition() {
	//	return drop_pos;
	//}

	Move();
	~Move();
};

