zerro_nuz написал(а):Как и с помощью чего мне описать ситуацию когда бот вначале проверяет комбинации на поле не менее 4 камней а потом тока жмет на заклинания ???
Рассмотрим часть сценария из Справка по написанию сценариев. Косая черта в начале строчки обозначает комментарий к сценарию, программа бота пропускает такие строчки при считывании сценария. Итак:
Успешное_считывание_поля:
{
/сортировка строчек в таблице ходов (таблица находится на вкладке бота РУЧНОЙ) сначала по ходам с наибольшим количеством собираемых линий по 6 камней (столбец "6"), затем по ходам с наибольшим количеством собираемых линий по 5 камней (столбец "5") и т.д. Ч означает, что сортировку по столбцу Ч
~Сортировка 1 6 5 4 Ч
/далее идет счетчик, с помощью которого перебираются разные варианты ходов "i" из таблицы ходов
_i -1
:начало
_i _i + 1
/условие ЕСЛИ ограничивает перебор вариантов ходов только количеством возможных ходов, если условие НЕ выполняется (то есть мы рассмотрели все возможные варианты ходов, и ни один нам не подошел), то бот переходит к команде ИНАЧЕ для выбора применения магии
ЕСЛИ _i < _Вариантов_Ходов
{
/это условие ЕСЛИ позволяет выбрать из таблицы первый попавшийся нам вариант хода, в котором собирается линия из 6 или 5 или 4 камней. Поскольку таблица при сортировке вначале сортируется по линиям из 6 камней, то первым всегда попадется ход с такой линией, а если такого хода нет, то далее первым попадется ход с линией из 5 камней и т.д. _Ход[_i].Число_6 здесь обозначает числовое значение на пересечении строки под номером "i" и столбца "6" в таблице ходов
ЕСЛИ _Ход[_i].Число_6 > 0 | _Ход[_i].Число_5 > 0 | _Ход[_i].Число_4 > 0
{
_Выбор _i
ИДТИ конец
}
/если на поле отсутствуют ходы с линиями из 6, 5 или 4 камней, то следующее условие ЕСЛИ позволяет выбрать из таблицы ходов ход, при котором поле разбирается полностью, то есть строчку под номером "i", в которой в столбце "Итог" будет значение "0"
ЕСЛИ ( _Ход[_i].Итог = 0)
{
_Выбор _i
ИДТИ конец
}
/команда ИНАЧЕ {Идти начало} отправляет бота к маркеру ":начало" проверять следующую строчку в таблице ходов на вышерассмотренные 2 условия ЕСЛИ, если предыдущая строчка из таблицы ходов не подошла
ИНАЧЕ
{
ИДТИ начало
}
}
ИНАЧЕ
{
/выбор применения магии (в данном случае Яростный Отпор), если нет ходов со сборкой линий из 6, 5 или 4 камней или полным разбором поля
ЕСЛИ ((_Красных_Моих > _ЯО.Красные) | (_Красных_Моих = _ЯО.Красные)) & ((_Синих_Моих > _ЯО.Синие) | (_Синих_Моих = _ЯО.Синие)) & ((_Зеленых_Моих > _ЯО.Зеленые) | (_Зеленых_Моих = _ЯО.Зеленые)) )
{
~Клик _ЯО.Позиция
~Спать 3000
~Выход_Из_Обработки
}
/если камней для магии не хватает, то бот передвигает камни по самому первому варианту в таблице ходов (варианту под номером "0")
ИНАЧЕ
{
_Выбор 0
ИДТИ конец
}
}
:конец
/это пауза в работе бота, чтобы бот не делал ходы очень быстро
~Случайное_Число 3000 _Случ
_Случ _Случ + 4000
~Пауза_Боя _Случ
/здесь бот передвигает камни согласно выбранному ходу "i" из таблицы ходов, эта часть программы всегда имеет такой вид, не менять
~Клик _Ход[_Выбор].Ячейка_11 _Ход[_Выбор].Ячейка_12
~Спать 500
~Клик _Ход[_Выбор].Ячейка_21 _Ход[_Выбор].Ячейка_22
}
Отредактировано bar (2009-07-25 02:06:53)