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

18.08.17

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

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

Скачать исходный код

Наименование Файл Версия Размер
Vindinium (v.1.0):
.epf 7,81Kb
2
.epf 1.0 7,81Kb 2 Скачать

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

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

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

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

Для начала игры необходимо отправить запрос на сервер, с 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 Конфигурации 1cv8 Бесплатно (free)

Классическая игра пасьянс Паук, на платформе 1С.

15.04.2024    844    48    user1693438    1    

14

Классическая игра "Змейка" на 1С (управляемые формы)

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

Игра "Змейка" в классическом варианте на управляемых формах в 1С. Собирайте яблоки и ставьте рекорд!

09.02.2024    2959    164    emilyabochkova    12    

24

Ключворды в 1С

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Создавайте новые ключворды или разгадывайте существующие.

1 стартмани

05.02.2024    1659    1    alexpvs    0    

6

Игра "5 букв"

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Игра "5 Букв", сделанная на 1С. В игре загадано слово, существительное в единственном числе. Нужно отгадать загаданное слово.

1 стартмани

29.12.2023    1128    2    APTEM_SLV    9    

7

Пятнашки

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

Цель - обучение хитростям нашей всеми любимой 1С.

28.11.2023    908    35    user1834118    0    

6

Кар магедон

Игры Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

Держись, российский геймдев, я уже еду. Бета тест, можно оформлять предзаказы, будет донатный магазин с модельками российского автопрома (по цене реальных авто).

01.11.2023    1781    39    user1834118    7    

11

Турнир по 1С. Танки на СКД

Игры Платформа 1С v8.3 Абонемент ($m)

Предлагаю свою версию турнира. Особенность этого турнира в том, что тут нет правильных или неправильных решений. Есть твое решение и решение твоих соперников. У кого решение лучше тот и победит.

1 стартмани

09.10.2023    1871    1    opx    1    

13

Плоский "Кубик Рубика"

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Вы можете собрать кубик Рубика? Я - только с помощью инструкции:). Попробуйте справиться с его плоским аналогом.

1 стартмани

29.05.2023    2097    7    Alxby    3    

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