
/// АВТОР Бренкман Андрей (Brenkman Andrey)
/// ПОСЛЕДНЕЕ ИЗМЕНЕНИЕ  25.02.2009
/// УРОВЕНЬ МОЕГО ДОВЕРИЯ 80%



///!
#include "a_Header_constants.h"
#include "a_List.h"


/// включаем-выключаем(1-0) режим вывода в файл тестовой информации
#define TEST_K 0 



/// реализуем киллеры

/// киллер ход это лучший ход найденный до этого на данной глубине
/// он не должен быть взятием т.к. с взятиями разговор особый

/// что значит лучший? 
/// это значит  
/// что он улучшил альфу и вызвал отсечку по бете
/// конечно это для поиска за белых
/// для черных улучшил бету и вызвал отсечку по альфе


class k_Killer 
{

/// поля класса
//////////////////////////////////////////////////////////////////////////////////////
private:

	__int32 killer_moves_1[MAX_DEPTH];
	__int32 killer_moves_2[MAX_DEPTH];


//////////////////////////////////////////////////////////////////////////////////////
public:

	///
	inline __int32 get_killer_moves_1(const unsigned __int16 n)
	{
		return killer_moves_1[n];
	};

	/// 
	inline __int32 get_killer_moves_2(const unsigned __int16 n)
	{
		return killer_moves_2[n];
	};

//////////////////////////////////////////////////////////////////////////////////////
public:

	///---------------------------------------------------------------------------
	/// инициализируем массив киллеров
	void ini_killer();

	///---------------------------------------------------------------------------
	/// пишем киллера
	void save_killer
	(
		const unsigned __int8 i,/// номер хода в списке
		struct List & list,/// представление списка ходов
		const unsigned __int8 depth/// текущая глубина
	);

	///---------------------------------------------------------------------------
	/// вставляем киллера в начало списка(позиция start) 
	void insert_killer
	(
		struct List & list,/// представление списка ходов
		const unsigned __int8 depth,/// текущая глубина
		unsigned __int8 start///позиция с которой ищем и на которую вставляем киллер
	);

	///---------------------------------------------------------------------------
	/// вставляем киллера в начало списка(позиция start) 
	void insert_killer_in_list
	(
		struct List & list,/// представление списка ходов
		const __int32 killer_moves_1,/// 
		const __int32 killer_moves_2,///
		const unsigned __int8 start///позиция с которой ищем и на которую вставляем киллер
	);


};
