СЦБИСТ - железнодорожный форум, блоги, фотогалерея, социальная сеть
Вернуться   СЦБИСТ - железнодорожный форум, блоги, фотогалерея, социальная сеть > Техника > Уголок радиолюбителя > Микроконтроллеры
Закладки ДневникиПоддержка Сообщество Комментарии к фото Сообщения за день
Ответить в этой теме   Перейти в раздел этой темы    
 
В мои закладки Подписка на тему по электронной почте Отправить другу по электронной почте Опции темы Поиск в этой теме
Старый 06.05.2026, 17:45   #1 (ссылка)
V.I.P.
 
Аватар для бабулер146

Регистрация: 24.04.2026
Сообщений: 12
Поблагодарил: 0 раз(а)
Поблагодарили 0 раз(а)
Фотоальбомы: не добавлял
Записей в дневнике: 32
Репутация: 0

Тема: Игры, сгенерированные искусственным интеллектом


Игры, сгенерированные искусственным интеллектом

Д. МАМИЧЕВ, пос. Шаталово Смоленской обл.
Искусственный интеллект (ИИ), нейросети, сгенерированный контент — эти слова сегодня на слуху у каждого. Постоянно расширяющаяся область их практического применения заинтересовала автора. Возникло желание попробовать возможность генерации C++ кода на примере скетчей для макета простой игровой консоли на основе Ardu-ino Uno и модуля TFT-дисплея на чипе ST7735 с диагональю 1,77” и разрешением 160x128 пикселей. В качестве элемента игровой навигации выбор был остановлен на двухосевом джойстике с кнопкой.


Схема макета показана на рис. 1. Исходными сценариями игр для задания были выбраны правила "Тетриса", "Пятнашек", "Змейки"
и некоторых других. В итоге получился комплект скетчей широко не известных игр для одной общей консоли. Варианты заставок игр показаны на рис. 2.
Для экспериментов был использован бесплатный генератор C++ кода на базе ИИ — GPT 5 Mini (Free AI-Powered C++ Code Generator Try Context-Driven AI.— URL: https://workik.com/c++-code-generator (07.11.25)). Разработчики позиционируют его как эффективную версию ChatGPT для повседневных задач, обеспечивающую быстрые и качественные ответы. OpenAI, создатель модели, подчёркивает оптимальное соотношение между её стоимостью и интеллектуальными возможностями.

Работа с ИИ преследовала две основные цели: оценить экономию времени при реализации проекта и возможность обучения на примерах сгенерированного кода. Рабочая область генератора (рис. 3) состоит из окна ввода исходных данных 1 и окна вывода сгенерированного кода, пояснений и инструкций 2. Кроме того, планировалось выявить недостат
ки генераторов ИИ, в частности, их склонность к созданию синтаксически корректного кода, содержащего логические или семантические ошибки.
Ниже, как пример, приведён первичный типовой запрос от автора на реализацию одной из игр.

Напиши код для дисплея ST7735 и джойстика игры Arkanoid с пояснениями всех строк кода. Игрок управляет небольшой пла тформой-раке т-кой, которую можно передвигать горизонтально от одной стенки до другой. Ракетку следует подставлять под летящий шарик и отбивать, чтобы тот не упал вниз. Удар шарика по кирпичу приводит к исчезновению кирпича. После того, как все кирпичи на данном уровне разбиты, происходит переход на следующий уровень с новым набором кирпичей. Шарик диаметром 8 пикселей отскакивает от стенок, кирпичей, платформы, кирпичи 8x16 пикселей. Ориентация дисплея —— вертикальная.

Проведённые опыты показали удовлетворительный результат генерации с двух-пяти итераций, с вносимыми поправками и дополнениями от пользователя. При большем числе запросов вероятность успешной реализации исходного замысла игры значительно снижается. Нейросети, по мнению автора, создают код с избыточным для решения задачи числом переменных и функций, но с понятными и подробными комментариями к нему. Также следует отметить относительно лёгкое восприятие и понимание ИИ контекста запроса. Так, игровые объекты и элементы создаются сразу, но их анимация часто требует исправления или повторного запроса на создание в связи с её отсутствием. Почти всегда сначала ИИ создаёт код с перерисовкой всего экрана при сюжетном событии, а не изменившейся части изображения, что приводит к мерцанию экрана при игре. Из неприятных моментов можно отметить такие, как взаимное наслоение изображений элементов, забывание стирать предыдущее изображение элемента после его перемещения в новую позицию, игнорирование необходимости наличия временной задержки для игрока на отпускание кнопки или движка джойстика. Такие и подобные огрехи исправляются дополнительными запросами к генератору или самостоятельным редактированием текста программы сообразно степени понимания работы полученного кода. Несмотря на выше указанные недостатки, в целом можно отметить, что используемый вариант нейросети справляется со своими базовыми назначениями.
Ещё одним положительным моментом является возможность получать по запросу текстовое описание-инструкцию к игре по сгенерированному коду. Далее приведён пример сгенерированного руководства для игры "Шарики и колбы", с некоторыми ляпами перевода. Стоит отметить, что некоторые неточности в переводе связаны с процессом двойного перевода (русский-анг-лийский-русский). Важно подчеркнуть, что объём созданной ИИ инструкции существенно превышает размер исходного запроса сценария игры.
Правила и управление игры —— краткое руководство.

Правила перевозки


Перенос 一 это простая операция: возьмите верхний шарик из одной пробирки и поместите его на пустое место другой пробирки.
При взятии берётся верхний шарик (самый верхний заполненный слот).
При постановке шар остаётся либо в пустой пробирке 一 в самой низшей позиции, либо над существующими шариками 一прямо над текущим верхним шариком (т. е. в первой свободной позиции сверху).
После каждого взятия/постановки шарики в пробирке автоматически "стекают" вниз ^устраняются пустоты под ша-риками).


Перенос считается совершённым и засчитывается в счётчик ходов только при успешном помещении шарика в целевую пробирку.

Победа и завершение игры


Игра считается выигранной, когда для каждой пробирки выполняется условие: либо полностью пустая, либо все её шарики одного и того же цвета.
После достижения победы показывается экран с сообщением и представлены совершённые переносы, затем игра перезапускается в новой случайной раскладке.
Чтобы проверить нейросеть на способность работать без заимствований из Интернета, автор придумал правила к "уникальной" игре — "Тетрашки". Она объединяет механику "Пятнашек" с фигурами тетрамино из "Тетриса" (рис. 4). Цель игрока — перемещая цветные фишки с двумя пустыми местами, собирать из них тетрамино. Этого можно достигать путём комбинирования фигур по форме (рис. 5), изменения их цвета или положения (см. рис. 4). Нейросеть успешно всего за две попытки сгенерировала вполне рабочий вариант кода игры.

В варианте скетча tetraschki_ 2.ino генератором были созданы несколько базовых функций, реализующих игровой сценарий автора:
initBoard() // функция инициализации поля
findEmpties() // функция поиска пусто-мест на игровом поле
drawCell(int r, int c) // функция рисования ячейки поля (r,c)
readJoyAxis(int pin) // чтение аналоговой оси джойстика, возвращает -1/0/1
tryMoveEmpty(int ei, int dr, int dc) // функция перемещения пусто-места в направлении dr,dc
shuffleBoard(int moves) // функция перемешивания фишек на поле допустимыми перемещениями пусто-мест
handleJoystick() // функция обработки данных, полученных с джойстика и кнопки и реализации ходов
setupPins() // функция настройки режимов работы выводов-пинов
Среди констант, определяющих и задающих внешний вид игрового поля ИИ можно выделить:
const int COLS = 5; //
число колонок игрового поля
const int ROWS = 6; //
число строк игрового поля
const int CELL = 20; //
размер одной ячейки в пикселях
const int BOARD_X =8; //
отступ поля слева в пикселях

const int BOARD_Y= 12; //
отступ поля сверху в пикселях
const uint16_t COLOR_EMPTY = ST77XX_BLACK; // цветдля пустой ячейки (чёрный)
const uint16_t CHERRY = 0xD8A7; // вишнёвый цвет
(RGB565 приблизительно для (220,20,60))
const uint16_t COLORS[8]

[топ] { // массив цветов для значений 0...7 (0


пустая)
COLOR_EMPTY // 0
—пусто
ST77XX_RED, // 1 —
красный
ST77XX_GREEN, // 2
—зелёный
ST77XX_BLUE, // 3
一синий
ST77XX_CYAN, //4
—циан

ST77XX_MAGENTA, //
5 — пурпурный
ST77XX_YELLOW, // 6
一жёлтый
CHERRY //7 —
вишнёвый (заменяет оранжевый)
Для реализации графики игр и передачи её данных на дисплей использовались три библиотеки: Adafruit_GFX.h, Adafruit_ST7735.h и SPl.h.
Автор надеется, что тема статьи будет интересна читателям при самостоятельной разработке конструкций в тандеме с виртуальным помощником.

Файлы проекта
бабулер146 вне форума   Цитировать 0
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
местные флеш-игры Luke Разговоры обо всем 3 29.12.2013 06:03
[02-2010] Путь на подходах к искусственным сооружениям и в тоннелях Admin xx1 0 25.07.2012 23:10
Приложения и игры Admin Обсуждение форума 2 09.10.2011 16:30
[ОМ] Игры на дороге Admin Газета "Октябрьская магистраль" 0 30.06.2011 18:20
Старые игры Толян Разговоры обо всем 2 08.03.2010 07:43

Ответить в этой теме   Перейти в раздел этой темы   Translate to English


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.



Часовой пояс GMT +3, время: 21:53.

Яндекс.Метрика Справочник 
сцбист.ру сцбист.рф

СЦБИСТ (ранее назывался: Форум СЦБистов - Railway Automation Forum) - крупнейший сайт работников локомотивного хозяйства, движенцев, эсцебистов, путейцев, контактников, вагонников, связистов, проводников, работников ЦФТО, ИВЦ железных дорог, дистанций погрузочно-разгрузочных работ и других железнодорожников.
Связь с администрацией сайта: admin@scbist.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 
Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC Перевод: zCarot