Добавить в корзинуПозвонить
Найти в Дзене

🐍 Змейка в консоли на Python – игра, где код сам рисует мир

Современные игры поражают графикой, но иногда настоящая магия – в минимализме. Ведь можно создать живую игру всего одной консолью, несколькими циклами и кучкой символов. Вот именно такая – змейка на чистом Python, без библиотек вроде pygame. Всё строится только на стандартных средствах языка и умении терминала быстро рисовать текст. Когда вы запускаете snake.py, программа создаёт поле размером WIDTH x HEIGHT. По умолчанию: Это 30 клеток в ширину и 20 в высоту. Но если консоль кажется «узкой», можно увеличить ширину до 60, чтобы змейка чувствовала себя свободнее. Поле рисуется символами. В коде прямо прописано: Эта строка создаёт рамку из решёток # – верхнюю границу. Аналогично рисуются боковые стены и нижняя строка. Всё, что между ними – игровое пространство, где живёт наша змейка. Положение змейки хранится в двусторонней очереди из модуля collections: Здесь три координаты – голова и два сегмента тела. Каждый ход игра просто добавляет новый сегмент в начало и убирает последний – вот и
Оглавление

Современные игры поражают графикой, но иногда настоящая магия – в минимализме. Ведь можно создать живую игру всего одной консолью, несколькими циклами и кучкой символов. Вот именно такая змейка на чистом Python, без библиотек вроде pygame. Всё строится только на стандартных средствах языка и умении терминала быстро рисовать текст.

💾 Ссылка на проект в GitHub.

Как выглядит игра в консоли
Как выглядит игра в консоли

⚙️ Как работает игра внутри

Когда вы запускаете snake.py, программа создаёт поле размером WIDTH x HEIGHT. По умолчанию:

Поле
Поле

Это 30 клеток в ширину и 20 в высоту. Но если консоль кажется «узкой», можно увеличить ширину до 60, чтобы змейка чувствовала себя свободнее.

Поле рисуется символами. В коде прямо прописано:

Как рисуется поле
Как рисуется поле

Эта строка создаёт рамку из решёток # – верхнюю границу. Аналогично рисуются боковые стены и нижняя строка. Всё, что между ними – игровое пространство, где живёт наша змейка.

🐍 Сердце змейки – очередь deque

Положение змейки хранится в двусторонней очереди из модуля collections:

Положение змейки
Положение змейки

Здесь три координаты – голова и два сегмента тела. Каждый ход игра просто добавляет новый сегмент в начало и убирает последний – вот и движение. Когда змейка съедает еду (food), хвост не удаляется, и тело становится длиннее.

Чтобы быстро проверять столкновения, используется множество:

-5

Это позволяет мгновенно узнать, врезалась ли змейка сама в себя.

🎮 Управление и обработка клавиш

Самое интересное – чтение клавиатуры без блокировок. На Windows используется модуль msvcrt, а на Linux и macOS – связка termios, tty, select.

Вот пример:

Мультиплатформенность
Мультиплатформенность

Эта часть перехватывает нажатия стрелок и преобразует их в команды 'UP', 'DOWN', 'LEFT', 'RIGHT'.

Для Unix-систем всё сделано через select.select, чтобы считывать ввод без ожидания.

Игрок может управлять как стрелками, так и клавишами WASD, прописано в:

Управление WASD либо стрелочки
Управление WASD либо стрелочки

🍏 Еда и очки

Каждый раз, когда змейка ест звёздочку *, счёт увеличивается:

Счёт в игре
Счёт в игре

Новая еда появляется в случайной свободной клетке:

Появление еды
Появление еды

Так поле никогда не заполняется едой в том месте, где уже есть тело.

💥 Столкновения и завершение игры

Любое касание стены или самого себя – мгновенный проигрыш:

-10

Игра выходит из цикла и выводит:

Проигрыш.
Проигрыш.

Но есть и возможность победы:

Победа!
Победа!

Если игроку удаётся заполнить всё пространство, он получает надпись «Победа!» и заслуженное уважение Python-разработчиков.

🧠 Скорость и «плавность»

Скорость задаётся переменной:

Скорость игры
Скорость игры

Это означает, что каждые 0.1 секунды происходит один шаг. Хочешь быстрее – поставь 0.05. Хочешь хардкор – 0.02.

🕹️ Геймплей и атмосфера

Когда запускаешь python snake.py, экран очищается, курсор прячется (\x1b[?25l), и начинается движение.

Каждый шаг рисуется заново – это даёт ощущение «анимации» прямо в тексте. Змейка движется плавно, а игрок ловит ритм: шаг – шаг – еда!

Игра простая, но при этом невероятно «живая». В ней нет графики, нет музыки, но зато есть ощущение настоящего кода, который дышит. Каждый символ, каждая решётка, каждая звёздочка выведены осознанно.

💡 Попробуйте запустить

Управляйте змейкой через WASD, набирайте очки и попробуйте дойти до конца – заполнить всё поле.
И это всё – в одной консоли.

🐍 Хотите попробовать сами?

Исходный код полностью открыт и доступен на GitHub – вы можете скачать игру, запустить её у себя и даже улучшить. Добавьте цвета, рекорды или ускорение, если душа просит чуть больше драйва.

Открыть проект на GitHub и скачать игру Snake на Python

Запускайте python snake.py, управляйте змейкой с помощью WASD, ешьте звёздочки и попытайтесь заполнить всё поле. Пусть консоль оживёт под вашими руками!