С++ : "Змейка" - пишем за 20 минут

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.

Иконка канала Ленинский Букварь
239 подписчиков
12+
11 просмотров
3 дня назад
12+
11 просмотров
3 дня назад

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.

, чтобы оставлять комментарии