Тренируем искусственный интеллект

18.08.17

Задачи пользователя - Игры

Добрый день, уважаемые коллеги. Хочу с Вами поделиться одной пятничной разработкой. Виндиниум - игра, в которой необходимо программировать искусственный интеллект. Вы должны взять под контроль легендарного героя, используя язык программирования по вашему выбору. Вы будете сражаться с другим ИИ. Победит герой с наибольшим количеством золота.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Vindinium (v.1.0):
.epf 7,81Kb ver:1.0
2
2 Скачать (1 SM) Купить за 1 850 руб.

Добрый день, уважаемые коллеги. Хочу с Вами поделиться одной пятничной разработкой.

Виндиниум - игра, в которой необходимо программировать искусственный интеллект. Вы должны взять под контроль легендарного героя, используя язык программирования по вашему выбору. Вы будете сражаться с другим ИИ. Победит герой с наибольшим количеством золота.

На сайте есть инструкция как играть и писать. Также есть много примеров ботов на гитхабе на других языках программирования.

Начнем. Сначала вам необходимо создать героя, если есть желание можете зарегистрироваться, чтобы ваш ник остался вашим навсегда. Регистрация тут. После этого вам выдадут ключ, с помощью которого вы сможете играть.

Для начала игры необходимо отправить запрос на сервер, с json содержимым.  Если это тренировка то в параметрах передается ключ, карта и количество ходов. Если режим - арена тогда карта выбирается рандомно, и количество ходов равно 1200 по умолчанию.

 Пример кода:

Функция ПолучитьНовоеСостояниеИгры()
   
   СтруктураПараметров = Новый Структура;
   
   Если Режим = "training" Тогда
	   СтруктураПараметров.Вставить("key", Ключ);
	   СтруктураПараметров.Вставить("turns", КоличествоХодов);
	   СтруктураПараметров.Вставить("map", "m1");
	   АдресСервиса = "/api/training";
   Иначе	
	   СтруктураПараметров.Вставить("key", Ключ);
	   АдресСервиса = "/api/arena";
   КонецЕсли;	

   Возврат ОтправитьJSONЗапрос(СтруктураПараметров,АдресСервиса);
   	
КонецФункции

Функция ОтправитьJSONЗапрос(СтруктураПараметров,АдресСервиса)
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);  
	ЗаписьJSON.УстановитьСтроку(ПараметрыJSON); 
	ЗаписатьJSON(ЗаписьJSON, СтруктураПараметров);
	СтрокаJSON = ЗаписьJSON.Закрыть();
	
	Соединение = Новый HTTPСоединение(АдресСервера);
	HTTPЗапрос = Новый HTTPЗапрос(АдресСервиса); 
	
	HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json; charset=utf-8");
	HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON);
	HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);   
	Если HTTPОтвет.КодСостояния = 200 Тогда
		ЧтениеJSON = Новый ЧтениеJSON();
		ЧтениеJSON .УстановитьСтроку(HTTPОтвет.ПолучитьТелоКакСтроку());
		Возврат ПрочитатьJSON(ЧтениеJSON , Ложь);
	Иначе	
		Возврат Неопределено;
	КонецЕсли;	
	
КонецФункции	

 В ответ придет json ответ с параметрами игры. Опишу основные параметры:

  • game - параметры игры.
    • heroes - параметры других игроков на поле боя;
    • board - параметры игрового поля;
    • hero - параметры вашего героя на поле боя;
  • viewUrl - ссылка где можно наблюдать за игрой
  • playUrl - ссылка для дальнейших действий над вашим героем

В параметре board приходит строка, которая описывает карту. Строку необходимо разделить на количество игровых клеток и выйдет что-то на подобии этого:

 Пример карты

######$-    $-############$-    $-######
######        ##        ##        ######
####[]    ####            ####    []####
##      ####  ##        ##  ####      ##
####            $-    $-            ####
##########  @1            @4  ##########
############  ####    ####  ############
$-##$-        ############        $-##$-
  $-      $-################$-      $-  
        ########################        
        ########################        
  $-      $-################$-      $-  
$-##$-        ############        $-##$-
############  ####    ####  ############
##########  @2            @3  ##########
####            $-    $-            ####
##      ####  ##        ##  ####      ##
####[]    ####            ####    []####
######        ##        ##        ######
######$-    $-############$-    $-######

где :

"##" - непроходимый лес
"@1" - герой номер 1
"[]" - таверна(для восстановления жизней)
"$-" - Золотая шахта(ничья)
"$1" - Золотая шахта захваченная героем №1

Проанализировав карту, делаем выводы куда двигаться нашему герою. Используя playUrl отправляем запрос с параметром dir указывая действие для героя: 'Stay', 'North', 'South', 'East', 'West'.

Во вложении обработка, которая инициализирует новую игру, запускает браузер с ссылкой для просмотра и заставляет героя делать случайные движения.

В следующе статье напишу, как с помощью матриц, выбрать самый кратчайший путь к золоту.  Дерзайте.

На написания статьи натолкнула публикация https://geektimes.ru/post/291823/ и https://geektimes.ru/post/291879/

Искусственный интеллект ИИ Виндиниум Vindinium json http запросы игры боты

См. также

Игры Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бесплатно (free)

Игра "Сапёр" на 1С. Три уровня.

04.04.2025    1077    83    user2015123    9    

18

Игры Платформа 1С v8.3 Бесплатно (free)

Игра Змейка на объектах форм, а ля ООП, или что можно сотворить за час )))

20.02.2025    1568    69    starik-2005    9    

15

Игры Платформа 1С v8.3 Бесплатно (free)

Когда охота "настоящего" ООП, но не знаешь, как его взять в 1С. Массив форм в форме нам поможет )))

18.02.2025    1310    50    starik-2005    14    

19

Игры Платформа 1С v8.3 Бесплатно (free)

Знакомы с серией игр Football Manager? Вся суть подобных симуляторов состоит в том, чтобы путем грамотного управления и контроля за спортивным, инфраструктурным и финансовым учетом привести свой футбольный клуб к успехам. Это ли не задача для платформы 1С - помочь в контроле учета предприятия (читай футбольного клуба)?

10.01.2025    4094    103    KamranV21    4    

34

Игры Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Бесплатно (free)

Вариация классической игры Линес в честь года змеи 2025 на шестиугольном поле, с препятствиями, для сборки змейки из 7 шаров.

29.12.2024    786    38    miniogn    0    

6

Игры Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Я Федор, ведущий разработчик 1С. На хакатоне компании команда под моим руководством перенесла игру «Герои меча и магии III» на платформу 1С. Расскажу, как устроена конфигурация «1С: Герои меча и магии» с технической точки зрения.

10.10.2024    51561    PROSTO-1C    55    

173

Игры Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Классическая игра Морской бой, с необычным дизайном. Из особенностей: Поле игрока формируется автоматически, но есть возможность корректировать расстановку фигур. Пример игры в приложенном видео.

29.07.2024    1661    98    user1693438    4    

11

Игры Платформа 1С v8.3 1C:Бухгалтерия Россия Бесплатно (free)

Простейшие крестики-нолики с маленьким полем.

24.07.2024    1685    124    user2015123    0    

9
Оставьте свое сообщение