Змейка в Qt

В этом ролике мы напишем змейку в Qt без использования встроенного дизайнера. При этом мы затронем материал из прошлых роликов (рисование, нажатие клавиш и таймеры) и рассмотрим новые приемы. Здесь понадобятся базовые знания принципов ООП.
Эпизоды:
00:00 - введение
00:52 - игровое поле
04:36 - элементы змейки
05:22 - собираем змейку
06:17 - отрисовка змейки
07:51 - движение змейки
09:39 - ограничение игрового поля
11:11 - управление клавишами
15:00 - исправляем баг
16:40 - проигрыш
19:40 - еда для змейки
22:19 - добавляем цвет
Qt #программирование #змейка

Пікірлер: 32

  • @exhaustedabuser1565
    @exhaustedabuser1565 Жыл бұрын

    ДА Я НЕ ВЕРЮ ЧТО ТЫ ВЕРНУЛСЯ, БРАТАН ПРОДОЛЖАЙ КЬЮТИ УРОКИ, ОЧЕНЬ ГОДНЫЕ, СПАСИБО

  • @WoWCoolBack
    @WoWCoolBack Жыл бұрын

    Я нашел тебя в период твоего отсутствия, возвращение казалось невозможным, спасибо за твои уроки и то, что ты делаешь, по qt реально мало русскоязычного материала, а курсов вообще нету, с возвращением!!!

  • @kopoba8830
    @kopoba8830 Жыл бұрын

    Очень ждал возвращения!

  • @OpenFrimeTVcom
    @OpenFrimeTVcom Жыл бұрын

    думал что уже не увижу эти крутые ролики)

  • @goodbye7145
    @goodbye7145 Жыл бұрын

    Спасибо за урок, только начал учить qt и не хватало таких видео! Отдельное спасибо что вся работа в коде содержится на видео и идет последовательно. А то насмотрелся видео, где автор на видео не показывает большую часть написанного кода, из за чего новичкам повторить проект невозможно.

  • @le0_srv484
    @le0_srv48411 ай бұрын

    Спасибо тебе добрый человек!

  • @user-ij7sr8kd5b
    @user-ij7sr8kd5b Жыл бұрын

    спасибо, хорошее и подробное видео !

  • @sergatmel8242
    @sergatmel8242 Жыл бұрын

    Спасибо. Познавательно.

  • @jamil.ziganshin
    @jamil.ziganshin Жыл бұрын

    О, с возвращением!!!

  • @mrybsdev1006
    @mrybsdev1006 Жыл бұрын

    Ураа наконец-то

  • @user-kv7qk4nx3n
    @user-kv7qk4nx3n11 ай бұрын

    Круть)) еще бы тетрис поглядеть🙃

  • @nakamasama
    @nakamasama Жыл бұрын

    Крутой проект. Я ещё не познал дзен в написании программ, интерфейс которых строится через код, а не графические средства.

  • @programmcat

    @programmcat

    Жыл бұрын

    Тут в принципе база для этого показана

  • @ksovox8262
    @ksovox8262 Жыл бұрын

    Только начал qt осваивать, надеюсь, твои уроки помогут в этом)

  • @programmcat

    @programmcat

    Жыл бұрын

    Этот ролик довольно сложный для начала

  • @MN-kb5nr
    @MN-kb5nr Жыл бұрын

    Годно!

  • @bulatakbarov103
    @bulatakbarov103 Жыл бұрын

    Кот Вернулся!😼

  • @desys.
    @desys. Жыл бұрын

    Котэ Змейка получилась, теперь ждем выпуск "КотэПёс"

  • @luxuriousarizona2365
    @luxuriousarizona2365 Жыл бұрын

    He's alive!

  • @blackpinknyashka
    @blackpinknyashka Жыл бұрын

    Картинка_Спанч_Боб_с_радугой_над_головой_и_надписью_Magic_numbers.jpg

  • @Eric_Cartmany
    @Eric_Cartmany11 ай бұрын

    Бро, скажи есть ли курс по Qt от тебя. На твоем канале нашел только C++ очень бы хотелось увидеть аналогичный по Qt, а то так информация как то разбросана получается. Спасибо за то что ты делаешь. Всех благ и больше обучающих уроков по Qt.

  • @programmcat

    @programmcat

    11 ай бұрын

    Курса нет

  • @vainar_
    @vainar_8 ай бұрын

    крутое видео! Хотелось бы узнать есть ли к этому коду репозиторий на github с кодом, застрял на моменте с проигрышем, не могу найти ошибку из-за чего происходит краш программы понимаю в каком месте:m_moveSnakeTimer->stop(); delete m_snake; delete m_moveSnakeTimer; а из-за чего не могу понять, пересмотрел отрезок видео несколько раз, ничего не нашёл. Есть вариант просто убрать delete m_snake; но тогда будет утечка памяти, но при этом всё работает. Ответьте пожалуйста, очень надо

  • @alexishome4322
    @alexishome4322 Жыл бұрын

    Супер, всё очень интересно и понятно. Может кто знает как установить qt и креейтор в 2023 в России(((( можно в Линукс.

  • @programmcat

    @programmcat

    Жыл бұрын

    попробуй загуглить, там вариантов масса

  • @user-db2mk5dq3k

    @user-db2mk5dq3k

    Жыл бұрын

    Во время установки надо впн 2 раза переподключать. Или если есть у знакомого установленый, попроси скинуть архивом

  • @programmcat

    @programmcat

    Жыл бұрын

    Итак, попробовал два рабочих варианта. Первый: скачать оффлайн установщик версии 5.12(помоему, может там другая) и установить без интернета. Второй - переносим всю папку qt из диска С с компьютера, где он уже установлен, так можно установить любую версию. Объем правда великоват, около 40гб, я использовал лановский кабель для этого. Так что в принципе, можно разместить архив где-то в интернете и скачивать всю папку целиком, никаких проблем со сборкой проектов не было

  • @sayxzero
    @sayxzero Жыл бұрын

    Сразу оговорюсь, что программирование, как и искусство, не подразумевает "правильных" решений. Вопросы чисто с познавательной точки зрения. Не кажется ли вам, что лучше создавать не несколько раз по одному объекту при помощи new, а сразу массив объектов? Я так понимаю, "m_" это просто часть названия для удобства чтения кода, не больше? Не стоило ли унаследовать классы от общего класса "Game", например, заместо того чтобы делать их дружественными (общие функции бы можно было вносить в базовый класс)? Была ли какая-то идея или Вы просто выбирали из двух равнозначных вариантов?

  • @sayxzero

    @sayxzero

    Жыл бұрын

    Проект, кстати, классный, спасибо, залип от начала до конца видоса)

  • @ksovox8262
    @ksovox8262 Жыл бұрын

    Как изменить оформление ползунка? Мне нужно, чтобы над ним была линия спектра цветов(ползунок меняет цвет, т.е длину волны света)

  • @user-ok5js2xh8g
    @user-ok5js2xh8g Жыл бұрын

    Спасибо, смотрю с удовольствием. Ещё бы ссылку на исходники, а то всё делаю как в видео, но: 1) на 18.36 ловлю ошибку: terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc и программа вылетает 2) В видео 24.29 варнинг : Use of memory after it is freed [clang-analyzer-cplusplus..... //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------// Проблему победил, рецепт: 1) Файл game.cpp, описание функции void GameField::MoveSnakeSlot(), блок "Проигрыш". После вызова функции GameOver(); добавил return; чтобы не вызвался последующий repaint(); Как я понял, этот repaint() у меня вызывал terminate called after throwing an instance of 'std::bad_alloc' //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------// 2) Файл game.cpp, описание функции void GameField::MoveSnakeSlot(). Строчку: m_snake->m_snakeBody.insert(0, newSnakeItem); переместил выше, в блок "Ограничение игрового поля", сразу после строчки: else if (newSnakeItem->m_y >= m_fieldSize) newSnakeItem->m_y = 0; //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------// 3) Файл game.cpp, описание функции void GameField::GameOver(). После строчек: QString text = "Начать заново - Пробел"; emit ChangeTextSignal(text); Добавил repaint(), чтобы в игровом поле появлялась надпись: painter.drawText(QRect(0, 0, width(), height()), Qt::AlignCenter, "Игра проиграна Счёт: " + QString::number(m_score)); По поводу вопроса на 3.35: www.cyberforum.ru/qt/thread2267992.html#post16670457