Игра для детей
пробую работать в библиотекой rxjs и вот набросал простейшую игру. в ней нужно выбирать кубики с номерами в порядке возрастания.
скажите оправдано ли здесь применение библиотеки rxjs? мне кажется, если приложение разрастётся, то удобнее работать с потоками событий чем с eventListener-ми. Можно ли упростить этот код(но не отказываясь от RX)? и если не трудно, скажите, хорошо ли скомпонован код, читать такое удобно? как можно улучшить читабельность? jsfiddle js: document.addEventListener("DOMContentLoaded", ready); let currNum; let step; let startContent = 'Это простейший тренажёр для детей, он проверяет способность считать. Предполагается, что: \ <br>дети от 1 до 3 лет должны уметь считать до 5 \ <br>дети от 4 до 5 лет должны уметь считать до 10 \ <br>дети от 6 до 7 лет должны уметь считать до 30 \ <br>дети от 7 до 9 лет должны уметь считать до 100 \ <br><br>Чтобы проверить знания участнику предлагается последовательно в порядке возрастания выбрать кубики с цифрами \ '; function init() { currNum = -1; step = 0 let startBtn = document.getElementById('start'); startBtn.click(); }; function clearContent() { let contentInner = document.getElementById('contentInner'); contentInner.innerHTML = ''; }; function deletePoint(id) { let pointEl = document.getElementById(id); pointEl.parentNode.removeChild(pointEl); }; function createPoints(count) { let contentInner = document.getElementById('contentInner'); for(let i = 0; i <= 2; i++) { let num_ = Math.random() * count; let num = Math.ceil(num_); let pointEl = document.createElement('div'); pointEl.className = 'point'; pointEl.id = 'point_' + i; pointEl.setAttribute('data-num', num); pointEl.innerHTML = num; contentInner.appendChild(pointEl); }; }; function ready() { let ulEl = document.getElementById('ul'); let contentInnerEl = document.getElementById('contentInner'); let menu = Rx.Observable.fromEvent(ulEl, 'click'); let contentInner = Rx.Observable.fromEvent(contentInnerEl, 'click'); let subscription = menu .map(e => e.target) .filter(t => t.className === 'start' || t.className === 'li') .subscribe(function (t) { clearContent(); switch (t.className) { case 'start': document.getElementById('contentInner').innerHTML = startContent; break; case 'li': createPoints(t.getAttribute('data-count')); break; } }); let subscription3 = contentInner .map(e => e.target) .filter(t => t.className === 'point') .subscribe(function (t) { let val = +document.getElementById(t.id).innerHTML; ++step; deletePoint(t.id); if(currNum > val) { alert('Not correct'); init(); } else { currNum = val; if(step > 2) { alert('Correct'); init(); } } }); init(); }; |
модераторы, переместите пожалуйста эту тему в раздел "
Ваши сайты и скрипты ". только сейчас заметил его, там моя тема будет на месте |
Часовой пояс GMT +3, время: 12:35. |