#include "a_structure.h"
//-----------------------------------------------------------------------------------
/*
 * перебор с циклическим увеличением глубины
 *
 * АВТОР ChessTerminator75
 * ПОСЛЕДНЕЕ ИЗМЕНЕНИЕ 10.02.2008  11.11.2009
*/
//---------------------------------------------------------------------------


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

//---------------------------------------------------------------------------

/*******************************************
циклически перебираем увеличивая глубину до тех пор пока не сработает останов.
т.е. в начале на глубине 1 потом 2 и т.д.
это нужно во первых для заполнения хеш-таблицы
во вторых что бы чувствовать время перебора. например если мы на предыдущей глубине
считали секунду то на следующем в среднем в двадцать раз дольше.


обеспечиваем поддержку нескольких режимов игры

> go depth 5 
поиск на заданную глубину
как только досчитали до заданной глубины depth_max возвращаем результат

 > go btime 300000 wtime 300000 
 for game in 5min. 
 > go btime 302000 wtime 302000 winc 2000 binc 2000 
 with incremental clock 5 min + 2 sec. 
команды для блица типа 5 мин либо 5 мин + добавление за ход в секундах
как только время счета превысило time_terminate возвращаем результат
расчет пока слишком примитивный time_terminate = wtime/100;
т.е. мы берем оставшееся время для игры за черных и делим на сто.
оставшееся время мы считали до вызова этой функции и перевели его в секунды

> go infinite
для режима анализа infinite просто задаем depth_max равным 50. отсечка будет в глубине
перебора когда придет команда quit или stop

> go movetime 300000 
задание времени на ход тоже очень простое time_terminate = movetime;


 > go movestogo 40 wtime 300000 btime 300000 
 for 40 moves in 5 min. 
время на определенное количество ходов
не поддерживается эта команда будет распознана как
> go wtime 300000 btime 300000 
сейчас этот момент не актуален но в будущем надо будет править

в конце расчета печатаем вариант и делаем ход

********************************************/
void Deepening(struct T_Bitboard * p_bitboard,//представление доски
			   int depth_max,//глубина перебора
			   double wtime,//оставшееся время на игру за белых
			   double btime,//оставшееся время на игру за черных
			   double winc,//добавление времени за ход для белых
			   double binc,//добавление времени за ход для черных
			   int movestogo,//количество ходов на которое выделено время
			   double movetime,//время на ход
			   bool infinite//бесконечный анализ
			   );
//---------------------------------------------------------------------------
