Игра Змейка на чистом JavaScript и HTML5 за 45 минут!

Поділитися
Вставка
  • Опубліковано 16 лип 2019
  • Представляю вам большой урок, в ходе которого мы создадим полноценную красивую игру на чистом JavaScript и HTML5. Игра будет копировать классическую игру "Змейка", при этом в конце урока мы загрузим игру на сервер чтобы все смогли поиграть в игру.
    ✔ Хостинг можно получить в подарок, но количество активаций ограничено! Используйте промокод GOSHA_HOST. Промокод действителен лишь для тарифа Host-0 и доступен только для первых 30 счастливчиков!
    1) Текстовый редактор: atom.io/
    2) Подборк иконок: www.iconfinder.com/
    3) Хостинг компания: bit.ly/2XCmmJL
    4) Ссылка на статью на сайте itProger: itproger.com/news/198
    5) Перевод видео: • Create Snake Game Usin...
    ✔ Сообщество программистов: itproger.com/
    ✔ -------------
    Вступай в группу Вк - prog_life 🚀
    Группа FaceBook - goo.gl/XW0aaP
    Инстаграм itProger: / itproger_official
    Instagram: / gosha_dudar
    Telegram: t.me/itProger_official
    Twitter - / goshadudar
    - Уроки от #GoshaDudar 👨🏼‍💻
    - Все уроки по хештегу #goshaLessons

КОМЕНТАРІ • 294

  • @volt3396
    @volt3396 5 років тому +93

    Гоша, пожалуйста, по больше уроков, по созданию игр. Здоровья тебе :)

  • @ivanovserg8795
    @ivanovserg8795 2 роки тому +20

    Хороший урок, есть чуток замечаний:
    1) Код загроможден переменной bох, надо оставит её только для отрисовки в пикселах, а все сравнения и расчеты по координатам вести в количестве самих ячеек, а не в пикселах;
    2) Есть объект food, тогда и картинку еды перенести надо в этот объект
    3) Есть объект snake, тогда и направление dir перенести в этот объект
    4) Есть голова змеи head, snakeX и snakeY - тогда их тоже вложить в объект snake
    P.S. По коду "размазаны" переменные, которые через 2 недели не вспомнишь что они делают - их надо логически вкладывать в объекты

    • @user-ch1uk1bb7g
      @user-ch1uk1bb7g Рік тому

      код не работает

    • @timagoldm
      @timagoldm 11 місяців тому

      что тебе всё не нравится?! по твоему надо писать место бокс везде 32?
      умник, нашелся! я не хуже тебя в программировании разбираюсь!

    • @ivanovserg8795
      @ivanovserg8795 11 місяців тому

      @@timagoldm Внимательно перечитай мой пункт 1. Переменная box (а еще лучше сделать её const) нужна только внутри функции отрисовки drawGame(). Вот и всё.

    • @timagoldm
      @timagoldm 11 місяців тому

      😒

  • @reallygood7580
    @reallygood7580 4 роки тому +14

    3:37 - Я сразу понял, что наконец-то нашёл того, кто хотябы ЗНАЕТ о ES6!

    • @mooves3249
      @mooves3249 3 роки тому

      Я тоже сколько не смотрел видосов, все переменные создают через var про который я уже даже забыл

  • @lyonya7025
    @lyonya7025 5 років тому +5

    Чувак, ты самый лучший! Спсибо тебе за все твои уроки! Желаю как можно больше успехов в творчестве!!

  • @atsuko_shittl.j
    @atsuko_shittl.j 3 роки тому +2

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

  • @ege8127
    @ege8127 4 роки тому +2

    Спасибо огромное!!! От души!!!

  • @kukusikibabasikitv
    @kukusikibabasikitv 3 роки тому +6

    Жалко, что у вас так мало видео про игры на джаваскрипт. Спасибо !!

  • @zahaietskyi
    @zahaietskyi 5 років тому +5

    Годнота!!!💪💪💪

  • @irinax5392
    @irinax5392 4 роки тому +38

    Привет, в canvas остаются следы предыдущего местоположения змейки и кажется что ты рисуешь ею на поле. Такой же баг повторяется и с score. Цифра не обновляется а накладывается на предыдущее т.е. на 0 рисуется единичка и тд. Решила проблему добавив ctx.clearRect(0, 0, 609, 609); в самое начало функции drawGame(). Может кому понадобится.

    • @kostyaryazanov9685
      @kostyaryazanov9685 2 роки тому +6

      В процессе создания столкнулся с такой-же проблемой. Оказалось, что я написал pop, вместо pop(). Поэтому элементы массива не удалялись, а оставались на месте, что и кажется, как закрашивание

  • @MrSam-mh7ec
    @MrSam-mh7ec 5 років тому

    Гоша ты лучший. Удачи тебе

  • @Hande_hoch
    @Hande_hoch 3 роки тому

    один из очень немногих, на кого я езьже отдущи подписался, отдущи поставил лайк, отдущи оставляю коммент!

  • @ganjackal
    @ganjackal 3 роки тому +1

    Супер🤝🏆слушай топчик еще бы game over по соли экрана это реально не подскажешь как🤔😆
    Короч я решил заняться плотно веб разработкой и тут столкнулся с js пока не платно занимаюсь ! Есть советик !? С чего лучше начинать html и css знаю не так хорошо но знаю но говорят в наше время js всем глава без него ни куда ! Что скажешь!?

  • @thedragon1328
    @thedragon1328 3 роки тому

    Спасибо за видео!

  • @VIJana79
    @VIJana79 4 роки тому

    А почему Гошу критикуют на других каналах? Хорошо он рассказывает, всё понятно. Конечно для понимания база какая-то нужна, без неё никуда. А так всё норм, всё подробно, чего писать, куда вставлять, почему такое действие.

  • @progi99
    @progi99 9 місяців тому

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

  • @user-hu1mk4tw2q
    @user-hu1mk4tw2q 3 роки тому

    Очень круто!

  • @iAmSvyat
    @iAmSvyat 5 років тому +5

    Подскажите насчет ошибки. При выполнении интервала на 11:11 в консоли выдает "Uncaught TypeError: Cannot read property 'drawImage' of null
    at drawGame"

    • @daniyarkayir
      @daniyarkayir 4 роки тому +1

      вы может быть написали const ctx вместе из за этого и ошибка примерно вот так вот constctx = canvas.getContext("2d");

  • @daffeboy
    @daffeboy 5 років тому

    Спасибо, всё робит!

  • @gennadius909
    @gennadius909 5 років тому

    Спасибо за урок

  • @NeedForHeavyMetal
    @NeedForHeavyMetal 3 роки тому

    спасибо!) наглядно)

  • @user-rz8dd1bp1i
    @user-rz8dd1bp1i 2 роки тому

    Крассава бро)

  • @11-april
    @11-april 4 роки тому +1

    Не хочу выпендриваться, я новичок в этом деле, но я бы создал функцию, которая каждый рандомно генерирует еду, типа function createfood() {тут прописать рандомное появление еды}
    А переменную food просто объявить, затем вызвать эту функцию и каждый раз вызывать функция, когда змея проглатывает пищу)
    Спасибо за урок)

    • @evgeniiAn
      @evgeniiAn 3 роки тому

      зачем плодить новые сущности если все решается в пару строк кода? и да, не выпендривайся)

  • @joefast505
    @joefast505 5 років тому +3

    Не до смотрел но все равно ТОП! Спасибо за видео :D

  • @durkaRealLol
    @durkaRealLol 2 роки тому +1

    что делать, ошибка game.js:48 Uncaught DOMException: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The HTMLImageElement provided is in the 'broken' state.
    at drawGame (

  • @user-nu9rk7bl2w
    @user-nu9rk7bl2w 5 років тому +3

    Игра на JavaScript удалась! Спасибо!

  • @user-lu3bs7ny9f
    @user-lu3bs7ny9f 3 роки тому

    Подскажите,как привязать звуки к клавишам,типо когда змея умирает,когда ест и двигается

  • @maxedits7064
    @maxedits7064 4 роки тому

    Лайк, всё круто и понятно, я пошёл делать игру)) Единственное чего мне не понятно и хотелось бы понять: за что отвечают meta у тебя в html? их там три

    • @chelobas14
      @chelobas14 3 роки тому

      Это стандартная разметка, её создаёт сама прога при создании файла. Она не нужна

  • @user-pc4qr6oe8k
    @user-pc4qr6oe8k 5 років тому +3

    поражаюсь твоему трудолюбию

    • @dashkin-dima
      @dashkin-dima 4 роки тому

      Да капец как сложно брать материал с запада

    • @Evoleo
      @Evoleo 4 роки тому

      Он просто украл видео у зарубежного ютубера ua-cam.com/video/9TcU2C1AACw/v-deo.html

  • @mrak3059
    @mrak3059 5 років тому

    ты лучший)

  • @vilgo3927
    @vilgo3927 3 роки тому

    из за блочной видемости dir должен выдавать undefined, обьясните как это работает

  • @lackevil3730
    @lackevil3730 4 роки тому +3

    Больше JavaScript плизз

  • @user-hm2mo9jt7b
    @user-hm2mo9jt7b 2 роки тому

    Спасибо!

  • @vladnotvlad1228
    @vladnotvlad1228 5 років тому +3

    Бро, где ты был раньше?)

  • @slava_tfdf
    @slava_tfdf 2 роки тому

    Приветствую, насколько сильно нужно будет допилить игру, чтобы была возможность у пользователя сохранить фи и почту, чтобы сохранить/вывести таблицу с результатами?

    • @mr_pilka
      @mr_pilka Рік тому

      очень сильно

  • @savelpetoyan9853
    @savelpetoyan9853 5 років тому +1

    Круто

  • @KonamiMaster
    @KonamiMaster 3 роки тому

    Спасибо за инфу

  • @igixprffikiberg2636
    @igixprffikiberg2636 3 роки тому

    Привет Георгий я писал игру я смотрел все твои уроки по Js и я решил посмотреть это видео в коде у меня показывает что все правильно но когда я зашел в консоль у меня выдало ошибку почему?

  • @user-hl7xo2fu9o
    @user-hl7xo2fu9o Рік тому +1

    Что делать если не воспринимает ctx.drawImege(ground, 0, 0)

  • @user-ol7fc8ls7e
    @user-ol7fc8ls7e 2 роки тому +1

    Всё прекрасно! Получилось! Но есть один вопрос - зачем исползовать переменную let, если можно использовать переменную var? тоже и с const?(Я не причисляю твои дествия к ошибке, а лишь спрашиваю)

    • @jilka3232
      @jilka3232 2 роки тому

      Переменная var устарела, а переменная let более современная

    • @user-ol7fc8ls7e
      @user-ol7fc8ls7e 2 роки тому +1

      @@jilka3232 Спасибо, теперь попробую чаще использовать переменную let 😄

    • @user-ek4zd1vp2e
      @user-ek4zd1vp2e 2 роки тому +1

      @@user-ol7fc8ls7e в области видимости дело. если сначала вызвать переменную заданную при помощи var а потом определить ее,то оно даст это сделать и ты получишь undefined. С let такая шняга работать не будет. тебе покажет ошибку. Как то так. Поэтому желательно использовать let. А если уверен что изменять переменную не будешь то делай const. Я обычно const для стрелочных функций использую.

  • @GANGST1ER
    @GANGST1ER 3 роки тому +1

    Что-то не могу понять с рандомом. Если он генерирует от 0 до 1, то как получаются координаты больше 1 и меньше 17 при умножении?

    • @GANGST1ER
      @GANGST1ER 3 роки тому

      Понял. Дело в том что random генерирует дробные числа в пределах от 0 до 1.

  • @user-nd7fq9ys8p
    @user-nd7fq9ys8p 5 років тому

    Неплохо

  • @Egor_top518
    @Egor_top518 2 роки тому

    Привет вот в картинке для поле змейки я всё правильно прописал обновлял страницу и картинка не появляется что делать?

  • @GANGST1ER
    @GANGST1ER 3 роки тому +1

    Очень долго делал, но всё таки переписал эту же игру на Python в Tk+Canvas) Проблема была в зацикливании движения змейки. root.after(150, func) помогло.

    • @kain5731
      @kain5731 Рік тому

      Привет, хочу спросить у тебя если не сложно) я хочу научиться фронтент разработке и немного бэкенда, для этого нужен ПК или ноутбук, хотел бы узнать что из этого лучше ? И на сколько мощными они должны быть?

    • @user-si1fw9tr1z
      @user-si1fw9tr1z Рік тому

      @@kain5731 если хочешь учиться то тебе хватит самого обычного пк или ноутбука что удобнее тебе будет, мощностью не имеет значения, даже на самом простом пк можно открыть редактор кода и видео по которым будешь учиться

  • @alex57767
    @alex57767 5 років тому +3

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

    • @光荣归于习近平同志
      @光荣归于习近平同志 4 роки тому

      Как это сделать?

    • @RestPRODev
      @RestPRODev 4 роки тому

      @@光荣归于习近平同志 Изи

    • @Evoleo
      @Evoleo 4 роки тому

      @@光荣归于习近平同志 просто заспавнить заново если координаты внутри змейки и так пока не заспавнится нормально

  • @ZipOfficial
    @ZipOfficial 3 роки тому

    почему у меня не выводит картинку поля, я БУКВАЛЬНО сделал всё точно так же как видео, всё равно картинку не выводит, помогите пожалуйста

  • @fffttt3935
    @fffttt3935 Рік тому

    Not allowed to load local resource. Как испавить, подскажите пожалуйста

  • @megavanya123
    @megavanya123 4 роки тому +13

    что делать если сайт не показывает поле
    это с чем связано
    я посмотрел в консоли нету ошибок
    подскажите

    • @mercals
      @mercals 4 роки тому +3

      у меня такая-же хрень

    • @user-po3qc7yx6g
      @user-po3qc7yx6g 4 роки тому

      Вызывать функцию нужно, может файл неправильно подключён

    • @bogdanstrel9212
      @bogdanstrel9212 4 роки тому +1

      У меня так же было, я поместил файл html в папку js ошибочно. Файл html должен быть в главной папке (в этом случае WWW).

    • @tuavtorru3041
      @tuavtorru3041 4 роки тому

      Если не помогает напиши внутрь тега канвас какой-то текст и если он выводиться то значит у тебя слишком старая версия браузера.

    • @ZipOfficial
      @ZipOfficial 3 роки тому

      @@tuavtorru3041 у меня не вываодит текст значит сбраузером у меня всё нормально?

  • @yanayukhymenko3017
    @yanayukhymenko3017 2 роки тому

    Я хотел сделать несколько еды, но когда змея проглатывает одну ту пропадает сразу несколько и больше не появляеться. Можно это как-то исправить?

  • @RestPRODev
    @RestPRODev 4 роки тому +9

    Зашёл тупо посмотреть как создать игру ради прикола
    В итоге узнал для себя что то новое по Js

  • @Black_cat3549
    @Black_cat3549 3 роки тому +1

    Гоша пожалуста ответь уменя не прорисовуеца поле что мне делать?

  • @utlookworld5784
    @utlookworld5784 3 роки тому

    Игра - класс!
    А как сделать несколько уровней?

  • @Gp-iv1ey
    @Gp-iv1ey 2 роки тому

    у меня фрукты иконки только от 48 пикселей есть. Что делать?

  • @angrycoder18
    @angrycoder18 5 років тому +1

    в смысле переменные же в javascript объявляются через var или из-за canvas через let?или это просто не 'use strict'

    • @user-ez9zi2ww6x
      @user-ez9zi2ww6x 5 років тому

      Это относительно новый стандарт, var уже не используется

    • @user-xq3hx1uz1r
      @user-xq3hx1uz1r 5 років тому

      Это Es6. Теперь let это стандарт

    • @TtTalkUA
      @TtTalkUA 5 років тому

      погугли различия между var let и const

    • @iGespo
      @iGespo 5 років тому

      Почитай разницу между var и let learn.javascript.ru/let-const

  • @firesword2912
    @firesword2912 4 роки тому

    а если я хочу добавить еще цветов к змеи?

  • @user-gj5yl1ge4i
    @user-gj5yl1ge4i 4 роки тому +2

    Всем привет, на 30 минуте я запускаю змейку и квадрат просто исчезает, и следовательно не двигается
    const canvas = document.getElementById("game");
    const ctx = canvas.getContext("2d");
    const ground = new Image();
    ground.src = 'img/ground.png';
    const foodImg = new Image();
    foodImg.src = 'img/food.png';
    let box = 32;
    let score = 0;
    let food = {
    x: Math.floor(Math.random() * 17 + 1) * box,
    y: Math.floor(Math.random() * 15 + 3) * box,
    };
    let snake = [];
    snake[0] = {
    x: 9 * box,
    y: 10 * box,
    }
    document.addEventListener("keydown", direction);
    let dir;
    function direction(event) {

    if(event. keyCode == 37 && dir != 'right')
    dir = "left";
    else if(event.keyCode == 38 && dir != 'down')
    dir = "up";
    else if(event.keyCode == 39 && dir != 'left')
    dir = "right";
    else if(event.keyCode == 40 && dir != 'up')
    dir = "down";
    }
    function drawGame() {
    ctx.drawImage(ground, 0, 0);
    ctx.drawImage(foodImg, food.x, food.y);
    for(let i = 0; i < snake.length; i++) {
    ctx.fillStyle = "green";
    ctx.fillRect(snake[i].x, snake[i].y, box, box);
    }
    ctx.fillStyle = "white";
    ctx.font = "50px Arial";
    ctx.fillText(score, box * 2.5, box * 1.7);
    let snakeX = [0].x;
    let snakeY = [0].y;
    snake.pop();
    if(dir == 'left') snakeX -= box;
    if(dir == 'right') snakeX += box;
    if(dir == 'up') snakeY -= box;
    if(dir == 'down') snakeY += box;
    let newHead = {
    x: snakeX,
    y: snakeY,
    };
    snake.unshift(newHead);
    }
    let game = setInterval(drawGame, 100);

    • @cryptoline1304
      @cryptoline1304 Рік тому +1

      Спустя 2 года, думаю, неактуально, но вместо:
      let snakeX = [0].x;
      let snakeY = [0].y;
      должно быть:
      let snakeX = snake[0].x;
      let snakeY = snake[0].y;

  • @user-nz2nk5wp9t
    @user-nz2nk5wp9t 5 років тому +4

    Подскажите, вообще ни чего не отображает в браузере, белая пустота, уже для пробы полностью копировал всё и папки и код...

    • @GooseDL1337
      @GooseDL1337 4 роки тому +1

      @Schellenberg у вас файл js работает раньше чем html. Объявите тег после того как закрывается тег

    • @user-nz2nk5wp9t
      @user-nz2nk5wp9t 4 роки тому

      @@GooseDL1337 попробую, благодарю за ответ.

    • @yingwai8668
      @yingwai8668 4 роки тому +2

      @@GooseDL1337 не работает... ничего не работает.. я уже заебался с этим

    • @olexandr5649
      @olexandr5649 4 роки тому

      @@yingwai8668 ты все food заменил на foodImg? проверь правильность написания кода и указаных путей к картинкам. У меня файлы расположены в таких же папках как у него, но чобы получить картинку я прописал такой путь: foodImg.src = "../img/food.png"; после чего все заработало

    • @ss888dd
      @ss888dd 4 роки тому

      @@GooseDL1337 тег в самом видео объявляется позже канваса.

  • @georgbruzgaloff4127
    @georgbruzgaloff4127 3 роки тому

    Жорик, привееееет! Почему про игры перестал выкладывать уроки?

  • @sanjar5862
    @sanjar5862 4 роки тому

    Нашел 1 баг но не получается поправить . Когда змейка движется в лево при нажатии вниз и вправо одновременно змейка направляется на право( и тож самое при движении вправо ) как пофиксить это ?

    • @cryptoline1304
      @cryptoline1304 Рік тому

      Спустя 3 года скорее всего неактуально, но один из простых способов - создать переменную, назовем ее drawUpdated, которая будет являться флагом проверки перерисовки. Далее:
      // где-нибудь в начале game.js файла
      let drawUpdated = false;
      function direction(event){
      if(event.keyCode == 37 && dir != "right" && !drawUpdated) // разрешаем одно изменение направления в рамках перерисовки
      dir = "left";
      else if(event.keyCode == 38 && dir != "down" && !drawUpdated) // разрешаем одно изменение направления в рамках перерисовки
      dir = "up";
      else if(event.keyCode == 39 && dir != "left" && !drawUpdated) // разрешаем одно изменение направления в рамках перерисовки
      dir = "right";
      else if(event.keyCode == 40 && dir != "up" && !drawUpdated) // разрешаем одно изменение направления в рамках перерисовки
      dir = "down";
      /*Пишем, что перерисовка произошла, чтобы при повторном нажатии кнопок wasd в рамках текущей перерисовки змейка не изменила направление и не возникло ситуации, когда, например, змейка двигалась налево и до перерисовки она изменила направление вниз и потом направо из-за чего может показаться, что она сразу пошла слева направо.
      */
      drawUpdated = true;
      }
      function drawGame(){
      ...
      drawUpdated = false; // после перерисовки сбрасываем флаг, чтобы снова установить новое направление в direction(event).
      }
      P.S. Вероятнее всего можно сделать более лаконично и красиво, т.к. опыта на js особо не было, но способ рабочий.

  • @innagencer8731
    @innagencer8731 2 роки тому +1

    класс!!! спасибо!!!
    вопрос к знающим, как уменьшить скорость движения змейки?

    • @ivanovserg8795
      @ivanovserg8795 2 роки тому +3

      В строке let game = SetInterval ( drawGame, 100 );
      надо увеличить интервал с 100, например до 200 (т.е. заменить 100 на 200). Если надо еще медленнее - то ставим 300 вместо 100

    • @innagencer8731
      @innagencer8731 2 роки тому

      @@ivanovserg8795 Спасибо БОЛЬШОЕ!!!!!!!!!!!!!!!!!!!!!

  • @user-ir8nd6mj2b
    @user-ir8nd6mj2b 5 років тому

    3:43 Это необязательно, у меня работает просто обращение по id (т.е. переменная "game", которой нет в коде, возвращает canvas).

    • @MaximMoPeR
      @MaximMoPeR 4 роки тому

      @H 336 Что ты тут делаешь? Лол я твой подписчик =)

    • @user-qq9qz8gl7y
      @user-qq9qz8gl7y 4 роки тому +1

      @@MaximMoPeR ты на этого дауна подписан?

    • @garnish1006
      @garnish1006 2 роки тому

      @@user-qq9qz8gl7y всм

  • @nailfah
    @nailfah 5 років тому

    Почему картинку загрузили через setInterval? Да ещё со значением 100. Она же по логике должна как раз мелькать...

    • @user-vz4jh7zr4r
      @user-vz4jh7zr4r 4 роки тому

      А скажите пожалуйста от этого значения может не отображать половину поля?

  • @taaron8043
    @taaron8043 4 роки тому

    почему когда пишешь например document.get... не высвечивается подсказка getElementById

    • @Aituar_
      @Aituar_ 3 роки тому

      Зависит от редактора кода,

  • @play_gamespg6446
    @play_gamespg6446 Рік тому

    А что делать если змейка не отображается сделал всё точь в точь, и всё равно не появляется

  • @levveremchuk1475
    @levveremchuk1475 4 роки тому +1

    помогите пожалуйста код аналогичный ошибок в консоле нет но змейка не растет кде я сделал чтото не так????

    • @bakumjesus7143
      @bakumjesus7143 4 роки тому +2

      Перед кнопками left , right удали pop

  • @dlazder3937
    @dlazder3937 Рік тому

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

  • @VitTravelUSA
    @VitTravelUSA 5 років тому

    У меня постоянно ошибка в JS

  • @DENGEO1995
    @DENGEO1995 4 роки тому

    Белый экран а в консоли пишет :
    Failed to load resource: net::ERR_FILE_NOT_FOUND ss/style.css:1
    game.js:43 Uncaught SyntaxError: Identifier 'i' has already been declared game.js:43

    • @ogg4470
      @ogg4470 3 роки тому +2

      перекинь style.css:1 и game.js:43 в папку где index.html и измени путь на а game.js на должно сработать

    • @catto88
      @catto88 3 роки тому

      замени const на let на строке 43

  • @user-vl2jk4nz8l
    @user-vl2jk4nz8l 15 годин тому

    У меня рисуется ЕДА , СЧЁТ, ЗМЕЙКА. Еда перемещается. Но змейка не двигается. консоль всё время выдаёт ошибки, хотя всё сделано по Гоше. Кажется, перепробовал всё. Выдаваемые консолью ошибки, на первый взгляд, выглядят необоснованными. Что делать не знаю.

  • @faded_boy9277
    @faded_boy9277 3 роки тому

    Я не могу найти такоеже поле оно мне очень понравилось можете кинуть ссилку на него ИЛИ как то передать

  • @user-vz4jh7zr4r
    @user-vz4jh7zr4r 4 роки тому

    Помогите пожалуйста у меня поле половину отображает

  • @zxcblood1489
    @zxcblood1489 4 роки тому +2

    А я прям на телефоне кодил и получилось

  • @munutd9857
    @munutd9857 2 роки тому

    👍👍👍

  • @foxyboy5059
    @foxyboy5059 5 місяців тому

    где ты ссылку для картинки написал 🥺

  • @user-vz4jh7zr4r
    @user-vz4jh7zr4r 4 роки тому +1

    Гоша помоги пожалуйста у меня вот это поле половину отображает половину нет все проверил и все ровно

    • @Aituar_
      @Aituar_ 3 роки тому

      Может вы задали ширину и высоту через СИэсЭС?

  • @mitchstorm
    @mitchstorm 4 роки тому +1

    Почему у меня поле не прорисовуетса? Помогите пж.

  • @ArtSolist
    @ArtSolist 4 роки тому

    Полчаса искал ошибку... оказалось в строке: const ctx = canvas.getContext("2d"); Написал 2d написал с большой буквой, то есть 2D. А в консоль писало: "Uncaught TypeError: Cannot read property 'drawImage' of null
    at drawGame" 😁

  • @myshkin832
    @myshkin832 4 роки тому +1

    *А какая разница между var, let, const?*

    • @intbyte
      @intbyte 4 роки тому +1

      const - неизменяемая переменная(константа)
      var - старый способ создания переменной
      let - новый способ создания переменной, с некоторыми незначительными преимуществами перед var

    • @myshkin832
      @myshkin832 4 роки тому

      @@intbyte спасибо 🙂

    • @rbk9582
      @rbk9582 4 роки тому +1

      @@intbyte если создать let переменную в функции то она будет только в её пределах, если не ошибаюсь.

  • @mlpyavamystical_yt
    @mlpyavamystical_yt 3 роки тому

    У меня моментами еда не появляется. Что делать?

  • @s1lentgrave
    @s1lentgrave 5 років тому

    и ещё такой момент, если змейка внезапно остановилась при развороте, но сама ещё прямая, значит она развернулась не изменив координаты и сама себя съела

    • @s1lentgrave
      @s1lentgrave 5 років тому

      @Mad Doctor Это нужно изменить в другом месте, не там где коды указываются, а
      if(dir == "left") snake -= box;
      ...
      Тут проверь, все ли минусы и плюсы правильно написал, и порядок (left, right, up, down)

    • @s1lentgrave
      @s1lentgrave 5 років тому

      @Mad Doctor Скинь скриншот

  • @user-mw5ii1fs2e
    @user-mw5ii1fs2e 4 роки тому +1

    У меня ошибка, он не находит css файл

    • @puolchen2632
      @puolchen2632 3 роки тому

      если файл css находится в отдельной папке (скорее сего так и есть), убедись, что перед написанием имени файла написал в какой он папке находится:

  • @karaxesss
    @karaxesss 4 роки тому

    Гоша, твои уроки по JavaScript еще актуальны?

    • @jabka1356
      @jabka1356 4 роки тому

      Чувак скинь свой вк я тоже начинаю обучение джва скрипт . И да его уроки актуальны

    • @volkovgst
      @volkovgst 4 роки тому

      Очень даже

    • @hahatoon5443
      @hahatoon5443 4 роки тому

      @@jabka1356 хах, давай я с вами

  • @alibekyusupov322
    @alibekyusupov322 4 роки тому

    А за сколько примерно можно научиться писать такие коды от нуля? Учу уже неделю, понял почти всё но сам писать сначало не смогу

    • @user-dg1rm5xp1o
      @user-dg1rm5xp1o 4 роки тому +2

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

    • @user-dg1rm5xp1o
      @user-dg1rm5xp1o 4 роки тому +1

      И да, неделя для js - мало, месяц как минимум. Хотя в js нету прям заумных функций(

  • @megavanya123
    @megavanya123 4 роки тому

    что делать если в консоли вылезло это Uncaught SyntaxError: Unexpected token ')'

    • @ogg4470
      @ogg4470 3 роки тому

      Где-то лишний символ наверное открой консоль в, защите там покажет ошибку нажми на неё и покажет где это и исправь

    • @megavanya123
      @megavanya123 3 роки тому +2

      @@ogg4470 Я уже давно решил, но все же спасибо

  • @layon5413
    @layon5413 5 років тому +1

    Гоша, я твой старый подписчик. У меня есть очень интересный вопрос. Он немного не по теме программирования, а больше по теме 3D и создания игр. Но я не знаю кому ещё задать. Если прочитал это напиши хоть . и я распишу вопрос. Надеюсь прочитаешь.

    • @user-tp5jh1vd3s
      @user-tp5jh1vd3s 5 років тому

      А какой вопрос?

    • @user-tp5jh1vd3s
      @user-tp5jh1vd3s 5 років тому

      Какой движок ? Где моделировать ?

    • @layon5413
      @layon5413 5 років тому

      @@user-tp5jh1vd3s как бы вопрос не по моделям. Я видел на ютубе англ видео о дешёвой лицевой анимации. Люди обмазывали лицо зелёнкой и делали так лицевую анимацию. Могу скинуть. Очень интересная тема, и на рутубе никто не делал. Автор делал в блендера. (но я люблю синьку и подобных видео не было).

    • @user-tp5jh1vd3s
      @user-tp5jh1vd3s 5 років тому

      @@layon5413 это не зелёнка )) это что-то типо присосок .
      И это могут позволить только богатые дяди и тети (очень дорого)

    • @layon5413
      @layon5413 5 років тому

      @@user-tp5jh1vd3s ты очень плохо читал. Это бесплатно, в этом и прикол. Они как то настраивают и делают анимацию. Случайно на ролик наткнулся, оказалось по подобному запросу есть ещё. И там реал похоже на зеленку.) А студийная анимация стоит десятки тысяч долларов.

  • @ybamaster
    @ybamaster 3 роки тому +1

    А АБЕЗАТЕЛЬНО ПИСАТЬ CONST И LET просто я мало знаю о es6

    • @drino955jug3
      @drino955jug3 3 роки тому

      так прочитай про это

  • @user-iw3eg3pu1d
    @user-iw3eg3pu1d 2 роки тому

    А ты можешь показать как создать игру Got of war на javascript ?

  • @neyankk
    @neyankk Рік тому

    Почему змейка не появляется?

  • @user-qb5cx5oh4u
    @user-qb5cx5oh4u 3 роки тому

    Почему Карл у меня не работает эта игра

  • @user-ld1wd1tv3b
    @user-ld1wd1tv3b 5 років тому

    А сможешь сделать видео как создавать меню для игр (старт, настройки и т. д)

    • @user-tp5jh1vd3s
      @user-tp5jh1vd3s 5 років тому +1

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

    • @DanilSolodkov
      @DanilSolodkov 5 років тому

      Делаеш отдельную страницу,и сайт делаеш там на html там старт кнопки и тд

    • @user-tp5jh1vd3s
      @user-tp5jh1vd3s 5 років тому

      @@DanilSolodkov и зачем для игры делать двадцать сайтов ? (Я так понял что для каждого окна отдельный сайт)

    • @DanilSolodkov
      @DanilSolodkov 5 років тому

      это жызнь ты куку?страницу отдельную

    • @user-tp5jh1vd3s
      @user-tp5jh1vd3s 5 років тому

      Грузится будет дольше

  • @hovsepbabayan8329
    @hovsepbabayan8329 7 місяців тому

    У меня есть вопрос: Когда змея есть еду, он не удлиняется. Почему?

  • @user-vl2jk4nz8l
    @user-vl2jk4nz8l 3 роки тому +1

    У меня змейка движется, удлиняясь с каждым квадратиком. Не могу сделать, чтобы змейка двигалась одним квадратиком. Кажется, всё делаю по Гоше. Помогите, кто может!

    • @andreyteryaev4980
      @andreyteryaev4980 2 роки тому

      Решили проблему? Если да, то подскажите пожалуйста.

  • @user-bl9zj2np8t
    @user-bl9zj2np8t 2 роки тому

    Что делать если змейка не увеличивается...

  • @user-ol7fc8ls7e
    @user-ol7fc8ls7e 2 роки тому

    Если вы хотите что-бы когда голова врезалась в стенку голова не пролетала ещё клетку, то просто вставте этот код после кода с созданием переменной newHead!

  • @sargsyanmonika
    @sargsyanmonika 2 роки тому

    А где ссылки?

  • @zeitoros
    @zeitoros Рік тому

    Полностью переписал код не получается вообще бесконечная ошибка.
    P.S. там где ctx.drawImage(ground, 0, 0);

    • @88woda
      @88woda Рік тому

      так же, исправил?

  • @dvnnymvnrv8091
    @dvnnymvnrv8091 8 місяців тому

    Ребята скиньте пожалуйста несколько строк кода чтобы еда НЕ спавнилась под змейкой

  • @artemaleshchenko8219
    @artemaleshchenko8219 4 роки тому +1

    Как сделать скорость змейки меньше?

    • @lavolena
      @lavolena 4 роки тому

      let game = setInterval(drawGame, 100); поменяй скорость обновления на 250 мсек, например.

  • @yosa9463
    @yosa9463 5 років тому +2

    сделай видео урок по Meteor js

    • @user-tp5jh1vd3s
      @user-tp5jh1vd3s 5 років тому

      ?

    • @user-tp5jh1vd3s
      @user-tp5jh1vd3s 5 років тому

      Это библиотека?

    • @yosa9463
      @yosa9463 5 років тому

      @@user-tp5jh1vd3s +

    • @kertaw3853
      @kertaw3853 4 роки тому

      Скажи рандомное английское слово и с вероятностью 99% это библиотека для JavaScript

  • @user-ds4gj4hg9g
    @user-ds4gj4hg9g 2 роки тому

    Я бы изображение в CSS сделал

  • @mator7359
    @mator7359 3 роки тому

    useful