Регистрация на урок: https://vk.cc/83Osiw
Создание игр на JavaScript и HTML стало возможным с приходом HTML5. В этом видео мы создадим небольшую 2D игру на подобии игры Flappy Bird всего за 20 минут. При этом мы будем использовать лишь чистый JavaScript код!
Статья со всеми материалами к игре: https://itproger.com/news/104
✔ Сообщество программистов: https://itproger.com/
✔ ————-
Вступай в группу Вк – https://vk.com/prog_life 🚀
Группа FaceBook – https://goo.gl/XW0aaP
Instagram: https://www.instagram.com/gosha_dudar/
Telegram: http://t.me/itProger_official
Twitter – https://twitter.com/GoshaDudar
– Уроки от #GoshaDudar 👨🏼💻
– Все уроки по хештегу #GoshaLessons
Original source
33 responses to “Создание игры на чистом JavaScript за 20 минут!”
Урок ради рекламы. Вы не ахуели там?
ни х у и ща не работает
Видео ускорено чтоли ?
у кого не прогружаются картинки, в самом начале: pipeBottom.onload = setInterval(() => {
draw();
}, 100);
дальше просто draw();
Клево конечно, новички могут увидеть что может JS, но уровень прям очень маленький, если бы я глянул его до изучения JS то не особо впечатлился
Очень познавательно, хотелось бы узнать можно ли создать ссылку таким же образом? Чтоб например при нажатии на картинку переходило на другую страницу? Спасибо
не работающая параша
Данный блок
// Отслеживание прикосновений
if(xPos + bird.width >= pipe[i].x
&& xPos <= pipe[i].x + pipeUp.width
&& (yPos <= pipe[i].y + pipeUp.height
|| yPos + bird.height >= pipe[i].y + pipeUp.height + gap) || yPos + bird.height >= cvs.height – fg.height) {
location.reload(); // Перезагрузка страницы
}
не работает при запуске с любым другим масивом, также при смене стороны передвижения т.е. просто x меняем на y вообще ничего не запускает из js файла ибо в этом ошибка
Мне кажется, что все (ну или почти все) кто попытался поворить за автором на самом деле имели одну и ту же проблему – не загружалась графика. А те, кто писали, что видео крутое – просто его посмотрели, но повторить не пытались.
Лучше все время изменять переменную grav на -1, а в момент прыжка ставить пременной grav значение 10. Тогда игра будет больше похожа на Flappy Bird.
Все делаю как в уроке,но картинки не появляются на странице(((
возможно залить эту игру на сайт, что бы играть можно было всем и без моего компьютера, если да то как это сделать???
благодарочка
Странно, что в 2018 вижу в JS – var, getElementById… Давно уже querySelector и let
Cannot read property 'getContext' of null
Сделай движение дива по документу(область экрана) с препятствием.
Ну страница не адаптивна же?
На какой програме он пишет коди?
файл не подключается скопировал с cайта html и js коды, названия уазано правильно файл находиться в той же папке всё как у автора
www
index.html
js
audio
img
game.js
вот так располагаются файлы но всё равно ни чего не работает в чём может быть проблема?
Что этотза редактор?
Отличное видео и все получилось!
при запуске игра ушла в циклическую перезагрузку(((. Подскажите, пожалуйста, что делать? Заранее спасибо!
P. S.: Мой код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Flappy Bird!</title>
</head>
<body>
<canvas id="canvas" width="288" height="512"></canvas>
<script>
var cvs = document.getElementById("canvas");
var ctx = cvs.getContext("2d");
var bird = new Image();
var bg = new Image();
var fg = new Image();
var pipeUp = new Image();
var pipeBottom = new Image();
bird.src = "flappy_bird_bg.png";
bg.src = "flappy_bird_fg.png";
fg.src = "flappy_bird_bird.png";
pipeUp.src = "flappy_bird_pipeBottom.png";
pipeBottom.src = "flappy_bird_pipeUp.png";
// Звуковые файлы
var fly = new Audio();
var score_audio = new Audio();
fly.src = "._fly.mp3";
score_audio.src = "._score.mp3";
var gap = 90;
// При нажатии на какую-либо кнопку
document.addEventListener("keydown", moveUp);
function moveUp() {
yPos -= 25;
fly.play();
}
// Создание блоков
var pipe = [];
pipe[0] = {
x : cvs.width,
y : 0
}
var score = 0;
// Позиция птички
var xPos = 10;
var yPos = 150;
var grav = 1.5;
function draw() {
ctx.drawImage(bg, 0, 0);
for(var i = 0; i < pipe.length; i++) {
ctx.drawImage(pipeUp, pipe[i].x, pipe[i].y);
ctx.drawImage(pipeBottom, pipe[i].x, pipe[i].y + pipeUp.height + gap);
pipe[i].x–;
if(pipe[i].x == 125) {
pipe.push({
x : cvs.width,
y : Math.floor(Math.random() * pipeUp.height) – pipeUp.height
});
}
// Отслеживание прикосновений
if(xPos + bird.width >= pipe[i].x
&& xPos <= pipe[i].x + pipeUp.width
&& (yPos <= pipe[i].y + pipeUp.height
|| yPos + bird.height >= pipe[i].y + pipeUp.height + gap) || yPos + bird.height >= cvs.height – fg.height) {
location.reload(); // Перезагрузка страницы
}
if(pipe[i].x == 5) {
score++;
score_audio.play();
}
}
ctx.drawImage(fg, 0, cvs.height – fg.height);
ctx.drawImage(bird, xPos, yPos);
yPos += grav;
ctx.fillStyle = "#000";
ctx.font = "24px Verdana";
ctx.fillText("Счет: " + score, 10, cvs.height – 20);
requestAnimationFrame(draw);
}
pipeBottom.onload = draw;
</script>
</body>
</html>
Спасибо, очень интересно было
Да всё тут понятно, просто это не для новичков
изи курсач на проходную за 20 мин.
Это можно будет залить на хостинг и играть от туда ?
Господи какую же хуйню ты несешь дядя Т_Т
Есть вопрос стоит ли смотреть видеокурсы по JS от автора за 2015 год ?
https://www.youtube.com/watch?v=L07i4g-zhDA – оригинал. Но за перевод, спасибо.
ES6?
а проехавшие пайпы не надо из массива удалять?
а как анимацию прыжка сделать?
else if (e.keyCode == 38){
for (i=0; i<10; i++){
xPos+=1;
yPos-=6;
//xPos+=1;
//yPos+=6;
}
Базара нет, брат. Достойно всё пояснил мне за жизнь. теперь я лучше понимаю как жить грамотно. От души!
Ничего личного, но меня бесят типы которые говорят кы вы, вместо к в