30-й день JavaScript 30 Веса Боса завершил отличный курс созданием игры Ударь крота. В этом уроке не было много нового материала, вместо этого он закрепил то, что мы узнали. И было весело играть в игру после того, как я закончил!

Мы начали с выбора классов и именования переменных.

const holes = document.querySelectorAll('.hole');
const scoreBoard = document.querySelector('.score');
const moles = document.querySelectorAll('.mole');
let lastHole;
let timeUp = false;
let score = 0;

Мы хотели рандомизировать время, когда каждый крот высовывал голову.

function randomTime(min, max) {
   return Math.round(Math.random() * (max - min)+ min);
}

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

function randomHole(holes){
   const idx = Math.floor(Math.random() * holes.length);
   const hole = holes[idx];
   if(hole === lastHole){
      return randomHole(holes);
   }
   lastHole = hole;
   return hole;
}

Заставьте SVG-изображение крота выглядывать из дыры, переключив класс CSS и связав его со случайной дырой и временем.

function peep(){
   const time = randomTime(200,1000);
   const hole = randomHole(holes);
   hole.classList.add('up');
   setTimeout(() => {
      hole.classList.remove('up');
      if(!timeUp) peep();
   }, time);
}

Функция для переустановки игры.

function startGame() {
   scoreBoard.textContent = 0;
   timeUp = false;
   score = 0;
   peep();
   setTimeout(() => timeUp = true, 10000);
}

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

function bonk(e) {
   if(!e.isTrusted) return; //cheater!
   score++;
   this.classList.remove('up');
   scoreBoard.textContent = score;
}
moles.forEach(mole => mole.addEventListener('click', bonk));

Это был отличный урок, чтобы закончить курс. Я чувствую, что могу сам написать такую ​​программу.

Я не делал по одному уроку в день. На прохождение курса у меня ушло 6 недель. Я никогда не делал больше одного урока в день, а последние 12 уроков делал в дни подряд.

Для меня, как для начинающего программиста, JavaScript 30 был как раз тем, что нужно. Я только что закончил изучение двух длинных руководств по JavaScript и продвинутому CSS. Хотя эти курсы познакомили меня со многими новыми концепциями, я не был уверен, как все это сочетается друг с другом, чтобы на самом деле что-то сделать. Уэс Бос объяснил, как все части четко и лаконично сочетаются друг с другом. У него также есть веселый, беззаботный стиль, который я оценил. И Бос предлагает этот курс БЕСПЛАТНО, без каких-либо условий. Людям, которые только заканчивают дидактические руководства по веб-разработке, я настоятельно рекомендую JavaScript 30 в качестве следующего шага.

Чтобы следить за моим блогом через этот курс с самого начала.