Tetris с нуля на языке C

Sdílet
Vložit
  • čas přidán 25. 10. 2022
  • Это видео специально для тех, кто хотел бы получить чистую логическую модель игры и разобраться в ней, не притягивая какую-то специальную среду разработки (IDE) или спецэфическую библиотеку, без которой "ничего не работает". Для первого теста достаточно стандартной библиотеки языка C. Повторить проект сможет каждый, кто написал хотя бы одно консольное приложение. Прикрепить данный код к своему проекту не составит труда, так как вся модель игры тетрис реализована в рамках отдельного модуля. Видео затрагивает вопросы, связанные с организацией игрового цикла и не только. Так, например, с помощью процедуры nanosleep запрограммирована обработка фиксированного числа кадров в секунду, а способ взаимодействия с игроком позволяет достаточно просто осуществить запись или воспроизведение действий этого самого игрока или смоделировать принятие решений соперником. В материале присутствует пример использования данной модели с библиотекой ncurses. Из последней взяты функции рисования разноцветных символов и обработки клавиатурного ввода.
  • Věda a technologie

Komentáře • 52

  • @user-ji4ic6tp9u
    @user-ji4ic6tp9u Před rokem +35

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

    • @tripledistillation1755
      @tripledistillation1755  Před rokem +4

      Спасибо за высокую оценку. Интересно было бы узнать о Ваших предпочтениях относительно подачи материала. Стоит ли чаще демонстрировать работоспособность фрагментов алгоритма по отдельности? Что лучше: подготовленный текст речи (как в данном ролике) или "свободное" изложение?

    • @user-ji4ic6tp9u
      @user-ji4ic6tp9u Před rokem +7

      @@tripledistillation1755 Здравия автор. Подготовленный текст лучше, он освобождён от мусорных и шаблонных фраз, обладает информационной полнотой и краткостью. Это и отличает контент от имеющегося на просторах сети. Очень профессиональная озвучка, хороший тембр, акценты. Лучше сохранить этот стиль для своих творений. Заметил, что блоки оформлены не по Си-стилю, однако это экономит место (возможно это удобно, но мне по нраву стиль в оригинале, он выражает структурированность программ и отдельных элементов). Улучшить наглядность можно добавлением разных схем, с одной стороны они намекают на возможность применения ООП, с другой - формируют общее представление о программе на уровне создаваемых "объектов" и их взаимодействии. Таким образом проявляется суть алгоритма и видна целостность программы. Очень хороший прием, который помогает выстраивать материал, это поставить себя на место того, кто его смотрит. Тогда будет понятно нужно ли чаще запускать программу для показа, нужно ли напомнить синтаксис языка (полезно бывает начинающим, которые смотрят видео, но не видели других),... Слишком долгие видео лучше логически разбить на смысловые части, как главы книги. Иногда нужно остановиться и показать, что уже написали, проговорить структуру программы (повторение и обобщение). Приемов очень много разных, важно сохранить авторский стиль! Мне же было интересно смотреть именно твоё видео и сравнивать, это по классике, а это необычный прием, а это создано "с нуля" и без спецсредств. И чем больше видел соответствий, тем по душе было видео. Знаю, что такие видео требуют большой подготовки и труда. Это видно и за это подписка.

    • @tripledistillation1755
      @tripledistillation1755  Před rokem +3

      Спасибо огромное за подробный и развернутый ответ. Конструктивная обратная связь - вещь крайне полезная. Постараюсь не менять стиль изложения в следующих видео, избегая, по возможности, тех факторов, которые затрудняют восприятие

    • @quest524
      @quest524 Před rokem

      ​@@tripledistillation1755 мне тоже очень нравиться,классная подача, без воды.
      хотелось бы от тебя увидеть, одно видео, там где все рассказано про программу обучения ассемблера прямо чтоб так же было все расписано как начать что попутно должен знать, что должен знать для понимания дизассемблера.
      так же и по си.
      большое спасибо,делай больше видео делай у тебя талант преподносить материал.

    • @DmitriNesterov
      @DmitriNesterov Před 8 měsíci

      Да уж, оторваться невозможно ❤

  • @vladilslavdurnev5083
    @vladilslavdurnev5083 Před 3 měsíci

    Отличные материал и подача! Спасибо огромное за ваш труд!

  • @hanaksi
    @hanaksi Před rokem +1

    Спасибо, очень крутое видео! Можно ещё такого же контента?!

  • @clqwnless
    @clqwnless Před 8 měsíci

    Благодарю за видео!❤

  • @mrdixioner
    @mrdixioner Před rokem +4

    Спасибо огромное!!! Действительно, очень редкий контент!!! Начал изучать язык Си, много воды по началам программирования, но очень редко попадаются видео, где обучение идёт на примерах, а особенно на русском. Лично меня интересует как консольная псевдо-графика, так и (особенно) 2д или 3д графика, ну и разработка оконных приложений (к примеру есть интересные материалы по X11 (создание окна, отработка событий и т.д.), OpenGL и GTK4). У Вас всё по полочкам разложено и очень хорошо преподнесён материал!!!

    • @tripledistillation1755
      @tripledistillation1755  Před rokem +1

      Спасибо за отзыв! Рад, что материал оказался для Вас полезен

    • @electronic008
      @electronic008 Před rokem

      Могу посоветовать использовать еще библиотеку ncurses под Linux- (и вообще Unix-)платформу. Это библиотека, предназначенная для управления вводом-выводом на терминал. Позволяет задавать экранные координаты и цвет выводимых символов. Это так же и хороший фреймворк для создания красивого пользовательского интерфейса в текстовом режиме. Библиотека содержит функции управления окнами и меню, а так же «библиотеку-сестру» panel, управляющую панелями.

  • @_fffffffff
    @_fffffffff Před měsícem +11

    S21 есть тут такие ?

    • @user-mu9pr5ch5e
      @user-mu9pr5ch5e Před 18 dny

      Подобное на первой неделе было? 😨

    • @tripledistillation1755
      @tripledistillation1755  Před 16 dny

      О чём речь?

    • @user-qg2wz2mm1r
      @user-qg2wz2mm1r Před 15 dny

      Передаем привет от студентов школы 21. Нам дали тетрис делать под финал ветки си​@@tripledistillation1755

    • @meruka8418
      @meruka8418 Před 11 dny

      @@user-mu9pr5ch5e нет, на основном обучении, хотя первый групповой это сделать понг, так что нечто похожее да

    • @valentinashevy8670
      @valentinashevy8670 Před 10 dny +1

      Пир ту пир 😂

  • @ahahahahahahahahahaahahaha5306

    Triple Like!!!

  • @qa337
    @qa337 Před 9 měsíci +3

    Ждём реализацию на ассемблере

  • @beastdope1652
    @beastdope1652 Před 3 měsíci

    Спасибо тебе большое, добрый человек, за такой полный и грамотный курс. Можешь ли порекомендовать какой-нибудь материал для развития такого навыка мышления как у тебя? Чтобы так по полочкам грамотно выходило одно из другого, литература, практика, всё что угодно, буду благодарен)

    • @tripledistillation1755
      @tripledistillation1755  Před 3 měsíci

      Спасибо! На мышление повлиял предмет "математический анализ". Можно посмотреть разные схемы доказательств теорем. Например, критерия Коши о равномерной сходимости числовой последовательности. Это поможет понять - что такое критерий вообще. Любые теоремы с первого курса мехмата подойдут.
      Полезно почитать о структуре математических определений. Тогда станет ясно - как строить определение чего угодно.
      Про "программирование сверху" - это Стив Макконел "Совершенный код". По-моему, из этой книги.
      В общем, математика - наше всё)

  • @fuyuzed4781
    @fuyuzed4781 Před měsícem

    Может кто-то подсказать почему копия мейка из проекта выдает ошибку: make: *** No rule to make target 'src/tetris', needed by 'SimpleTetris'. Stop.

  • @eprst0
    @eprst0 Před 8 měsíci

    Для геймдева лучше Си/Си++, ну может еще раст, чем другие языки. Та же Java имеет свой рантайм, который нужно знать, жрет много памяти и менее производительна. Согласны?

    • @tripledistillation1755
      @tripledistillation1755  Před 8 měsíci

      Вот есть Paint на net framework. А возможно создать программу, решающую те же задачи, но без использования фреймворка, исключительно на минимальном наборе библиотек? Думаю, что да

  • @user-zm6ov2kx3i
    @user-zm6ov2kx3i Před 8 měsíci

    Комментарий в продвижение видео

  • @user-ry5oh3qt2u
    @user-ry5oh3qt2u Před 8 měsíci +1

    Ncurses уже значит не чистый С)) Чистый С это запись в фреймбуффер линукса напрямую, без помогалок)

    • @tripledistillation1755
      @tripledistillation1755  Před 8 měsíci

      В видео первый рабочий вариант реализован через стандартный вывод без ncurses

  • @lemmenmin7676
    @lemmenmin7676 Před 8 měsíci

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

  • @Standoff-yg1hl
    @Standoff-yg1hl Před měsícem

    можете скинуть код пожалуйста

  • @tripledistillation1755

    Добавлен исходник на tripledistillation.ru

    • @KiberDoktoR
      @KiberDoktoR Před 8 měsíci +1

      Сайт не работает... =(

    • @lookat2868
      @lookat2868 Před 8 měsíci

      сайт лег((

  • @berry_v1bes
    @berry_v1bes Před 3 měsíci

    можно исходники, пожалуйста ? 🥺

    • @tripledistillation1755
      @tripledistillation1755  Před 3 měsíci

      Всё будет в ближайшее время (я надеюсь), на ресурсе notabug.org/vetal

  • @user-mr5hf2pt4r
    @user-mr5hf2pt4r Před 9 měsíci

    Никогда не думал что какой то тетрис это просто пистец 😂😅

    • @tripledistillation1755
      @tripledistillation1755  Před 4 měsíci

      А почти никто не думает, что любая компьютерная игра это вот этот самый пушистый зверь. Особенно если писать и движок и игру на нём. В типичном интервью о разработке либо "... мы взяли UE4 ...", либо "... мы нарисовали то-то и придумали такой-то концепт ..."

  • @user-wb5wj6ib6y
    @user-wb5wj6ib6y Před rokem

    Вот если бы был описан последовательный процесс разработки, начиная с нуля, и, как надо мыслить для того, чтобы придти к тому то и тому. Вот если бы были постепенно озвучены все взаимосвязи начиная с самого начала и постепенно углубляясь, то тогда для таких тупых как я было бы попроще осознать необходимый образ мышления и последовательную логику строительства. Три дня переписываю код по видео и комментирую его так как говорится в видео. Дошел только до 18 минуты. Видео скорее уже для более опытных. Это как привести новоявленного строителя и сказать вот смотри есть фундамент для дома и не упомянуть, какие инструменты используются, чтобы его залить, какие пропорции смеси и из чего она состоит, как рассчитать размер и организовать работу.

    • @tripledistillation1755
      @tripledistillation1755  Před rokem

      Да, почти всегда есть проблема, связанная с некоторым набором принципов. Если что-то кажется базовым и очевидным, то объяснение идёт вскользь. Но если заинтересовал проект, то задавайте вопросы по коду.

  • @user-go9wr2nm7h
    @user-go9wr2nm7h Před 8 měsíci

    Мне кажется уже не актуально писать на C, т.к. сейчас преобладает объектно-ориентированная парадигма, а в играх всё ещё сложней и строится на компонентной системе или ещё лучше - ECS. Видео интересное, подача тоже, но процедурный подход уже слишком сильно устарел...

    • @user-go9wr2nm7h
      @user-go9wr2nm7h Před 8 měsíci

      Как минимум лучше бы было писать на C++ и уже создавать полноценные классы. И будут всё те-же возможности из C по типу указателей и условно те-же умные указатели использовать не обязательно или вообще стандартную библиотеку.

    • @tripledistillation1755
      @tripledistillation1755  Před 8 měsíci

      У каждого подхода свои плюсы и минусы. Про языки программирования можно сказать то же самое.
      Сейчас преобладает ситуация, когда человек использует бесплатный двигатель с вышеобозначенной компонентной системой и соответствующий указанной парадигме, а затем авторы движка делают этот самый движок не бесплатным. Но зато ничего нигде не устаревает)

    • @tripledistillation1755
      @tripledistillation1755  Před 8 měsíci +1

      Не хотите писать игру на C со стандартной библиотекой и указателями - не пишите. Это ведь всего лишь вариант. Одни из многих. Я не утверждаю, что нужно писать тетрис именно так, как в видео, и никак иначе.

    • @user-go9wr2nm7h
      @user-go9wr2nm7h Před 8 měsíci

      @@tripledistillation1755 компонентная система это не что-то, что только в движках, которые станут платными, а то, что каждый сам может реализовать. Причём для того-же ECS для C++ есть бесконечное число библиотек, не говоря о том, что его и самому не так сложно реализовать. А так в программировании существуют паттерны, всё это основано на ООП парадигме и их знания делают специалиста конкурентным на текущем рынке. Вы же просто сами пишите и учите других людей писать код не конкурентным, чтобы специалиста нигде не брали, т.к. он бы не знал вещей, про которые бы спрашивали на собеседованиях в крупные компании.

    • @tripledistillation1755
      @tripledistillation1755  Před 3 měsíci

      Вы меня заинтересовали этой компонентной системой. А крупные компании не публикуют требования к специалисту? Кто-то после написания тетриса сразу идёт на собеседование, думая что "теперь то пора"?

  • @effiejollie4198
    @effiejollie4198 Před rokem +1

    ρяσмσѕм