Skip to content

loanelly/Snake-AI-L

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🐍 Snake-AI-L

Snake-AI-L — это сверхумный гибридный искусственный интеллект для классической игры «Змейка», совмещающий в себе математические алгоритмы поиска путей и динамическое самообучение с подкреплением (Reinforcement Learning).


❤️ Дань уважения / Tribute to Code Bullet

Этот проект — не просто технический эксперимент. Это искренняя дань уважения англоязычному ютуберу Code Bullet.

Когда я был маленьким, я взахлеб смотрел его видео о том, как он создает безумные ИИ, заставляя их играть в Flappy Bird, Tetris и, конечно же, в Змейку. Его ролики, наполненные фирменным юмором, бесконечными циклами смертей игровых персонажей и первыми победами обученных нейросетей, вдохновили меня и привили огромную любовь к программированию и технологиям ИИ.

Спустя годы я написал этот проект, чтобы воплотить детскую мечту в реальность и создать свой собственный «цифровой разум», работающий по тем же принципам гибридной логики, о которых рассказывал Code Bullet.


🏗️ Базовый фундамент / Built Upon Snake-IO

Данный проект разработан не с нуля — он базируется на кодовой архитектуре моего предыдущего репозитория 🐍 Snake-IO (Simple Version).

Snake-IO — это упрощенная, высокооптимизированная и стабильная версия классической игры «Змейка» на Python и Pygame. Исходная сборка была полностью лишена тяжелых графических элементов, меню и задержек, что сделало её идеальной изолированной средой (Sandbox) для интеграции алгоритмов машинного обучения (Machine Learning) и обучения с подкреплением (Reinforcement Learning).

🌟 Почему фундамент Snake-IO идеален для этого ИИ:

  • Мгновенный сброс (Instant Reset): При столкновении со стеной или хвостом игра не зависает на экране «Game Over» и не требует ручного перезапуска. Метод return мгновенно сбрасывает состояние, позволяя агенту ИИ безболезненно и без задержек начинать новые эпохи (episodes) обучения.
  • Вынесенный интерфейс: Панель счета полностью вынесена за пределы игрового поля (HEADER_HEIGHT). Это позволяет алгоритмам считывать чистую координатную сетку игрового пространства без визуального шума от текста.
  • Гибкое управление: Вшитая поддержка WASD и стрелочек изначально позволяла легко симулировать действия агента через генерацию виртуальных нажатий клавиш (pygame.event.post). В текущей версии это переросло в прямое управление векторами направления.
  • Максимальная легковесность: Минимальное количество зависимостей гарантирует, что процессор не тратит ресурсы на рендеринг лишней графики, отдавая всю мощность математическим расчетам ИИ.

🚀 Ключевые Особенности Snake-AI-L

  • Гибридный Разум: ИИ не просто совершает случайные ходы, а просчитывает геометрию карты в реальном времени.
  • Три Режима Скорости: Переключение между режимами симуляции одной клавишей в реальном времени.
  • Панель Телеметрии (Dashboard): Правая часть экрана отображает «мысли» ИИ: веса решений, показания радарных датчиков, текущий фактор хаоса и размер базы знаний.
  • Защита от Зацикливания: ИИ умеет измерять доступную площадь и никогда не совершит самоубийство, если вход в петлю хвоста меньше его собственного размера.

🎛️ Режимы Работы (Управление)

Управление симуляцией осуществляется прямо во время игры с помощью клавиш на клавиатуре:

Клавиша Режим симуляции Описание фреймрейта Визуальное состояние
1 Человеческий Фиксированные 15 FPS Графика игры + Полная аналитика
2 Ускоренный Разблокированные 500 FPS Быстрый визуальный мониторинг
3 Ультра (Турбо) Максимальный FPS процессора Отрисовка отключена (Красная заглушка прогресса)

🧠 Архитектура Интеллекта

Система принятия решений построена на базе трех взаимосвязанных алгоритмов:

  1. Алгоритм поиска путей $A^*$ (A-Star): Если путь к яблоку безопасен и ИИ уверен в своих силах, он использует идеальный математический маршрут для мгновенного сбора еды.
  2. Алгоритм Flood Fill (Анализ тупиков): Перед каждым шагом ИИ виртуально «заливает» пространство вокруг себя. Если площадь свободного места меньше длины тела змейки, ход блокируется как смертельный тупик, предотвращая врезание в собственный хвост.
  3. Q-Learning (Табличный алгоритм RL): Локальные инстинкты змейки. Если яблоко заблокировано хвостом, ИИ переходит в режим выживания и ювелирно маневрирует по координатам относительного зрения.

🛠️ Установка и Запуск

Требования

Для работы проекта необходим установленный интерпретатор Python версии 3.8 или выше, а также библиотека Pygame.

Инструкция по запуску

  1. Склонируйте репозиторий:

    git clone https://github.com/loanelly/Snake-AI-L
    cd Snake-AI-L
  2. Установите зависимость:

    pip install pygame
  3. Запустите скрипт:

    python main.py

📊 Параметры Обучения (Hyperparameters)

В коде используются следующие предустановленные коэффициенты:

  • ALPHA (Learning Rate) = 0.3 — скорость обновления матрицы знаний ИИ.
  • GAMMA (Discount Factor) = 0.95 — важность долгосрочного выживания по отношению к быстрой выгоде.
  • EPS_DECAY = 0.9995 — скорость уменьшения фактора хаоса (исследовательских ходов).

🧹 Чистота репозитория

Проект полностью избавлен от мусора. В репозиторий включен настроенный файл .gitignore, который автоматически блокирует кэш Python (__pycache__), временные файлы сред разработки (IDLE, VS Code) и системные логи Windows.


📝 Лицензия

Проект распространяется под лицензией Open Source. Вы можете свободно использовать, модифицировать и распространять данный код.


Сделано с ❤️ руками loanelly.

About

Сверхумный гибридный ИИ для игры в Змейку, вдохновленный Code Bullet. Объединяет обучение с подкреплением (Q-Learning), поиск путей A* и защиту от тупиков Flood Fill с панелью телеметрии в реальном времени.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages