Хотите написать своего бота и устроить битву?
Хотите отдохнуть, расслабиться и завалить рабочий день отдела? 🙂
Вы зашли по адресу!
Идея не нова, но реализацию на 1С не видел. Почему ЭТО на 1С? Да просто так! На крайний случай поставьте ЭТО в школе/универе и школоло абитуриенты сами побегут учить матчасть 🙂
Говорим мы здесь о реализации некой пошаговой битвы, в которой действием на поле управляем "МОЗГ" написанны Вами. Суть в следующем:
-
в игре могут участвовать несколько ботов;
-
имеется поле определенной размерности, на котором действуют юниты игроков (описаны ниже);
-
юнит БАЗА — с определенной периодичностью и последовательностю создают юнитов (этим процессом управляет движок) следующих типов:
-
юнит [З] — назовем его земледельцем! этот юнит захватывает территорию просто перемещаясь по полю; может драться с любыми другими юнитами, но слабоват здоровьем;
-
юнит [Л] — назовем его легионером! этот юнит — боец; вся суть его сводиться к "seek and destroy" (метла forever :)); чисто технически легионеры накапливают опыт, тем самым повышая наносимый урон;
-
каждый юнит обладает определенным набором невосполнимого здоровья: самая "здоровая" — база, потом легионер и, наконец, земледелец;
-
Любая битва между двумя юнитами приводит к следующему:
-
если по здоровью юниты равны, побеждает нападающий, если нет, то тот кто "здоровее";
-
каждый юнит, вне зависимости от исхода боя, наносит оппоненту урон, в связи с чем в итоге погибнуть могут оба;
-
-
выполняя очередной ход, движок передает обработке-боту информацию, на основании которой тот определяет дальнейшее действие юнита;
-
в качестве информации обработке-боту передается структура, описывающая текущего юнита, а так же массив состояний окружающих его 8 ячеек поля (индексация ячеек начинается с левого верхнего угла по часовой стрелке);
-
обработка-бот принимает решение и возвращает структуру, описывающую действие для текущего юнита (переместиться или ничего не делать) и направление перемещения (индекс массива окружающих ячеек);
-
хранить какие-либо данные в объекте обработка-бот не может, но она знает свой UID (уникальный идентификатор на текущий бой), что можно использовать для хранения данных во временном хранилище;
-
игра идет до полного уничтожения юнитов соперников;
Во вложении демо-база с движком и загруженным шаблонным ботом (именно он усредно трудится на демке публикации), который так же можно найти в ветке обработок конфигурации под именем "ШаблонБота".
Как создать СВОЕГО бота:
-
заходим в конфигурацию и сохраняем во внешний файл обработку "ШаблонБота";
-
в модуле объекта внешнего файла обработки пишем логику бота (там же есть небольшое описание принимаемых и возвращаемых ботом значений);
-
модуль объекта содержит готовый каркас для написания своего бота и некий интерфейс для взаимодействия обработки с движком; ломать каркас, понятное дело, нельзя 🙂
-
разработку бота ведем в конфигураторе этой же демо-базы, т.к. в логике используются "прикладные объекты";
-
не забываем назвать своего бота крутым именем (переменная мИмя модуля шаблона бота);
-
когда логика готова, запускаем демо-базу в режиме предприятия и загружаем файл обработки в справочник "Боты";
-
в обработке "Управление битвой" выбираем {своих/чужих/одних и тех же} ботов и вперед!
Имеем ввиду, что чем больше ботов участвуют в битве, тем тормознутее ведет себя движок при повышении количества юнитов на поле, поэтому можно использовать "регулятор скорости" в обработке "Управление битвой", чтобы уменьшить частоту визуализаций поля битвы, тем самым ускоряя процесс просчета шагов.
Очень красиво! Тут нечеткая логика как-то используется?
«заказать внедрение», что ли…
не, работать надо 🙂
Это просто супер. Осталось замутить 1с:Роботы на манер С-robots
надо еще кодогенератор таким же образом для руководства сделать. отмазка от работы будет просто шикарная. коммерческий успех обеспечен 😉
Капец! Если теперь кто-нибуть мне скажет, что 1с это всего лишь система учета, я его …
вот бы еще хоть кусочек кода был бы выложен…
Вообще был уже был даже конкурс однажды, и даже еще на 7.7 🙂
Кажется NS или кто-то из других старожилов Т1С делал.
NS вроде шахматы даже делал на 7.7. 🙂
Наш человек! 🙂
то сайт, то битва, скучно человеку заниматься учетными системами )
Как запустить, при старте ошибка:
1С:Предприятие 8.3 (8.3.4.465)
{Обработка.УправлениеБоем.Форма.Форма.Форма(337)}: Значение не является значением объектного типа (СделатьХод)
ХодЮнита = ОбъектОбработки.СделатьХод(ИсходнаяСтруктураСостоянийСоседнихЯчеек.ФиксированныйМассивСостоянийСоседнихЯчеек, Юнит);
(1) в шаблонном боте логика самая простая, никаких наворотов.
(4) Душелов делал скринсейвер с имитацией бурной кодопечатной деятельности.
(6) без проблем выложу 🙂 скажите только что именно интересует (или почту в ЛС).
(10) расширяем границы таксскать 🙂
(11) похоже проблема с динамически-создаваемым объектом внешней обработки… либо обработка отсутствует в хранилище вообще, либо нарушена структура модуля объекта. если используете шаблонного бота, попробуйте еще раз загрузить внешнюю обработку бота: сохраните из конфигуратора обработку «ШаблонБота» во внешний файл, а затем загрузите этот файл в справочник «Боты» в режиме предприятия (в новую или в существующую запись), и попробуйте выбрать эту обновленную запись в режиме боя. если используете свою обработку, убедитесь, что в модуле объекта функция СделатьХод экспортная.
Когда чемпионат будет? 🙂
(13) да вот ждали окончания ЧМ в Бразилии, чтоб не создавать им конкуренцию непреодолимой силы 🙂
обязательно надо посмотреть, но наверное я не смогу достояную конкуренцию составить в виду отсутсвия достаточного количества времени на это )))
если 1с добавят в платформу модуль рисования, то количество любителей позаниматься хренью увеличится в разы… поэтому наверное и не добавляют…
(16) Oleg_nsk, порой важно переключить внимание чтоб свежие идеи по поводу решения насущных проблем рождались )))
Вспоминается пословица про кота и яйца 🙂 уж извините.
Когда чемпионат?
(19) mort64ram, да осталось совсем немного… в поисках организаторов, спонсоров и участников.. видите какой ажиотаж 🙂
(20) ну я готов если что=)