Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.02.2018, 08:25
Новичок на форуме
Отправить личное сообщение для Сергеееееевич Посмотреть профиль Найти все сообщения от Сергеееееевич
 
Регистрация: 16.11.2017
Сообщений: 2

Чистый ли это javascript
вот есть код, сам думаю, что чистый javascript, но все же хочется спросить.
'use strict';
function rand(from, to) {
  return Math.floor((to - from + 1) * Math.random()) + from;
}

function randomItem(list) {
  const next = list[rand(0, list.length - 1)];
  if (randomItem.prev && randomItem.prev === next) {
    return randomItem(list);
  }
  randomItem.prev = next;
  return next;
}

function loadTopScore() {
  if (!localStorage) return 0;
  const score = localStorage.getItem('topScore');
  return score ? score : 0;
}

function saveTopScore(score) {
  if (!localStorage) return;
  localStorage.setItem('topScore', score);
}

function show(hole) {
  hole.classList.remove('boom');
  hole.classList.add('up');
}

function hide(hole) {
  hole.classList.remove('up');
}

function timeToString(time) {
  const MSECONDS_IN_SEC = 1000;
  const MSECONDS_IN_MIN = 60 * MSECONDS_IN_SEC;

  let min = Math.floor(time / MSECONDS_IN_MIN);
  let sec = Math.floor((time % MSECONDS_IN_MIN) / MSECONDS_IN_SEC);
  let msec = (time % MSECONDS_IN_MIN) % MSECONDS_IN_SEC;
  let spacer = msec > 500 ? ':' : ' ';
  return [min, sec]
    .map(number => number >= 10 ? number : `0${number}`)
    .join(spacer);
}

function updateTimer() {
  if (!isStarted) {
    return;
  }

  let timeout = GAME_TIMEOUT - (Date.now() - startedAt);
  if (timeout < 0 ) {
    timeout = 0;
  }
  timer.innerHTML = timeToString(timeout);
}

function updateScoreboard(points) {
  scoreboard.dataset.points = points;
  bestScore.dataset.points = topScore;
}

function handleClick() {
  const hole = this.parentElement;
  if (!hole.timeout) {
    return;
  }
  clearTimeout(hole.timeout);
  hole.classList.add('boom');
  setTimeout(() => {
    hide(hole);
    ++points;
    updateScoreboard(points);
  }, 50);
}

function next() {
  const hole = randomItem(holes);
  show(hole);
  hole.timeout = setTimeout(i => {
    hide(hole);
  }, rand(800, 2500));
}

function tic() {
  setTimeout(() => {
    if (isStarted) {
      next();
      tic();
    } else {
      startButton.style.display = 'initial';
      topScore = Math.max(points, topScore);
      saveTopScore(topScore);
      updateScoreboard(points);
      clearInterval(timerInterval);
    }
  }, rand(500, 2500));
}

function start() {
  points = 0;
  startedAt = Date.now();
  updateScoreboard(points);
  startButton.style.display = 'none';
  isStarted = true;
  setTimeout(() => isStarted = false, GAME_TIMEOUT);
  timerInterval = setInterval(updateTimer, 250);
  tic();
}

const GAME_TIMEOUT = 15000;
let timeout, timerInterval, isStarted = false, startedAt;
let topScore = loadTopScore();
let points = 0;

const holes = document.getElementsByClassName('hole');
const bubbles = document.getElementsByClassName('bubble');
const scoreboard = document.getElementById('currentScoreView');
const bestScore = document.getElementById('topScoreView');
const startButton = document.querySelector('.startButton');
const timer = document.querySelector('.timer');
Array.from(bubbles).forEach(bubble => bubble.addEventListener('click', handleClick));
startButton.addEventListener('click', start);

updateScoreboard(points);
Ответить с цитированием
  #2 (permalink)  
Старый 22.02.2018, 09:16
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от Сергеееееевич
сам думаю, что чистый javascript
Чистый.
Ответить с цитированием
  #3 (permalink)  
Старый 22.02.2018, 13:40
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

как слеза младенца
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с раскрывающимся списком ZMA Элементы интерфейса 96 06.08.2017 12:30
Петербург: Javascript + Canvas. Разработчик для портирования игры. В офис. waxattack Работа 0 21.07.2016 14:06
Можно ли это сделать в Javascript? Slowpoke Общие вопросы Javascript 2 02.12.2015 09:07
Психологическая деформация программистов DreamTheater Оффтопик 59 24.03.2012 05:03
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 19:24