00:01 Введение и концепция игры Автор приветствует зрителей и сообщает что будет быстро и просто объяснять создание ретро-игры Змейка. Описывает концепцию игры: змея растёт подбирая еду и заканчивается если ударяется о стену или себя. 00:29 Начало разработки Объясняет что работает в портативной среде без микрофона и высокого разрешения. Создаёт стандартную консольную программу и добавляет экранный буфер. Устанавливает формат экрана 120x80. 01:42 Игровой цикл и структура змеи Игровой цикл выводит экранный буфер на экран. Разбивает цикл на три этапа: выбор времени и ввод данных логика игры отображение информации игроку. Решает использовать связанный список для хранения сегментов змеи вместо двухмерного массива. 02:15 Создание структуры сегмента змеи Определяет структуру сегмента змеи с параметрами x и y. Создаёт объект связанного списка для хранения змеи. Инициализирует координаты сегментов змеи по умолчанию. 03:35 Переменные состояния игры Вводит переменные для хранения информации о еде счёте направлении движения змеи и состоянии игры. Начинает с презентации игры. 04:35 Презентация игры Описывает процесс очистки экрана и рисования мебели названия игры и текущего результата. Рисует змею используя связанный список и переменную быть мёртвым. Рисует голову змеи и еду. 06:16 Управление игрой Реализует управление с помощью левой и правой клавиш. Использует ключевое слово getasynckey для получения состояния клавиш. Проверяет изменение состояния клавиш и управляет направлением движения змеи. 07:38 Движение змеи Заставляет змею двигаться добавляя новые головы в зависимости от направления движения. Определяет координаты головы змеи при движении вверх вниз вправо и влево. Отрубает хвост змеи при необходимости. 09:20 Обнаружение столкновений Проверяет находится ли голова змеи в пределах игровой зоны. Если змея нарушает границы устанавливает флажок неактивно. Проверяет столкновение змеи с едой увеличивает счёт и добавляет новую еду. 10:06 Дизайн игры Обсуждает случайный выбор координат для новой еды чтобы избежать несправедливости. Подчёркивает важность правильного выбора координат для избежания ситуаций когда еда оказывается внутри тела змеи. 11:02 Использование экранного буфера Экранный буфер используется как запоминающее устройство. Случайные координаты признаются действительными если есть пустое место. Проблема: еда кладётся внутрь змеи что несправедливо для игрока. 11:29 Решение проблемы с едой Еда кладётся туда где змея была в последний раз. Дублирование хвоста змеи для её роста. Проверка столкновений змеи с самой собой. 12:29 Проверка столкновений Проверка координат головы змеи относительно сегментов тела. Установка значения b dead равным true при столкновении. Избегание проверки головы змеи с самой собой для предотвращения короткой игры. 13:18 Тестирование игры Проверка роста змеи при поедании пищи. Превращение змеи в скелет при столкновении со стеной. Добавление сообщения о смерти змеи и возможность повторного запуска игры. 13:38 Обработка смерти змеи Вывод сообщения на экран при смерти змеи. Завершение основного цикла при смерти змеи. Ожидание нажатия пробела для повторного запуска игры. 15:06 Проблемы с задержкой Фиксированная задержка в игровом цикле останавливает игру. Необходимость распознавания нажатий клавиш без задержки. Использование библиотеки Хроно для обработки входных данных. 16:49 Сбалансированная задержка Изменение задержки в зависимости от направления движения змеи. Более короткая задержка при горизонтальном движении. Более длинная задержка при вертикальном движении. 18:00 Завершение и рекомендации Исправление опечатки с высотой экрана. Представление простой и функционально полноценной версии игры Snake. Призыв ознакомиться с другими работами автора и подписаться на GitHub и Twitter.
Источник: rutube.ru