Тетрис на чистом JavaScript | Урок 1 | Академия вёрстки

Поделиться
HTML-код
  • Опубликовано: 29 янв 2025

Комментарии • 69

  • @alexredcross
    @alexredcross 6 лет назад +6

    Супер, спасибо больше за видео для джс) особенно на чистом)

  • @vseravnovoobwe
    @vseravnovoobwe 6 лет назад +2

    Спасибо. Очень интересный урок, особенно для новичков. Наталкивает даже на интересные эксперименты с подобной техникой)

  • @KsingHuo
    @KsingHuo 4 года назад +1

    если у кого-то возникает ошибка на стадии создания фигуры, попробуйте использовать нормальный генератор случайных чисел. здесь у автора что-то сомнительное. const randomX = (min, max) => Math.trunc(Math.random() * (max - min + 1) + min), и вызывайте через randomX(0,6) для набора из семи фигур. переменную curFig можно инициализировать сразу же массивом с нужной фигурой, тогда следующий шаг будет проще. в каждый изначальный массив фигуры можно добавить четвёртый элемент строку figureNameХ, чтобы при отладке выводить её и видеть, какую кракозябру нужно исправить. я тоже новичок, эти моменты дались мне непросто, но весьма помогли.

    • @hiphopik9185
      @hiphopik9185 4 года назад

      У меня в браузере сетка excel не отоброжается вообше,а так все норм. Знает кто-то почему так?

  • @xagent
    @xagent 5 лет назад +6

    написал данный код. выдает ошибку в конце функции create, когда добавляем класс figure "Uncaught TypeError: Cannot read property 'classList' of null" что я сделал не так вообще не понимаю

  • @nightdog007
    @nightdog007 5 лет назад +4

    Блин, сижу и думаю, ломаю голову минут 10 что же не так, переписал несколько раз всю нижнюю часть, пока не полез смотреть на то какой хтмл вывод ячеек, и обнаружил где в коде опечатался:
    excel[i].setAttribute("posX", x);
    excel[i].setAttribute("posX", y);
    ну просто молодец)

  • @AVWest.
    @AVWest. Год назад

    объясните пожалуйста, почему не появились ячейки в поле?

  • @hiphopik9185
    @hiphopik9185 4 года назад +1

    Помогите пожалуйста открываю index.html и не отоброжается сетка excel. Все делал как в видео .Кто знает в чем проблема?

  • @vova2966
    @vova2966 6 лет назад +1

    Круто

  • @yusupaliyevbekzat7896
    @yusupaliyevbekzat7896 4 года назад

    не понял 52 строку;почему он воспользоваться querySelector ом 19:07

  • @ДмитрийМорошан-с2ш
    @ДмитрийМорошан-с2ш 3 года назад +2

    Правильно, не надо писать на ES6 и заворачивать значения в функции))) 100 циклов и 100 квери селекторов в массив, ещё лучше надо было написать конкатенацией, чтоб как в змейке сделать кучу адских конструкций..... чем меньше прогеров, тем лучше))), если писать такой манки код на собесе где нибудь... тебя сразу пошлют =), эта серия уроков я так понимаю, чтобы затянуть на курс!

  • @DerAleksey
    @DerAleksey 4 года назад

    В "brackets" это сделать можно?

  • @artemaltufiev1045
    @artemaltufiev1045 6 лет назад +1

    в следующем видосе расскажите по больше про то,как excel может помочь верстальщику

    • @rodionnikiforchuk2408
      @rodionnikiforchuk2408 6 лет назад

      а когда будет следуйщий?

    • @ArtemPrygin-h5g
      @ArtemPrygin-h5g 6 лет назад

      @@rodionnikiforchuk2408 Сегодня должен выйти

    • @hiphopik9185
      @hiphopik9185 4 года назад

      А есть это видео ,а то я не нашел ничего . Меня тоже интересует excel

  • @anthonytilis4171
    @anthonytilis4171 4 года назад

    Добрый день! У меня какая-то проблема в функции create(). Она почему-то выдает undefined... Можно кому-то код показать? Моих скромных познаний по отладке и поиску проблем явно не хватает!!! :)

  • @ЯрикБухаров-р3ц
    @ЯрикБухаров-р3ц 4 года назад

    есть полностью код?

  • @letzabelin
    @letzabelin 5 лет назад

    Привет. После добавления класса тетрис в мэйн, у мэйна пропадает левый бордер. Везде есть чёрная граница, кроме левой стороны. С чем это может быть связано?

  • @daniaklymchuk6610
    @daniaklymchuk6610 6 лет назад +14

    Где Лысый?)))

  • @kievlyanin
    @kievlyanin 6 лет назад +1

    можно линк на код для тех кто ленится пол часа слушать?

  • @Kefveseke
    @Kefveseke 6 лет назад +15

    Как я рад читать строчку "на чистом JS", а то задолбали эти "калькулятор за 5 минут на jQuery, Moment, Angular, Vue и React"

    • @XDarKsandr
      @XDarKsandr 6 лет назад

      это конечно правильно, но отрицать плюсы jQuery не стоит, ибо он как минимум делает код меньше

    • @Kefveseke
      @Kefveseke 6 лет назад +1

      @@XDarKsandr и загрузку, компилляцию, работу дольше... давай, продолжай)

    • @andriidou8023
      @andriidou8023 6 лет назад +1

      @@Kefvesekeчесно сам не оч люблю JQuery но маминых экспертов нелюблю еще больше потому к тебе 2 вопросa???
      1. Мин версия весит 85кб как 1 картинка jpg в чем проблема загрузки???
      2. Мне вот интересно в что это компилируется JQuery и главное что именно служит компилятором??

    • @Kefveseke
      @Kefveseke 6 лет назад

      @@andriidou8023 я конечно, может быть и мамкин эксперт, но комментаторы, крайне понимающие комменты и могущие свой отлично формулировать - еще пущий 3,14здец.
      Загрузка - наименьшая из всех зол.
      Причем тут "компилляция jQuery", как это? Про нативный код ведь речь шла. Не уж то движок с равной скоростью компиллит натив и фреймворк?
      Использовать его сегодня, когда поддержка стандартов в просто прекрасна, а так же давным давно появился querySelector, key-frames в css, fetch в конце концов... мда..

    • @andriidou8023
      @andriidou8023 6 лет назад +1

      @@Kefveseke ну смотри проблема в том что ты не совсем понимаешь что такое JQuery
      Во первых ты почему думаешь что JQuery фреймворк но
      это библиотека и ее суть в том, что это просто набор функций написан на нативном jsб то есть это уже готовые функции которые надо вызвать с нужными тебе аргументами, вот сайт youmightnotneedjquery.com/ с простыми примерами какая функция что делает.
      И так еще про 'компиляцию' js не компилируется он интерпретуеться браузером.

      Кстати на счет новых стандартов es6 JQuery действительно использует старый синтаксис но это сделано только для совместимости с старими браузерами по той же причине мы используем Babel когда пишем на es6+

  • @sashanikitin461
    @sashanikitin461 2 года назад

    если не отображаются фигуры нужно закомментировать вспомогательные переменные
    ```
    // вспомогательная переменная
    //let currentFigure = 0;
    //let figureBody = 0;
    ```

  • @krave_134
    @krave_134 6 лет назад

    Подскажите, что за плагин, благодаря которому страничку, которую пишешь, можно не обновлять, плагин делает это автоматом. Спасибо

    • @ArtemPrygin-h5g
      @ArtemPrygin-h5g 6 лет назад +1

      Live Server в VS Code

    • @goga220
      @goga220 6 лет назад +1

      Browsersync

    • @olegplahotniy7307
      @olegplahotniy7307 6 лет назад

      LiveReload.

    • @ArtemPrygin-h5g
      @ArtemPrygin-h5g 6 лет назад

      @goga vscode позволяет обойтись без браузерсинка. У него свой встроенный лайв без геморроя с его установкой

    • @goga220
      @goga220 6 лет назад

      Артем Прыгин ну если для тебя геморрой синк установить, то у меня для тебя плохие новости. А что делать если vscodом не пользуешься?

  • @МихаилЗавражин-и7ь
    @МихаилЗавражин-и7ь 6 лет назад +1

    Народ что делать если невидимая часть тетриса снизу а не сверху?

  • @vanzo16
    @vanzo16 5 лет назад

    а "эксельный" документ для себя или без него не будет работать?

  • @mimik4672
    @mimik4672 5 лет назад

    зачем вспомогательная переменная let i = 0 ?

  • @Speane
    @Speane 6 лет назад +1

    Зачем голые атрибуты писать? Есть же специальные атрибуты data-*

    • @ArtemPrygin-h5g
      @ArtemPrygin-h5g 6 лет назад

      Потому что в данном конкретном уроке они не нужны.А про оптимизацию кода говорится в самом начале

  • @duck0154
    @duck0154 5 лет назад

    Почему на дивах? Думал на канвасе будет...

  • @athecoi3750
    @athecoi3750 4 года назад

    Какие есть еще варианты тетриса на js, можно в коменты ?

  • @vlajke4787
    @vlajke4787 5 лет назад

    7:52

  • @vitaliamilaeva9259
    @vitaliamilaeva9259 5 лет назад +2

    решила повторить за тобой, но не работает построение фигуры ( код: codepen.io/milaeva/pen/GejeZW?editors=0011 )

    • @bezel4689
      @bezel4689 5 лет назад +1

      Тоже не работает построение... не решилась проблема?

    • @vitaliamilaeva9259
      @vitaliamilaeva9259 5 лет назад +1

      @@bezel4689 не думала над игрой больше; возможно библиотеки подключены были (странно, что в консоль шибку не выводит никакую). Может именно на даном этапе фигурка и не должна отображаться.

    • @IngvarBraus
      @IngvarBraus 5 лет назад +4

      @@vitaliamilaeva9259 Здравствуйте, Виталина!
      С вашего позволения я объясню вам, где вы ошиблись в вашем коде:
      1) Одна из самых распространенных ошибок начинающих программистов это банальная ошибка в lengt, пишут lenght. Как по моему, с этим встречаются верстальщики чаще всего. Скорее всего путая в голове с окончанием у height. Я также встречался на своем опыте с данной ошибкой :)
      Вам необходимо в своем коде исправить, чтобы цикл заработал. (2 места исправления)
      2) Вторая ошибка немного сложнее в понимании, но все же. Вы используете новый синтаксис ES-2015, а конкретнее обратные кавычки. В функции create() у нас есть массив figureBody. Если коротко, то ошибка в ваших переносах. Переносы "воспринимаются" интерпретатором буквально, что в нашем примере вызывает ошибку. Вам необходимо:
      - или экранировать перенос, но вы также выравнивали код после переноса пробельными символами, поэтому каждый символ подлежит экранированию... боль..
      - использовать только один перенос "enter" и экранировать его. что более читабельно и понятно.
      - последний вариант, как у автора - не использовать перенос вовсе.
      В данном примере мне более подходит последний вариант, как у автора. Кода немного и он спокойно воспринимается, не вижу в переносах необходимости.
      Вот ссылка на бесплатный источник с более подробной информацией, но думаю вы его знаете :) learn.javascript.ru/es-string
      Также есть одно замечание, но оно лично мое, субьективное. Вы или используйте новый синтаксис или используйте старый... Если коротко, то использование var и let, особенно в таком маленьком примере нецелесообразно. Более того в будущем такая привычка может привести к неожиданным результатам. Вы спокойно в 4 строке, в цикле, можете заменить var на let. Тут это не критично но помните, что вы делаете глобальную переменную с помощью var.
      Спасибо за внимание, пишите если будут вопросы. :)

    • @bezel4689
      @bezel4689 5 лет назад +2

      @@IngvarBraus Большое спасибо, исправила тоже эти ошибки и все заработало!)

    • @ИорданШабанов-ф9п
      @ИорданШабанов-ф9п 5 лет назад

      Благодарю Вас и Игоря и, конечно же Артёма за представленный код
      и полезные знания,
      долго не мог найти причину отсутствия клеток,
      оказалось, что в классе .excel было указано некорректное правило:
      background вместо border :)

  • @rara901
    @rara901 6 лет назад

    А почему вы пишите не на новой версии jQuery

    • @ArtemPrygin-h5g
      @ArtemPrygin-h5g 6 лет назад

      jQuery - это библиотека JS.
      Я пишу на чистом JS

    • @rara901
      @rara901 6 лет назад

      @@ArtemPrygin-h5g Тогда зачем услажняете себе, не пишите на jQuery

    • @ArtemPrygin-h5g
      @ArtemPrygin-h5g 6 лет назад +4

      ​@@rara901 Потому что уроки называются "Тетрис на ЧИСТОМ Javascript". Для тех, кто не любит JQuery (как я) и хочет научиться писать на нативном JS. Почему лучше не следует изучать JQuery без знания и понимания чистого JS и чем плох JQuery сам по себе вы можете погуглить самостоятельно

  • @aqua3663
    @aqua3663 5 лет назад +1

    Что делать? Не работает main.appendChild(tetris);

  • @artemaltufiev1045
    @artemaltufiev1045 6 лет назад

    я хоть и в js слаб еще,но на вебинаре по созданию своего алиэкспресс речь шлао том,что getElementById и getElementByClassName - прошлое и уже есть quetSelector() который инфу любого типа берет в себя

    • @ArtemPrygin-h5g
      @ArtemPrygin-h5g 6 лет назад

      querySelector в основном и используется в этих уроках, className больше для разнообразия

    • @san88k
      @san88k 6 лет назад

      это не прошлое, они работают по-разному, хотя эта разница очень редко когда нужна. в 99% случаев можно querySelector использовать.

    • @alexgv7352
      @alexgv7352 6 лет назад

      Он ворует старые уроки у иностранных блогеров либо с w3s. Тогда ещё этого не было

    • @ArtemPrygin-h5g
      @ArtemPrygin-h5g 6 лет назад +1

      @@alexgv7352 и змейка, и тетрис написано мной лично, с нуля и с реализацией из головы. Если какие-то моменты похожи на чьи-то другие уроки, то неудивительно, учитывая количество вариантов реализации в сети.

  • @mikaelgevorgyan4521
    @mikaelgevorgyan4521 5 лет назад

    а вообщето не так должно писатся [`posX = ${x}`]

  • @sovetit
    @sovetit 6 лет назад +2

    Вот кому заняться не чем