С++ : Тетрис - пишем в консоли с нуля

00:00 Введение в тетрис • Демонстрация игры в тетрис с помощью командной строки. • Объяснение функций: вращение фигур, обнаружение столкновений, подсчет очков. • Подчёркивание важности игрового движка для понимания программирования игр. 00:56 Основы игрового движка • Игровой движок содержит логику, правила и сложные задачи игры. • Графика — это лишь поверхность, которую можно изменить позже. • Фокус на игровом цикле, обнаружении столкновений и механизме подсчёта очков. 01:53 Создание ресурсов • Создание семи фигур тетрамино для игры. • Использование одномерных массивов вместо многомерных для представления фигур. • Визуализация фигур в виде нитей для наглядности. 03:09 Индексация массивов • Объяснение индексации одномерных массивов для вращения фигур. • Пример вычисления индекса для поворота на 90 градусов. • Уравнения для других углов поворота: 180 и 270 градусов. 07:24 Функция поворота • Реализация функции поворота с параметрами x, y и r. • Возврат индекса с учётом уравнений поворота. 08:20 Создание игрового поля • Определение ширины и высоты игрового поля. • Использование массива символов без знака для хранения картографической информации. • Инициализация массива для игрового поля с условием для границ. 09:19 Рисование в командной строке • Использование командной строки как экранного буфера. • Установка переменных ширины и высоты экрана. • Создание массива символов и захват дескриптора буфера консоли. 10:17 Введение в игровые циклы • Игровые циклы — основа игрового движка, определяющая последовательность событий. • Простой игровой цикл для «Тетриса» включает управление временем, пользовательским вводом, обновлением игровой логики и отображением на экране. • Реализация игрового цикла с флагом «окончена» для управления состоянием игры. 11:14 Рисование на игровом поле • Смещение рисунков на два пикселя для создания границы. • Использование массива строк для отображения фигур тетриса и пустого пространства. • Индексация массива строк по значениям в массиве полей. 12:59 Основные этапы игрового цикла • Управление временем для обеспечения постоянного игрового опыта. • Обработка пользовательского ввода без использования событий. • Реализация игровой логики: падение фигур, определение столкновений, подсчёт очков. • Отображение результата на экране. 13:23 Обнаружение столкновений в «Тетрисе» • Простота механизма обнаружения столкновений из-за перемещения фигур на одну клетку за раз. • Проверка соответствия ячеек массива полей и фигур тетриса. • Создание функции для проверки совместимости фигур. 16:11 Реализация функции проверки совместимости • Передача идентификатора тетромино, текущей ротации и местоположения в массив. • Вложенный цикл для проверки совместимости фигур. • Преобразование массива тетромино в массив полей для проверки столкновений. 18:05 Проверка подпрограмм перед написанием игры • Проверка работы подпрограмм перед реализацией игры. • Отображение текущей активной фигуры на экране. • Компенсация смещения игрового поля и настройка ширины экрана. 19:30 Настройка ширины экрана • Установка ширины экрана на текущее значение плюс 65. • Объяснение добавления 65 для корректного отображения фигур тетриса. 19:54 Имитация игрового поля тетриса • Использование ASCII для отображения букв a, b, c, d, e, f и g. • Проверка работы программы: тетромино не падает, но программа рисует символы. • Установка задержки в 50 миллисекунд для имитации игрового тика. 20:56 Ввод данных и управление клавишами • Использование getasynckeystate для получения состояния клавиш. • Определение четырёх клавиш: влево, вправо, вниз и Z. • Проверка состояния клавиш через массив логических значений. 21:53 Проверка перемещения фигур • Проверка положения фрагмента при нажатии левой клавиши. • Обновление переменной x при перемещении влево или вправо. • Аналогичная проверка для перемещения вниз. 23:42 Оптимизация кода • Замена вложенных «если» на логическое «и». • Добавление кода для управления поворотом фигуры при нажатии Z. 24:31 Фиксация поворота • Установка флажка для определения, удерживает ли пользователь клавишу поворота. • Ограничение поворота до 90 градусов за раз. 26:14 Управление скоростью падения фигур • Настройка скорости падения фигур в зависимости от уровня сложности. • Подсчёт игровых тиков и перемещение фигуры вниз при достижении заданной скорости. 28:05 Завершение игры и выбор следующего фрагмента • Фиксация текущей фигуры на поле и проверка наличия горизонтальных линий. • Выбор следующего фрагмента псевдослучайным образом. • Завершение игры, если следующий фрагмент не помещается. 30:08 Визуальное вознаграждение за линии 30:50 Цикл и проверка границ 31:46 Присвоение номера элементам 31:54 Использование вектора для линий 32:23 Обновление буфера отображения 32:51 Перемещение фигур 33:21 Проверка работы системы 33:48 Увеличение сложности игры 34:32 Подсчёт очков 35:30 Отображение результата 35:30 Заключение

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

00:00 Введение в тетрис • Демонстрация игры в тетрис с помощью командной строки. • Объяснение функций: вращение фигур, обнаружение столкновений, подсчет очков. • Подчёркивание важности игрового движка для понимания программирования игр. 00:56 Основы игрового движка • Игровой движок содержит логику, правила и сложные задачи игры. • Графика — это лишь поверхность, которую можно изменить позже. • Фокус на игровом цикле, обнаружении столкновений и механизме подсчёта очков. 01:53 Создание ресурсов • Создание семи фигур тетрамино для игры. • Использование одномерных массивов вместо многомерных для представления фигур. • Визуализация фигур в виде нитей для наглядности. 03:09 Индексация массивов • Объяснение индексации одномерных массивов для вращения фигур. • Пример вычисления индекса для поворота на 90 градусов. • Уравнения для других углов поворота: 180 и 270 градусов. 07:24 Функция поворота • Реализация функции поворота с параметрами x, y и r. • Возврат индекса с учётом уравнений поворота. 08:20 Создание игрового поля • Определение ширины и высоты игрового поля. • Использование массива символов без знака для хранения картографической информации. • Инициализация массива для игрового поля с условием для границ. 09:19 Рисование в командной строке • Использование командной строки как экранного буфера. • Установка переменных ширины и высоты экрана. • Создание массива символов и захват дескриптора буфера консоли. 10:17 Введение в игровые циклы • Игровые циклы — основа игрового движка, определяющая последовательность событий. • Простой игровой цикл для «Тетриса» включает управление временем, пользовательским вводом, обновлением игровой логики и отображением на экране. • Реализация игрового цикла с флагом «окончена» для управления состоянием игры. 11:14 Рисование на игровом поле • Смещение рисунков на два пикселя для создания границы. • Использование массива строк для отображения фигур тетриса и пустого пространства. • Индексация массива строк по значениям в массиве полей. 12:59 Основные этапы игрового цикла • Управление временем для обеспечения постоянного игрового опыта. • Обработка пользовательского ввода без использования событий. • Реализация игровой логики: падение фигур, определение столкновений, подсчёт очков. • Отображение результата на экране. 13:23 Обнаружение столкновений в «Тетрисе» • Простота механизма обнаружения столкновений из-за перемещения фигур на одну клетку за раз. • Проверка соответствия ячеек массива полей и фигур тетриса. • Создание функции для проверки совместимости фигур. 16:11 Реализация функции проверки совместимости • Передача идентификатора тетромино, текущей ротации и местоположения в массив. • Вложенный цикл для проверки совместимости фигур. • Преобразование массива тетромино в массив полей для проверки столкновений. 18:05 Проверка подпрограмм перед написанием игры • Проверка работы подпрограмм перед реализацией игры. • Отображение текущей активной фигуры на экране. • Компенсация смещения игрового поля и настройка ширины экрана. 19:30 Настройка ширины экрана • Установка ширины экрана на текущее значение плюс 65. • Объяснение добавления 65 для корректного отображения фигур тетриса. 19:54 Имитация игрового поля тетриса • Использование ASCII для отображения букв a, b, c, d, e, f и g. • Проверка работы программы: тетромино не падает, но программа рисует символы. • Установка задержки в 50 миллисекунд для имитации игрового тика. 20:56 Ввод данных и управление клавишами • Использование getasynckeystate для получения состояния клавиш. • Определение четырёх клавиш: влево, вправо, вниз и Z. • Проверка состояния клавиш через массив логических значений. 21:53 Проверка перемещения фигур • Проверка положения фрагмента при нажатии левой клавиши. • Обновление переменной x при перемещении влево или вправо. • Аналогичная проверка для перемещения вниз. 23:42 Оптимизация кода • Замена вложенных «если» на логическое «и». • Добавление кода для управления поворотом фигуры при нажатии Z. 24:31 Фиксация поворота • Установка флажка для определения, удерживает ли пользователь клавишу поворота. • Ограничение поворота до 90 градусов за раз. 26:14 Управление скоростью падения фигур • Настройка скорости падения фигур в зависимости от уровня сложности. • Подсчёт игровых тиков и перемещение фигуры вниз при достижении заданной скорости. 28:05 Завершение игры и выбор следующего фрагмента • Фиксация текущей фигуры на поле и проверка наличия горизонтальных линий. • Выбор следующего фрагмента псевдослучайным образом. • Завершение игры, если следующий фрагмент не помещается. 30:08 Визуальное вознаграждение за линии 30:50 Цикл и проверка границ 31:46 Присвоение номера элементам 31:54 Использование вектора для линий 32:23 Обновление буфера отображения 32:51 Перемещение фигур 33:21 Проверка работы системы 33:48 Увеличение сложности игры 34:32 Подсчёт очков 35:30 Отображение результата 35:30 Заключение

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