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

  Рет қаралды 157,662

Гоша Дударь

Гоша Дударь

Күн бұрын

Пікірлер: 290
@volt3396
@volt3396 5 жыл бұрын
Гоша, пожалуйста, по больше уроков, по созданию игр. Здоровья тебе :)
@ivanovserg8795
@ivanovserg8795 2 жыл бұрын
Хороший урок, есть чуток замечаний: 1) Код загроможден переменной bох, надо оставит её только для отрисовки в пикселах, а все сравнения и расчеты по координатам вести в количестве самих ячеек, а не в пикселах; 2) Есть объект food, тогда и картинку еды перенести надо в этот объект 3) Есть объект snake, тогда и направление dir перенести в этот объект 4) Есть голова змеи head, snakeX и snakeY - тогда их тоже вложить в объект snake P.S. По коду "размазаны" переменные, которые через 2 недели не вспомнишь что они делают - их надо логически вкладывать в объекты
@НикитаКудрявцев-х3е
@НикитаКудрявцев-х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(). Поэтому элементы массива не удалялись, а оставались на месте, что и кажется, как закрашивание
@11-april
@11-april 5 жыл бұрын
Не хочу выпендриваться, я новичок в этом деле, но я бы создал функцию, которая каждый рандомно генерирует еду, типа function createfood() {тут прописать рандомное появление еды} А переменную food просто объявить, затем вызвать эту функцию и каждый раз вызывать функция, когда змея проглатывает пищу) Спасибо за урок)
@evgeniiAn
@evgeniiAn 3 жыл бұрын
зачем плодить новые сущности если все решается в пару строк кода? и да, не выпендривайся)
@Hande_hoch
@Hande_hoch 3 жыл бұрын
один из очень немногих, на кого я езьже отдущи подписался, отдущи поставил лайк, отдущи оставляю коммент!
@lyonya7025
@lyonya7025 5 жыл бұрын
Чувак, ты самый лучший! Спсибо тебе за все твои уроки! Желаю как можно больше успехов в творчестве!!
@kukusikibabasikitv
@kukusikibabasikitv 4 жыл бұрын
Жалко, что у вас так мало видео про игры на джаваскрипт. Спасибо !!
@kulagintimofei7689
@kulagintimofei7689 3 жыл бұрын
Да
@СергейЧерный-б8п
@СергейЧерный-б8п 5 жыл бұрын
поражаюсь твоему трудолюбию
@dashkin-dima
@dashkin-dima 4 жыл бұрын
Да капец как сложно брать материал с запада
@Evoleo
@Evoleo 4 жыл бұрын
Он просто украл видео у зарубежного ютубера kzbin.info/www/bejne/b4XGhmV5ZqZ0edk
@zahaietskyi
@zahaietskyi 5 жыл бұрын
Годнота!!!💪💪💪
@VIJana79
@VIJana79 4 жыл бұрын
А почему Гошу критикуют на других каналах? Хорошо он рассказывает, всё понятно. Конечно для понимания база какая-то нужна, без неё никуда. А так всё норм, всё подробно, чего писать, куда вставлять, почему такое действие.
@timagoldm
@timagoldm Жыл бұрын
всем у кого что-то не получаятся или не работает: пересмотрите видео, вы что-то сделали неправильно. p.s. залайкайте чтобы все увидели
@ege8127
@ege8127 4 жыл бұрын
Спасибо огромное!!! От души!!!
@progi99
@progi99 Жыл бұрын
спасибо за урок, было бы интересно как еще регулировать скорость змейки
@MrSam-mh7ec
@MrSam-mh7ec 5 жыл бұрын
Гоша ты лучший. Удачи тебе
@atsuko_shittl.j
@atsuko_shittl.j 4 жыл бұрын
Спасибо за видео, я теперь знаю как запустить свои файлы на сервер) И узнала многое что о программировании)
@ganjackal
@ganjackal 3 жыл бұрын
Супер🤝🏆слушай топчик еще бы game over по соли экрана это реально не подскажешь как🤔😆 Короч я решил заняться плотно веб разработкой и тут столкнулся с js пока не платно занимаюсь ! Есть советик !? С чего лучше начинать html и css знаю не так хорошо но знаю но говорят в наше время js всем глава без него ни куда ! Что скажешь!?
@lackevil3730
@lackevil3730 4 жыл бұрын
Больше JavaScript плизз
@ЕкатеринаВасильева-ш5э
@ЕкатеринаВасильева-ш5э 2 жыл бұрын
Спасибо!
@арманбахтияров
@арманбахтияров 2 жыл бұрын
Крассава бро)
@РусланОчеретяний-о8ф
@РусланОчеретяний-о8ф 3 жыл бұрын
Очень круто!
@ЧиловикЧиловиков-р8э
@ЧиловикЧиловиков-р8э 2 жыл бұрын
Всё прекрасно! Получилось! Но есть один вопрос - зачем исползовать переменную let, если можно использовать переменную var? тоже и с const?(Я не причисляю твои дествия к ошибке, а лишь спрашиваю)
@jilka3232
@jilka3232 2 жыл бұрын
Переменная var устарела, а переменная let более современная
@ЧиловикЧиловиков-р8э
@ЧиловикЧиловиков-р8э 2 жыл бұрын
@@jilka3232 Спасибо, теперь попробую чаще использовать переменную let 😄
@ДаниилХлебников-м2е
@ДаниилХлебников-м2е 2 жыл бұрын
@@ЧиловикЧиловиков-р8э в области видимости дело. если сначала вызвать переменную заданную при помощи var а потом определить ее,то оно даст это сделать и ты получишь undefined. С let такая шняга работать не будет. тебе покажет ошибку. Как то так. Поэтому желательно использовать let. А если уверен что изменять переменную не будешь то делай const. Я обычно const для стрелочных функций использую.
@NeedForHeavyMetal
@NeedForHeavyMetal 3 жыл бұрын
спасибо!) наглядно)
@thedragon1328
@thedragon1328 3 жыл бұрын
Спасибо за видео!
@daffeboy
@daffeboy 5 жыл бұрын
Спасибо, всё робит!
@alex57767
@alex57767 5 жыл бұрын
Для полного счастья стоит дописать, чтобы координаты спауна новой еды не могли совпасть с одной из координат самой змейки
@光荣归于习近平同志
@光荣归于习近平同志 4 жыл бұрын
Как это сделать?
@RestPRODev
@RestPRODev 4 жыл бұрын
@@光荣归于习近平同志 Изи
@Evoleo
@Evoleo 4 жыл бұрын
@@光荣归于习近平同志 просто заспавнить заново если координаты внутри змейки и так пока не заспавнится нормально
@АлександрБулдаков-к5е
@АлександрБулдаков-к5е Жыл бұрын
Что делать если не воспринимает ctx.drawImege(ground, 0, 0)
@НаталіяГоловачко-в1г
@НаталіяГоловачко-в1г 5 жыл бұрын
Игра на JavaScript удалась! Спасибо!
@durkaRealLol
@durkaRealLol 3 жыл бұрын
что делать, ошибка game.js:48 Uncaught DOMException: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The HTMLImageElement provided is in the 'broken' state. at drawGame (
@savelpetoyan9853
@savelpetoyan9853 5 жыл бұрын
Круто
@iAmSvyat
@iAmSvyat 5 жыл бұрын
Подскажите насчет ошибки. При выполнении интервала на 11:11 в консоли выдает "Uncaught TypeError: Cannot read property 'drawImage' of null at drawGame"
@daniyarkayir
@daniyarkayir 5 жыл бұрын
вы может быть написали const ctx вместе из за этого и ошибка примерно вот так вот constctx = canvas.getContext("2d");
@maxedits7064
@maxedits7064 4 жыл бұрын
Лайк, всё круто и понятно, я пошёл делать игру)) Единственное чего мне не понятно и хотелось бы понять: за что отвечают meta у тебя в html? их там три
@chelobas14
@chelobas14 3 жыл бұрын
Это стандартная разметка, её создаёт сама прога при создании файла. Она не нужна
@innagencer8731
@innagencer8731 2 жыл бұрын
класс!!! спасибо!!! вопрос к знающим, как уменьшить скорость движения змейки?
@ivanovserg8795
@ivanovserg8795 2 жыл бұрын
В строке let game = SetInterval ( drawGame, 100 ); надо увеличить интервал с 100, например до 200 (т.е. заменить 100 на 200). Если надо еще медленнее - то ставим 300 вместо 100
@innagencer8731
@innagencer8731 2 жыл бұрын
@@ivanovserg8795 Спасибо БОЛЬШОЕ!!!!!!!!!!!!!!!!!!!!!
@munutd9857
@munutd9857 3 жыл бұрын
👍👍👍
@GANGST1ER
@GANGST1ER 4 жыл бұрын
Очень долго делал, но всё таки переписал эту же игру на Python в Tk+Canvas) Проблема была в зацикливании движения змейки. root.after(150, func) помогло.
@kain5731
@kain5731 2 жыл бұрын
Привет, хочу спросить у тебя если не сложно) я хочу научиться фронтент разработке и немного бэкенда, для этого нужен ПК или ноутбук, хотел бы узнать что из этого лучше ? И на сколько мощными они должны быть?
@VVINVEST-k3q
@VVINVEST-k3q 2 жыл бұрын
@@kain5731 если хочешь учиться то тебе хватит самого обычного пк или ноутбука что удобнее тебе будет, мощностью не имеет значения, даже на самом простом пк можно открыть редактор кода и видео по которым будешь учиться
@KonamiMaster
@KonamiMaster 3 жыл бұрын
Спасибо за инфу
@vilgo3927
@vilgo3927 3 жыл бұрын
из за блочной видемости dir должен выдавать undefined, обьясните как это работает
@megavanya123
@megavanya123 4 жыл бұрын
что делать если сайт не показывает поле это с чем связано я посмотрел в консоли нету ошибок подскажите
@mercals
@mercals 4 жыл бұрын
у меня такая-же хрень
@попуск-л1щ
@попуск-л1щ 4 жыл бұрын
Вызывать функцию нужно, может файл неправильно подключён
@bogdanstrel9212
@bogdanstrel9212 4 жыл бұрын
У меня так же было, я поместил файл html в папку js ошибочно. Файл html должен быть в главной папке (в этом случае WWW).
@tuavtorru3041
@tuavtorru3041 4 жыл бұрын
Если не помогает напиши внутрь тега канвас какой-то текст и если он выводиться то значит у тебя слишком старая версия браузера.
@ZipOfficial
@ZipOfficial 4 жыл бұрын
@@tuavtorru3041 у меня не вываодит текст значит сбраузером у меня всё нормально?
@dlazder3937
@dlazder3937 Жыл бұрын
Пытался разобраться как работает змейка, но даже я полный новичок вижу что код написан как попало. Куча лишних переменных, объектов непонятно для чего они нужны... Вот в чем проблема например сделать объект и с направлениями змейки и позицией? не понятно...
@ЮрийСимаков-о2р
@ЮрийСимаков-о2р 5 жыл бұрын
Неплохо
@fffttt3935
@fffttt3935 2 жыл бұрын
Not allowed to load local resource. Как испавить, подскажите пожалуйста
@joefast505
@joefast505 5 жыл бұрын
Не до смотрел но все равно ТОП! Спасибо за видео :D
@gennadius909
@gennadius909 5 жыл бұрын
Спасибо за урок
@angrycoder18
@angrycoder18 5 жыл бұрын
в смысле переменные же в javascript объявляются через var или из-за canvas через let?или это просто не 'use strict'
@ЯрославИванов-ю9р
@ЯрославИванов-ю9р 5 жыл бұрын
Это относительно новый стандарт, var уже не используется
@azabum12ee
@azabum12ee 5 жыл бұрын
Это Es6. Теперь let это стандарт
@TtTalkUA
@TtTalkUA 5 жыл бұрын
погугли различия между var let и const
@iGespo
@iGespo 5 жыл бұрын
Почитай разницу между var и let learn.javascript.ru/let-const
@slava_tfdf
@slava_tfdf 2 жыл бұрын
Приветствую, насколько сильно нужно будет допилить игру, чтобы была возможность у пользователя сохранить фи и почту, чтобы сохранить/вывести таблицу с результатами?
@mr_pilka
@mr_pilka 2 жыл бұрын
очень сильно
@николайтомин-ю5д
@николайтомин-ю5д 3 ай бұрын
У меня рисуется ЕДА , СЧЁТ, ЗМЕЙКА. Еда перемещается. Но змейка не двигается. консоль всё время выдаёт ошибки, хотя всё сделано по Гоше. Кажется, перепробовал всё. Выдаваемые консолью ошибки, на первый взгляд, выглядят необоснованными. Что делать не знаю.
@karaxesss
@karaxesss 5 жыл бұрын
Гоша, твои уроки по JavaScript еще актуальны?
@jabka1356
@jabka1356 5 жыл бұрын
Чувак скинь свой вк я тоже начинаю обучение джва скрипт . И да его уроки актуальны
@volkovgst
@volkovgst 5 жыл бұрын
Очень даже
@hahatoon5443
@hahatoon5443 4 жыл бұрын
@@jabka1356 хах, давай я с вами
@RestPRODev
@RestPRODev 4 жыл бұрын
Зашёл тупо посмотреть как создать игру ради прикола В итоге узнал для себя что то новое по Js
@GANGST1ER
@GANGST1ER 4 жыл бұрын
Что-то не могу понять с рандомом. Если он генерирует от 0 до 1, то как получаются координаты больше 1 и меньше 17 при умножении?
@GANGST1ER
@GANGST1ER 4 жыл бұрын
Понял. Дело в том что random генерирует дробные числа в пределах от 0 до 1.
@Black_cat3549
@Black_cat3549 3 жыл бұрын
Гоша пожалуста ответь уменя не прорисовуеца поле что мне делать?
@ВладГущин-ж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;
@georgbruzgaloff4127
@georgbruzgaloff4127 3 жыл бұрын
Жорик, привееееет! Почему про игры перестал выкладывать уроки?
@АнтонАнтонов-ж1к
@АнтонАнтонов-ж1к 2 жыл бұрын
А ты можешь показать как создать игру Got of war на javascript ?
@iwenttobed5417
@iwenttobed5417 2 жыл бұрын
Кринж
@АлексейФедоров-ю3л
@АлексейФедоров-ю3л 5 жыл бұрын
Подскажите, вообще ни чего не отображает в браузере, белая пустота, уже для пробы полностью копировал всё и папки и код...
@GooseDL1337
@GooseDL1337 5 жыл бұрын
@Schellenberg у вас файл js работает раньше чем html. Объявите тег после того как закрывается тег
@АлексейФедоров-ю3л
@АлексейФедоров-ю3л 5 жыл бұрын
@@GooseDL1337 попробую, благодарю за ответ.
@yingwai8668
@yingwai8668 5 жыл бұрын
@@GooseDL1337 не работает... ничего не работает.. я уже заебался с этим
@olexandr5649
@olexandr5649 4 жыл бұрын
@@yingwai8668 ты все food заменил на foodImg? проверь правильность написания кода и указаных путей к картинкам. У меня файлы расположены в таких же папках как у него, но чобы получить картинку я прописал такой путь: foodImg.src = "../img/food.png"; после чего все заработало
@ss888dd
@ss888dd 4 жыл бұрын
@@GooseDL1337 тег в самом видео объявляется позже канваса.
@mrak3059
@mrak3059 5 жыл бұрын
ты лучший)
@vladnotvlad1228
@vladnotvlad1228 5 жыл бұрын
Бро, где ты был раньше?)
@hovsepbabayan8329
@hovsepbabayan8329 10 ай бұрын
У меня есть вопрос: Когда змея есть еду, он не удлиняется. Почему?
@ZipOfficial
@ZipOfficial 4 жыл бұрын
почему у меня не выводит картинку поля, я БУКВАЛЬНО сделал всё точно так же как видео, всё равно картинку не выводит, помогите пожалуйста
@yanayukhymenko3017
@yanayukhymenko3017 2 жыл бұрын
Я хотел сделать несколько еды, но когда змея проглатывает одну ту пропадает сразу несколько и больше не появляеться. Можно это как-то исправить?
@Egor_top518
@Egor_top518 2 жыл бұрын
Привет вот в картинке для поле змейки я всё правильно прописал обновлял страницу и картинка не появляется что делать?
@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);
@Gp-iv1ey
@Gp-iv1ey 2 жыл бұрын
у меня фрукты иконки только от 48 пикселей есть. Что делать?
@человек-г3з4ц
@человек-г3з4ц Жыл бұрын
я один сделал эту змейку в блокноте😂?
@myshkin832
@myshkin832 4 жыл бұрын
*А какая разница между var, let, const?*
@intbyte
@intbyte 4 жыл бұрын
const - неизменяемая переменная(константа) var - старый способ создания переменной let - новый способ создания переменной, с некоторыми незначительными преимуществами перед var
@myshkin832
@myshkin832 4 жыл бұрын
@@intbyte спасибо 🙂
@rbk9582
@rbk9582 4 жыл бұрын
@@intbyte если создать let переменную в функции то она будет только в её пределах, если не ошибаюсь.
@ЧиловикЧиловиков-р8э
@ЧиловикЧиловиков-р8э 2 жыл бұрын
Если вы хотите что-бы когда голова врезалась в стенку голова не пролетала ещё клетку, то просто вставте этот код после кода с созданием переменной newHead!
@foxyboy5059
@foxyboy5059 8 ай бұрын
где ты ссылку для картинки написал 🥺
@play_gamespg6446
@play_gamespg6446 Жыл бұрын
А что делать если змейка не отображается сделал всё точь в точь, и всё равно не появляется
@igixprffikiberg2636
@igixprffikiberg2636 3 жыл бұрын
Привет Георгий я писал игру я смотрел все твои уроки по Js и я решил посмотреть это видео в коде у меня показывает что все правильно но когда я зашел в консоль у меня выдало ошибку почему?
@layon5413
@layon5413 5 жыл бұрын
Гоша, я твой старый подписчик. У меня есть очень интересный вопрос. Он немного не по теме программирования, а больше по теме 3D и создания игр. Но я не знаю кому ещё задать. Если прочитал это напиши хоть . и я распишу вопрос. Надеюсь прочитаешь.
@ЖеняПетровский-р6т
@ЖеняПетровский-р6т 5 жыл бұрын
А какой вопрос?
@ЖеняПетровский-р6т
@ЖеняПетровский-р6т 5 жыл бұрын
Какой движок ? Где моделировать ?
@layon5413
@layon5413 5 жыл бұрын
@@ЖеняПетровский-р6т как бы вопрос не по моделям. Я видел на ютубе англ видео о дешёвой лицевой анимации. Люди обмазывали лицо зелёнкой и делали так лицевую анимацию. Могу скинуть. Очень интересная тема, и на рутубе никто не делал. Автор делал в блендера. (но я люблю синьку и подобных видео не было).
@ЖеняПетровский-р6т
@ЖеняПетровский-р6т 5 жыл бұрын
@@layon5413 это не зелёнка )) это что-то типо присосок . И это могут позволить только богатые дяди и тети (очень дорого)
@layon5413
@layon5413 5 жыл бұрын
@@ЖеняПетровский-р6т ты очень плохо читал. Это бесплатно, в этом и прикол. Они как то настраивают и делают анимацию. Случайно на ролик наткнулся, оказалось по подобному запросу есть ещё. И там реал похоже на зеленку.) А студийная анимация стоит десятки тысяч долларов.
@zxcblood1489
@zxcblood1489 4 жыл бұрын
А я прям на телефоне кодил и получилось
@s1lentgrave
@s1lentgrave 5 жыл бұрын
и ещё такой момент, если змейка внезапно остановилась при развороте, но сама ещё прямая, значит она развернулась не изменив координаты и сама себя съела
@s1lentgrave
@s1lentgrave 5 жыл бұрын
@Mad Doctor Это нужно изменить в другом месте, не там где коды указываются, а if(dir == "left") snake -= box; ... Тут проверь, все ли минусы и плюсы правильно написал, и порядок (left, right, up, down)
@s1lentgrave
@s1lentgrave 5 жыл бұрын
@Mad Doctor Скинь скриншот
@utlookworld5784
@utlookworld5784 3 жыл бұрын
Игра - класс! А как сделать несколько уровней?
@argus2298
@argus2298 5 жыл бұрын
Сделай видео про "крестики и нолики".
@ЖеняПетровский-р6т
@ЖеняПетровский-р6т 5 жыл бұрын
Могу скинуть файл через Гугл диск
@DanilSolodkov
@DanilSolodkov 5 жыл бұрын
это жызнь давай
@ЖеняПетровский-р6т
@ЖеняПетровский-р6т 5 жыл бұрын
@@DanilSolodkov не суди за комментарии ( там их только 2) я его написал года два назад
@DanilSolodkov
@DanilSolodkov 5 жыл бұрын
это жызнь чего?коменту неделя
@Evoleo
@Evoleo 4 жыл бұрын
Как только выйдет западный ролик с такой тематикой - он сделает
@neyankk
@neyankk 2 жыл бұрын
Почему змейка не появляется?
@baxtibeksaidov9841
@baxtibeksaidov9841 Жыл бұрын
какой у тебя шрифт, покажи мне я тоже такой хочу 😁😁
@dvnnymvnrv8091
@dvnnymvnrv8091 Жыл бұрын
Ребята скиньте пожалуйста несколько строк кода чтобы еда НЕ спавнилась под змейкой
@nailfah
@nailfah 5 жыл бұрын
Почему картинку загрузили через setInterval? Да ещё со значением 100. Она же по логике должна как раз мелькать...
@ЕленаШумченко-ь2ф
@ЕленаШумченко-ь2ф 4 жыл бұрын
А скажите пожалуйста от этого значения может не отображать половину поля?
@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 особо не было, но способ рабочий.
@Сашка-г4ц
@Сашка-г4ц 5 жыл бұрын
Можно на бесплатный github pages выгрузить
@zeitoros
@zeitoros Жыл бұрын
Полностью переписал код не получается вообще бесконечная ошибка. P.S. там где ctx.drawImage(ground, 0, 0);
@88woda
@88woda Жыл бұрын
так же, исправил?
@faded_boy9277
@faded_boy9277 3 жыл бұрын
Я не могу найти такоеже поле оно мне очень понравилось можете кинуть ссилку на него ИЛИ как то передать
@taaron8043
@taaron8043 4 жыл бұрын
почему когда пишешь например document.get... не высвечивается подсказка getElementById
@Aituar_
@Aituar_ 3 жыл бұрын
Зависит от редактора кода,
@mator7359
@mator7359 3 жыл бұрын
useful
@ybamaster
@ybamaster 3 жыл бұрын
А АБЕЗАТЕЛЬНО ПИСАТЬ CONST И LET просто я мало знаю о es6
@drino955jug3
@drino955jug3 3 жыл бұрын
так прочитай про это
@Кирилл-у7б6т
@Кирилл-у7б6т 2 жыл бұрын
Я бы изображение в CSS сделал
@firesword2912
@firesword2912 5 жыл бұрын
а если я хочу добавить еще цветов к змеи?
@levveremchuk1475
@levveremchuk1475 4 жыл бұрын
помогите пожалуйста код аналогичный ошибок в консоле нет но змейка не растет кде я сделал чтото не так????
@bakumjesus7143
@bakumjesus7143 4 жыл бұрын
Перед кнопками left , right удали pop
@yosa9463
@yosa9463 5 жыл бұрын
сделай видео урок по Meteor js
@ЖеняПетровский-р6т
@ЖеняПетровский-р6т 5 жыл бұрын
?
@ЖеняПетровский-р6т
@ЖеняПетровский-р6т 5 жыл бұрын
Это библиотека?
@yosa9463
@yosa9463 5 жыл бұрын
@@ЖеняПетровский-р6т +
@kertaw3853
@kertaw3853 4 жыл бұрын
Скажи рандомное английское слово и с вероятностью 99% это библиотека для JavaScript
@iGotton
@iGotton 5 жыл бұрын
Обязательно канвас использовать?
@ЖеняПетровский-р6т
@ЖеняПетровский-р6т 5 жыл бұрын
Да
@iGotton
@iGotton 5 жыл бұрын
@@ЖеняПетровский-р6т получается это уже не чистый js.
@ЖеняПетровский-р6т
@ЖеняПетровский-р6т 5 жыл бұрын
@@iGotton почему?
@ЕкатеринаСтолярова-л6ы
@ЕкатеринаСтолярова-л6ы 4 жыл бұрын
Ну так в названии видео и не написано один лишь чистый js, а чистый js и html
@Evoleo
@Evoleo 4 жыл бұрын
@@ЖеняПетровский-р6т потому что canvas - это html тэг
@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 4 жыл бұрын
перекинь style.css:1 и game.js:43 в папку где index.html и измени путь на а game.js на должно сработать
@catto88
@catto88 3 жыл бұрын
замени const на let на строке 43
@alibekyusupov322
@alibekyusupov322 4 жыл бұрын
А за сколько примерно можно научиться писать такие коды от нуля? Учу уже неделю, понял почти всё но сам писать сначало не смогу
@МаксимФединов
@МаксимФединов 4 жыл бұрын
Пиши сперва все по видео, будешь со временем своим мозгом осознавать код, функции будут запоминается и в будущем сможешь писать код без сторонней помощи, но до этого ещё долгая практика таких сценариев. На своём опыте говорю, не помогли учебники, помогло списывание с туториалов.
@МаксимФединов
@МаксимФединов 4 жыл бұрын
И да, неделя для js - мало, месяц как минимум. Хотя в js нету прям заумных функций(
@mlpyavamystical_yt
@mlpyavamystical_yt 3 жыл бұрын
У меня моментами еда не появляется. Что делать?
@УланИмарбеков
@УланИмарбеков 2 жыл бұрын
Что делать если змейка не увеличивается...
@СашаК-щ6э
@СашаК-щ6э 5 жыл бұрын
А сможешь сделать видео как создавать меню для игр (старт, настройки и т. д)
@ЖеняПетровский-р6т
@ЖеняПетровский-р6т 5 жыл бұрын
Там легко . Сначала делаешь меню дизайн и кнопки и помещяеш всё кто в функцию , далее делаешь саму игру и помещяеш это в другую функцию . Далее в меню при нажатии на кнопку старт ты вызываешь функцию с самой игрой а при нажатии на кнопку меню (в игре) прерываешь цыкл игры и вызываешь функцию с меню Это в теории а на практике не знаю как будет
@DanilSolodkov
@DanilSolodkov 5 жыл бұрын
Делаеш отдельную страницу,и сайт делаеш там на html там старт кнопки и тд
@ЖеняПетровский-р6т
@ЖеняПетровский-р6т 5 жыл бұрын
@@DanilSolodkov и зачем для игры делать двадцать сайтов ? (Я так понял что для каждого окна отдельный сайт)
@DanilSolodkov
@DanilSolodkov 5 жыл бұрын
это жызнь ты куку?страницу отдельную
@ЖеняПетровский-р6т
@ЖеняПетровский-р6т 5 жыл бұрын
Грузится будет дольше
@ЕленаШумченко-ь2ф
@ЕленаШумченко-ь2ф 4 жыл бұрын
Гоша помоги пожалуйста у меня вот это поле половину отображает половину нет все проверил и все ровно
@Aituar_
@Aituar_ 3 жыл бұрын
Может вы задали ширину и высоту через СИэсЭС?
@ArtSolist
@ArtSolist 4 жыл бұрын
Полчаса искал ошибку... оказалось в строке: const ctx = canvas.getContext("2d"); Написал 2d написал с большой буквой, то есть 2D. А в консоль писало: "Uncaught TypeError: Cannot read property 'drawImage' of null at drawGame" 😁
@николайтомин-ю5д
@николайтомин-ю5д 3 жыл бұрын
У меня змейка движется, удлиняясь с каждым квадратиком. Не могу сделать, чтобы змейка двигалась одним квадратиком. Кажется, всё делаю по Гоше. Помогите, кто может!
@andreyteryaev4980
@andreyteryaev4980 2 жыл бұрын
Решили проблему? Если да, то подскажите пожалуйста.
@СоциальнаяНакипь
@СоциальнаяНакипь 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 что не так?
@H336-p1v
@H336-p1v 5 жыл бұрын
3:43 Это необязательно, у меня работает просто обращение по id (т.е. переменная "game", которой нет в коде, возвращает canvas).
@MaximMoPeR
@MaximMoPeR 4 жыл бұрын
@H 336 Что ты тут делаешь? Лол я твой подписчик =)
@СемёнЗайцев-и5ж
@СемёнЗайцев-и5ж 4 жыл бұрын
@@MaximMoPeR ты на этого дауна подписан?
@garnish1006
@garnish1006 3 жыл бұрын
@@СемёнЗайцев-и5ж всм
@МурадБлек
@МурадБлек 3 жыл бұрын
Почему Карл у меня не работает эта игра
Создание игры на чистом JavaScript за 20 минут!
21:45
Гоша Дударь
Рет қаралды 335 М.
Учим HTML5 Canvas за 30 минут!
36:56
Хауди Хо™ - Просто о мире IT!
Рет қаралды 212 М.
Fake watermelon by Secret Vlog
00:16
Secret Vlog
Рет қаралды 37 МЛН
Налог на незнание JavaScript - [Hamster Kombat]
50:20
Callback это просто. Разбираемся в callback JavaScript
15:33
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 74 М.
Что такое антипаттерны?
12:19
Merion Academy
Рет қаралды 38 М.
JavaScript Паттерны. Шаблоны проектирования. 17 Примеров
1:54:30
Изучение JavaScript в одном видео уроке за час!
56:03
CI/CD - Простым языком на понятном примере
15:29
Артём Шумейко
Рет қаралды 96 М.