Тёмный

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

Гоша Дударь
Подписаться 887 тыс.
Просмотров 157 тыс.
50% 1

Опубликовано:

 

15 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 290   
@volt3396
@volt3396 5 лет назад
Гоша, пожалуйста, по больше уроков, по созданию игр. Здоровья тебе :)
@ivanovserg8795
@ivanovserg8795 2 года назад
Хороший урок, есть чуток замечаний: 1) Код загроможден переменной bох, надо оставит её только для отрисовки в пикселах, а все сравнения и расчеты по координатам вести в количестве самих ячеек, а не в пикселах; 2) Есть объект food, тогда и картинку еды перенести надо в этот объект 3) Есть объект snake, тогда и направление dir перенести в этот объект 4) Есть голова змеи head, snakeX и snakeY - тогда их тоже вложить в объект snake P.S. По коду "размазаны" переменные, которые через 2 недели не вспомнишь что они делают - их надо логически вкладывать в объекты
@НикитаКудрявцев-х3е
код не работает
@timagoldm
@timagoldm Год назад
что тебе всё не нравится?! по твоему надо писать место бокс везде 32? умник, нашелся! я не хуже тебя в программировании разбираюсь!
@ivanovserg8795
@ivanovserg8795 Год назад
@@timagoldm Внимательно перечитай мой пункт 1. Переменная box (а еще лучше сделать её const) нужна только внутри функции отрисовки drawGame(). Вот и всё.
@timagoldm
@timagoldm Год назад
😒
@reallygood7580
@reallygood7580 4 года назад
3:37 - Я сразу понял, что наконец-то нашёл того, кто хотябы ЗНАЕТ о ES6!
@mooves3249
@mooves3249 3 года назад
Я тоже сколько не смотрел видосов, все переменные создают через var про который я уже даже забыл
@irinax5392
@irinax5392 4 года назад
Привет, в canvas остаются следы предыдущего местоположения змейки и кажется что ты рисуешь ею на поле. Такой же баг повторяется и с score. Цифра не обновляется а накладывается на предыдущее т.е. на 0 рисуется единичка и тд. Решила проблему добавив ctx.clearRect(0, 0, 609, 609); в самое начало функции drawGame(). Может кому понадобится.
@kostyaryazanov9685
@kostyaryazanov9685 2 года назад
В процессе создания столкнулся с такой-же проблемой. Оказалось, что я написал pop, вместо pop(). Поэтому элементы массива не удалялись, а оставались на месте, что и кажется, как закрашивание
@kukusikibabasikitv
@kukusikibabasikitv 3 года назад
Жалко, что у вас так мало видео про игры на джаваскрипт. Спасибо !!
@kulagintimofei7689
@kulagintimofei7689 3 года назад
Да
@lyonya7025
@lyonya7025 5 лет назад
Чувак, ты самый лучший! Спсибо тебе за все твои уроки! Желаю как можно больше успехов в творчестве!!
@11-april
@11-april 5 лет назад
Не хочу выпендриваться, я новичок в этом деле, но я бы создал функцию, которая каждый рандомно генерирует еду, типа function createfood() {тут прописать рандомное появление еды} А переменную food просто объявить, затем вызвать эту функцию и каждый раз вызывать функция, когда змея проглатывает пищу) Спасибо за урок)
@evgeniiAn
@evgeniiAn 3 года назад
зачем плодить новые сущности если все решается в пару строк кода? и да, не выпендривайся)
@Hande_hoch
@Hande_hoch 3 года назад
один из очень немногих, на кого я езьже отдущи подписался, отдущи поставил лайк, отдущи оставляю коммент!
@iAmSvyat
@iAmSvyat 5 лет назад
Подскажите насчет ошибки. При выполнении интервала на 11:11 в консоли выдает "Uncaught TypeError: Cannot read property 'drawImage' of null at drawGame"
@daniyarkayir
@daniyarkayir 5 лет назад
вы может быть написали const ctx вместе из за этого и ошибка примерно вот так вот constctx = canvas.getContext("2d");
@megavanya123
@megavanya123 4 года назад
что делать если сайт не показывает поле это с чем связано я посмотрел в консоли нету ошибок подскажите
@mercals
@mercals 4 года назад
у меня такая-же хрень
@user-po3qc7yx6g
@user-po3qc7yx6g 4 года назад
Вызывать функцию нужно, может файл неправильно подключён
@bogdanstrel9212
@bogdanstrel9212 4 года назад
У меня так же было, я поместил файл html в папку js ошибочно. Файл html должен быть в главной папке (в этом случае WWW).
@tuavtorru3041
@tuavtorru3041 4 года назад
Если не помогает напиши внутрь тега канвас какой-то текст и если он выводиться то значит у тебя слишком старая версия браузера.
@ZipOfficial
@ZipOfficial 4 года назад
@@tuavtorru3041 у меня не вываодит текст значит сбраузером у меня всё нормально?
@durkaRealLol
@durkaRealLol 2 года назад
что делать, ошибка game.js:48 Uncaught DOMException: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The HTMLImageElement provided is in the 'broken' state. at drawGame (
@СергейЧерный-б8п
поражаюсь твоему трудолюбию
@dashkin-dima
@dashkin-dima 4 года назад
Да капец как сложно брать материал с запада
@Evoleo
@Evoleo 4 года назад
Он просто украл видео у зарубежного ютубера ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-9TcU2C1AACw.html
@VIJana79
@VIJana79 4 года назад
А почему Гошу критикуют на других каналах? Хорошо он рассказывает, всё понятно. Конечно для понимания база какая-то нужна, без неё никуда. А так всё норм, всё подробно, чего писать, куда вставлять, почему такое действие.
@atsuko_shittl.j
@atsuko_shittl.j 4 года назад
Спасибо за видео, я теперь знаю как запустить свои файлы на сервер) И узнала многое что о программировании)
@zahaietskyi
@zahaietskyi 5 лет назад
Годнота!!!💪💪💪
@alex57767
@alex57767 5 лет назад
Для полного счастья стоит дописать, чтобы координаты спауна новой еды не могли совпасть с одной из координат самой змейки
@光荣归于习近平同志
@光荣归于习近平同志 4 года назад
Как это сделать?
@RestPRODev
@RestPRODev 4 года назад
@@光荣归于习近平同志 Изи
@Evoleo
@Evoleo 4 года назад
@@光荣归于习近平同志 просто заспавнить заново если координаты внутри змейки и так пока не заспавнится нормально
@АлександрБулдаков-к5е
Что делать если не воспринимает ctx.drawImege(ground, 0, 0)
@ege8127
@ege8127 4 года назад
Спасибо огромное!!! От души!!!
@progi99
@progi99 10 месяцев назад
спасибо за урок, было бы интересно как еще регулировать скорость змейки
@ВладГущин-ж4п
@ВладГущин-ж4п 4 года назад
Всем привет, на 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 Год назад
Спустя 2 года, думаю, неактуально, но вместо: let snakeX = [0].x; let snakeY = [0].y; должно быть: let snakeX = snake[0].x; let snakeY = snake[0].y;
@user-nz2nk5wp9t
@user-nz2nk5wp9t 5 лет назад
Подскажите, вообще ни чего не отображает в браузере, белая пустота, уже для пробы полностью копировал всё и папки и код...
@GooseDL1337
@GooseDL1337 4 года назад
@Schellenberg у вас файл js работает раньше чем html. Объявите тег после того как закрывается тег
@user-nz2nk5wp9t
@user-nz2nk5wp9t 4 года назад
@@GooseDL1337 попробую, благодарю за ответ.
@yingwai8668
@yingwai8668 4 года назад
@@GooseDL1337 не работает... ничего не работает.. я уже заебался с этим
@olexandr5649
@olexandr5649 4 года назад
@@yingwai8668 ты все food заменил на foodImg? проверь правильность написания кода и указаных путей к картинкам. У меня файлы расположены в таких же папках как у него, но чобы получить картинку я прописал такой путь: foodImg.src = "../img/food.png"; после чего все заработало
@ss888dd
@ss888dd 4 года назад
@@GooseDL1337 тег в самом видео объявляется позже канваса.
@MrSam-mh7ec
@MrSam-mh7ec 5 лет назад
Гоша ты лучший. Удачи тебе
@lackevil3730
@lackevil3730 4 года назад
Больше JavaScript плизз
@timagoldm
@timagoldm Год назад
всем у кого что-то не получаятся или не работает: пересмотрите видео, вы что-то сделали неправильно. p.s. залайкайте чтобы все увидели
@ganjackal
@ganjackal 3 года назад
Супер🤝🏆слушай топчик еще бы game over по соли экрана это реально не подскажешь как🤔😆 Короч я решил заняться плотно веб разработкой и тут столкнулся с js пока не платно занимаюсь ! Есть советик !? С чего лучше начинать html и css знаю не так хорошо но знаю но говорят в наше время js всем глава без него ни куда ! Что скажешь!?
@user-nu9rk7bl2w
@user-nu9rk7bl2w 5 лет назад
Игра на JavaScript удалась! Спасибо!
@RestPRODev
@RestPRODev 4 года назад
Зашёл тупо посмотреть как создать игру ради прикола В итоге узнал для себя что то новое по Js
@GANGST1ER
@GANGST1ER 4 года назад
Что-то не могу понять с рандомом. Если он генерирует от 0 до 1, то как получаются координаты больше 1 и меньше 17 при умножении?
@GANGST1ER
@GANGST1ER 4 года назад
Понял. Дело в том что random генерирует дробные числа в пределах от 0 до 1.
@user-ol7fc8ls7e
@user-ol7fc8ls7e 2 года назад
Всё прекрасно! Получилось! Но есть один вопрос - зачем исползовать переменную let, если можно использовать переменную var? тоже и с const?(Я не причисляю твои дествия к ошибке, а лишь спрашиваю)
@jilka3232
@jilka3232 2 года назад
Переменная var устарела, а переменная let более современная
@user-ol7fc8ls7e
@user-ol7fc8ls7e 2 года назад
@@jilka3232 Спасибо, теперь попробую чаще использовать переменную let 😄
@user-ek4zd1vp2e
@user-ek4zd1vp2e 2 года назад
@@user-ol7fc8ls7e в области видимости дело. если сначала вызвать переменную заданную при помощи var а потом определить ее,то оно даст это сделать и ты получишь undefined. С let такая шняга работать не будет. тебе покажет ошибку. Как то так. Поэтому желательно использовать let. А если уверен что изменять переменную не будешь то делай const. Я обычно const для стрелочных функций использую.
@dlazder3937
@dlazder3937 Год назад
Пытался разобраться как работает змейка, но даже я полный новичок вижу что код написан как попало. Куча лишних переменных, объектов непонятно для чего они нужны... Вот в чем проблема например сделать объект и с направлениями змейки и позицией? не понятно...
@joefast505
@joefast505 5 лет назад
Не до смотрел но все равно ТОП! Спасибо за видео :D
@николайтомин-ю5д
@николайтомин-ю5д Месяц назад
У меня рисуется ЕДА , СЧЁТ, ЗМЕЙКА. Еда перемещается. Но змейка не двигается. консоль всё время выдаёт ошибки, хотя всё сделано по Гоше. Кажется, перепробовал всё. Выдаваемые консолью ошибки, на первый взгляд, выглядят необоснованными. Что делать не знаю.
@GANGST1ER
@GANGST1ER 4 года назад
Очень долго делал, но всё таки переписал эту же игру на Python в Tk+Canvas) Проблема была в зацикливании движения змейки. root.after(150, func) помогло.
@kain5731
@kain5731 2 года назад
Привет, хочу спросить у тебя если не сложно) я хочу научиться фронтент разработке и немного бэкенда, для этого нужен ПК или ноутбук, хотел бы узнать что из этого лучше ? И на сколько мощными они должны быть?
@VVINVEST-k3q
@VVINVEST-k3q Год назад
@@kain5731 если хочешь учиться то тебе хватит самого обычного пк или ноутбука что удобнее тебе будет, мощностью не имеет значения, даже на самом простом пк можно открыть редактор кода и видео по которым будешь учиться
@innagencer8731
@innagencer8731 2 года назад
класс!!! спасибо!!! вопрос к знающим, как уменьшить скорость движения змейки?
@ivanovserg8795
@ivanovserg8795 2 года назад
В строке let game = SetInterval ( drawGame, 100 ); надо увеличить интервал с 100, например до 200 (т.е. заменить 100 на 200). Если надо еще медленнее - то ставим 300 вместо 100
@innagencer8731
@innagencer8731 2 года назад
@@ivanovserg8795 Спасибо БОЛЬШОЕ!!!!!!!!!!!!!!!!!!!!!
@Black_cat3549
@Black_cat3549 3 года назад
Гоша пожалуста ответь уменя не прорисовуеца поле что мне делать?
@Egor_top518
@Egor_top518 2 года назад
Привет вот в картинке для поле змейки я всё правильно прописал обновлял страницу и картинка не появляется что делать?
@maxedits7064
@maxedits7064 4 года назад
Лайк, всё круто и понятно, я пошёл делать игру)) Единственное чего мне не понятно и хотелось бы понять: за что отвечают meta у тебя в html? их там три
@chelobas14
@chelobas14 3 года назад
Это стандартная разметка, её создаёт сама прога при создании файла. Она не нужна
@angrycoder18
@angrycoder18 5 лет назад
в смысле переменные же в javascript объявляются через var или из-за canvas через let?или это просто не 'use strict'
@user-ez9zi2ww6x
@user-ez9zi2ww6x 5 лет назад
Это относительно новый стандарт, var уже не используется
@azabum12ee
@azabum12ee 5 лет назад
Это Es6. Теперь let это стандарт
@TtTalkUA
@TtTalkUA 5 лет назад
погугли различия между var let и const
@iGespo
@iGespo 5 лет назад
Почитай разницу между var и let learn.javascript.ru/let-const
@fffttt3935
@fffttt3935 2 года назад
Not allowed to load local resource. Как испавить, подскажите пожалуйста
@thedragon1328
@thedragon1328 3 года назад
Спасибо за видео!
@РусланОчеретяний-о8ф
Очень круто!
@ZipOfficial
@ZipOfficial 4 года назад
почему у меня не выводит картинку поля, я БУКВАЛЬНО сделал всё точно так же как видео, всё равно картинку не выводит, помогите пожалуйста
@levveremchuk1475
@levveremchuk1475 4 года назад
помогите пожалуйста код аналогичный ошибок в консоле нет но змейка не растет кде я сделал чтото не так????
@bakumjesus7143
@bakumjesus7143 4 года назад
Перед кнопками left , right удали pop
@js_games_for_dummies
@js_games_for_dummies Год назад
29:43 Переписала 12 раз -- хвост не убирается, snake.pop() не работает: Snake Game body{ background: linear-gradient(rgba(0, 0, 0, 0.4), transparent 1px), linear-gradient(90deg, rgba(0, 0, 0, 0.4), transparent 1px); background-size: 32px 32px; } canvas{ display: block; width: 608px; height: 608px; border: 1px solid black; margin: 32px 23px; } const cvs = document.getElementById("snake"); const ctx = cvs.getContext("2d"); const box = 32; ctx.fillStyle = 'black'; ctx.fillRect(0, 94, 608, 1); let snake = []; snake[0] = {x : 9 * box, y : 10 * box }; let food = { x : Math.floor(Math.random() * 17 + 1 ) * box, y : Math.floor(Math.random() * 15 + 3 ) * box }; let score = 0; let dir; document.addEventListener('keydown', direction); function direction(event){ if(event.keyCode == 37 && dir != 'right') {dir = 'left'; } if(event.keyCode == 38 && dir != 'down') {dir = 'up'; } if(event.keyCode == 39 && dir != 'left') {dir = 'right'; } if(event.keyCode == 40 && dir != 'up') {dir = 'down'; } } function drawGame(){ for(let i = 0; i < snake.length; i++){ ctx.fillStyle = 'green'; ctx.fillRect(snake[i].x, snake[i].y, box, box); } ctx.fillStyle = 'red'; ctx.fillRect(food.x, food.y, box, box); let snakeX = snake[0].x; let snakeY = snake[0].y; if(dir == 'left') snakeX -= box; if(dir == 'up') snakeY -= box; if(dir == 'right') snakeX += box; if(dir == 'down') snakeY += box; let newHead = { x : snakeX, y : snakeY }; snake.unshift(newHead); snake.pop(); } let game = setInterval(drawGame, 1000);
@igixprffikiberg2636
@igixprffikiberg2636 3 года назад
Привет Георгий я писал игру я смотрел все твои уроки по Js и я решил посмотреть это видео в коде у меня показывает что все правильно но когда я зашел в консоль у меня выдало ошибку почему?
@daffeboy
@daffeboy 5 лет назад
Спасибо, всё робит!
@vladnotvlad1228
@vladnotvlad1228 5 лет назад
Бро, где ты был раньше?)
@NeedForHeavyMetal
@NeedForHeavyMetal 3 года назад
спасибо!) наглядно)
@gennadius909
@gennadius909 5 лет назад
Спасибо за урок
@yanayukhymenko3017
@yanayukhymenko3017 2 года назад
Я хотел сделать несколько еды, но когда змея проглатывает одну ту пропадает сразу несколько и больше не появляеться. Можно это как-то исправить?
@slava_tfdf
@slava_tfdf 2 года назад
Приветствую, насколько сильно нужно будет допилить игру, чтобы была возможность у пользователя сохранить фи и почту, чтобы сохранить/вывести таблицу с результатами?
@mr_pilka
@mr_pilka Год назад
очень сильно
@vilgo3927
@vilgo3927 3 года назад
из за блочной видемости dir должен выдавать undefined, обьясните как это работает
@s1lentgrave
@s1lentgrave 5 лет назад
и ещё такой момент, если змейка внезапно остановилась при развороте, но сама ещё прямая, значит она развернулась не изменив координаты и сама себя съела
@s1lentgrave
@s1lentgrave 5 лет назад
@Mad Doctor Это нужно изменить в другом месте, не там где коды указываются, а if(dir == "left") snake -= box; ... Тут проверь, все ли минусы и плюсы правильно написал, и порядок (left, right, up, down)
@s1lentgrave
@s1lentgrave 5 лет назад
@Mad Doctor Скинь скриншот
@Gp-iv1ey
@Gp-iv1ey 2 года назад
у меня фрукты иконки только от 48 пикселей есть. Что делать?
@user-vz4jh7zr4r
@user-vz4jh7zr4r 4 года назад
Гоша помоги пожалуйста у меня вот это поле половину отображает половину нет все проверил и все ровно
@Aituar_
@Aituar_ 3 года назад
Может вы задали ширину и высоту через СИэсЭС?
@ЕкатеринаВасильева-ш5э
Спасибо!
@человек-г3з4ц
@человек-г3з4ц Год назад
я один сделал эту змейку в блокноте😂?
@foxyboy5059
@foxyboy5059 7 месяцев назад
где ты ссылку для картинки написал 🥺
@zxcblood1489
@zxcblood1489 4 года назад
А я прям на телефоне кодил и получилось
@savelpetoyan9853
@savelpetoyan9853 5 лет назад
Круто
@play_gamespg6446
@play_gamespg6446 Год назад
А что делать если змейка не отображается сделал всё точь в точь, и всё равно не появляется
@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 года назад
перекинь style.css:1 и game.js:43 в папку где index.html и измени путь на а game.js на должно сработать
@catto88
@catto88 3 года назад
замени const на let на строке 43
@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 особо не было, но способ рабочий.
@KonamiMaster
@KonamiMaster 3 года назад
Спасибо за инфу
@myshkin832
@myshkin832 4 года назад
*А какая разница между var, let, const?*
@intbyte
@intbyte 4 года назад
const - неизменяемая переменная(константа) var - старый способ создания переменной let - новый способ создания переменной, с некоторыми незначительными преимуществами перед var
@myshkin832
@myshkin832 4 года назад
@@intbyte спасибо 🙂
@rbk9582
@rbk9582 4 года назад
@@intbyte если создать let переменную в функции то она будет только в её пределах, если не ошибаюсь.
@hovsepbabayan8329
@hovsepbabayan8329 9 месяцев назад
У меня есть вопрос: Когда змея есть еду, он не удлиняется. Почему?
@yosa9463
@yosa9463 5 лет назад
сделай видео урок по Meteor js
@ЖеняПетровский-р6т
Это библиотека?
@yosa9463
@yosa9463 5 лет назад
@@ЖеняПетровский-р6т +
@kertaw3853
@kertaw3853 4 года назад
Скажи рандомное английское слово и с вероятностью 99% это библиотека для JavaScript
@olivka7289
@olivka7289 4 года назад
У меня вопрос, у меня получилось изменить иконку еды, а вот текстуру змеи как не пытался не получается, как это сделать?
@7pasza598
@7pasza598 4 года назад
for (let i = 0; i < snake.length; i++) { if (i === 0) { ctx.drawImage(sneakHead, snake[i].x, snake[i].y, box, box); } else { ctx.fillStyle = 'orange'; ctx.fillRect(snake[i].x, snake[i].y, box, box); } } //перед этим нужно не забыть положить в исходники картинку и объявить переменную с ней
@7pasza598
@7pasza598 4 года назад
@@eVoEvo111 for (let i = 0; i < snake.length; i++) { if (i === 0) { ctx.drawImage(sneakHead, snake[i].x, snake[i].y, box, box); } else { ctx.drawImage(sneakHead2, snake[i].x, snake[i].y, box, box); } } вот весь цикс змеи, если хочешь чтоб голова и тело были разными картинками. где нибудь возле объявления переменной снейкхед, объяви еще и переменную снейкхед2 и кинь в дистрибутив картинку с названием хвоста. Вот переменные let foodImg = new Image(); foodImg.src = "img/food.png"; let sneakHead = new Image(); sneakHead.src = "img/sneakHead.png"; //бошка// let sneakHead2 = new Image(); sneakHead2.src = "img/sneakHead2.png" //хвост//
@mitchstorm
@mitchstorm 4 года назад
Почему у меня поле не прорисовуетса? Помогите пж.
@Black_cat3549
@Black_cat3549 3 года назад
У меня тоже(((
@taaron8043
@taaron8043 4 года назад
почему когда пишешь например document.get... не высвечивается подсказка getElementById
@Aituar_
@Aituar_ 3 года назад
Зависит от редактора кода,
@nikoghosyann
@nikoghosyann 4 года назад
а что делать если змейка не растет а в кансоли нет ошибок?????
@Evoleo
@Evoleo 4 года назад
Тебе поможет только ТИТАН ГЕЛЬ
@nikoghosyann
@nikoghosyann 4 года назад
@@Evoleo Я уже всё исправил
@Gapuchaptv
@Gapuchaptv 3 года назад
@@Evoleo 😂😂😂😂
@Ривьён
@Ривьён Год назад
@@nikoghosyann Жаль не написал как, та же проблема, не растёт, ошибок нет
@layon5413
@layon5413 5 лет назад
Гоша, я твой старый подписчик. У меня есть очень интересный вопрос. Он немного не по теме программирования, а больше по теме 3D и создания игр. Но я не знаю кому ещё задать. Если прочитал это напиши хоть . и я распишу вопрос. Надеюсь прочитаешь.
@ЖеняПетровский-р6т
А какой вопрос?
@ЖеняПетровский-р6т
Какой движок ? Где моделировать ?
@layon5413
@layon5413 5 лет назад
@@ЖеняПетровский-р6т как бы вопрос не по моделям. Я видел на ютубе англ видео о дешёвой лицевой анимации. Люди обмазывали лицо зелёнкой и делали так лицевую анимацию. Могу скинуть. Очень интересная тема, и на рутубе никто не делал. Автор делал в блендера. (но я люблю синьку и подобных видео не было).
@ЖеняПетровский-р6т
@@layon5413 это не зелёнка )) это что-то типо присосок . И это могут позволить только богатые дяди и тети (очень дорого)
@layon5413
@layon5413 5 лет назад
@@ЖеняПетровский-р6т ты очень плохо читал. Это бесплатно, в этом и прикол. Они как то настраивают и делают анимацию. Случайно на ролик наткнулся, оказалось по подобному запросу есть ещё. И там реал похоже на зеленку.) А студийная анимация стоит десятки тысяч долларов.
@user-ol7fc8ls7e
@user-ol7fc8ls7e 2 года назад
Если вы хотите что-бы когда голова врезалась в стенку голова не пролетала ещё клетку, то просто вставте этот код после кода с созданием переменной newHead!
@zeitoros
@zeitoros Год назад
Полностью переписал код не получается вообще бесконечная ошибка. P.S. там где ctx.drawImage(ground, 0, 0);
@88woda
@88woda Год назад
так же, исправил?
@dvnnymvnrv8091
@dvnnymvnrv8091 10 месяцев назад
Ребята скиньте пожалуйста несколько строк кода чтобы еда НЕ спавнилась под змейкой
@Сашка-г4ц
@Сашка-г4ц 5 лет назад
Можно на бесплатный github pages выгрузить
@user-mw5ii1fs2e
@user-mw5ii1fs2e 4 года назад
У меня ошибка, он не находит css файл
@puolchen2632
@puolchen2632 4 года назад
если файл css находится в отдельной папке (скорее сего так и есть), убедись, что перед написанием имени файла написал в какой он папке находится:
@mrak3059
@mrak3059 5 лет назад
ты лучший)
@nailfah
@nailfah 5 лет назад
Почему картинку загрузили через setInterval? Да ещё со значением 100. Она же по логике должна как раз мелькать...
@user-vz4jh7zr4r
@user-vz4jh7zr4r 4 года назад
А скажите пожалуйста от этого значения может не отображать половину поля?
@николайтомин-ю5д
@николайтомин-ю5д 3 года назад
У меня змейка движется, удлиняясь с каждым квадратиком. Не могу сделать, чтобы змейка двигалась одним квадратиком. Кажется, всё делаю по Гоше. Помогите, кто может!
@andreyteryaev4980
@andreyteryaev4980 2 года назад
Решили проблему? Если да, то подскажите пожалуйста.
@utlookworld5784
@utlookworld5784 3 года назад
Игра - класс! А как сделать несколько уровней?
@baxtibeksaidov9841
@baxtibeksaidov9841 11 месяцев назад
какой у тебя шрифт, покажи мне я тоже такой хочу 😁😁
@ArtSolist
@ArtSolist 4 года назад
Полчаса искал ошибку... оказалось в строке: const ctx = canvas.getContext("2d"); Написал 2d написал с большой буквой, то есть 2D. А в консоль писало: "Uncaught TypeError: Cannot read property 'drawImage' of null at drawGame" 😁
@user-nd7fq9ys8p
@user-nd7fq9ys8p 5 лет назад
Неплохо
@арманбахтияров
@арманбахтияров 2 года назад
Крассава бро)
@ybamaster
@ybamaster 3 года назад
А АБЕЗАТЕЛЬНО ПИСАТЬ CONST И LET просто я мало знаю о es6
@drino955jug3
@drino955jug3 3 года назад
так прочитай про это
@georgbruzgaloff4127
@georgbruzgaloff4127 3 года назад
Жорик, привееееет! Почему про игры перестал выкладывать уроки?
@firesword2912
@firesword2912 4 года назад
а если я хочу добавить еще цветов к змеи?
@H336-p1v
@H336-p1v 5 лет назад
3:43 Это необязательно, у меня работает просто обращение по id (т.е. переменная "game", которой нет в коде, возвращает canvas).
@MaximMoPeR
@MaximMoPeR 4 года назад
@H 336 Что ты тут делаешь? Лол я твой подписчик =)
@СемёнЗайцев-и5ж
@СемёнЗайцев-и5ж 4 года назад
@@MaximMoPeR ты на этого дауна подписан?
@garnish1006
@garnish1006 2 года назад
@@СемёнЗайцев-и5ж всм
@АнтонАнтонов-ж1к
@АнтонАнтонов-ж1к 2 года назад
А ты можешь показать как создать игру Got of war на javascript ?
@iwenttobed5417
@iwenttobed5417 2 года назад
Кринж
@mlpyavamystical_yt
@mlpyavamystical_yt 3 года назад
У меня моментами еда не появляется. Что делать?
@user-vz4jh7zr4r
@user-vz4jh7zr4r 4 года назад
Помогите пожалуйста у меня поле половину отображает
@argus2298
@argus2298 5 лет назад
Сделай видео про "крестики и нолики".
@ЖеняПетровский-р6т
Могу скинуть файл через Гугл диск
@DanilSolodkov
@DanilSolodkov 5 лет назад
это жызнь давай
@ЖеняПетровский-р6т
@@DanilSolodkov не суди за комментарии ( там их только 2) я его написал года два назад
@DanilSolodkov
@DanilSolodkov 5 лет назад
это жызнь чего?коменту неделя
@Evoleo
@Evoleo 4 года назад
Как только выйдет западный ролик с такой тематикой - он сделает
@user-ds4gj4hg9g
@user-ds4gj4hg9g 2 года назад
Я бы изображение в CSS сделал
@faded_boy9277
@faded_boy9277 3 года назад
Я не могу найти такоеже поле оно мне очень понравилось можете кинуть ссилку на него ИЛИ как то передать
@СоциальнаяНакипь
@СоциальнаяНакипь 3 года назад
for(let i = 0; i < snake.length; i++) { ctx.drawImage(snakeh, snake[0].x-16, snake[0].y-16) ; if (i!= 0) { ctx.drawImage(snakeb, snake[i].x-8, snake[i].y-8);} } чтобы змейка была из ваших картинок snakeh - голова snakeb - тело
@СоциальнаяНакипь
@СоциальнаяНакипь 3 года назад
если, конечно, кому-то нужно, то я могу скинуть слегка улучшенную версию этой змейки
@freik3765
@freik3765 3 года назад
@@СоциальнаяНакипь Брат помоги
@freik3765
@freik3765 3 года назад
@@СоциальнаяНакипь У меня не получается вставить картинку
@СоциальнаяНакипь
@СоциальнаяНакипь 3 года назад
@@freik3765 что не так?
@artemaleshchenko8219
@artemaleshchenko8219 4 года назад
Как сделать скорость змейки меньше?
@lavolena
@lavolena 4 года назад
let game = setInterval(drawGame, 100); поменяй скорость обновления на 250 мсек, например.
@neyankk
@neyankk 2 года назад
Почему змейка не появляется?
@karaxesss
@karaxesss 5 лет назад
Гоша, твои уроки по JavaScript еще актуальны?
@jabka1356
@jabka1356 5 лет назад
Чувак скинь свой вк я тоже начинаю обучение джва скрипт . И да его уроки актуальны
@volkovgst
@volkovgst 5 лет назад
Очень даже
@hahatoon5443
@hahatoon5443 4 года назад
@@jabka1356 хах, давай я с вами
@puolchen2632
@puolchen2632 4 года назад
привет из 2020! Если кто нибудь это читает, помогите! моя змейка вырастать никак не хочет, Всё в порядке не в редакторе не в консоле ошибок нету, счёт вырастает с каждым поеданием еды, последняя в свою очередь пропадает, когда змейка ест. Не понимаю, почему это так. Сталкивались с подобной проблемой? Что может быть причиной?..заранее спасибо \_( o~o )_/
@evgeniiAn
@evgeniiAn 3 года назад
из 2021... проверь snake.pop(); он должен стоять в " else", а не в общем цикле
Далее
Учим HTML5 Canvas за 30 минут!
36:56
Просмотров 212 тыс.
7 Лет Опыта в IT | Что я Понял?
19:56
Изучаем JavaScript за 90 минут
1:25:18
Просмотров 528 тыс.