From 3055b785be1e19a0ac3bd7d39665968ef3efd044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D1=80=D0=BE=D1=88=D0=B8=D0=BD=20=D0=90=D0=BD=D1=82?= =?UTF-8?q?=D0=BE=D0=BD=20=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D1=8C=D0=B5=D0=B2?= =?UTF-8?q?=D0=B8=D1=87?= Date: Sun, 12 Jul 2026 02:18:43 +0300 Subject: [PATCH] initial commit --- Ponomar-Regular.woff | Bin 0 -> 118148 bytes app.js | 643 +++++++++++++++++++++++++++++++++++++++++++ icon.svg | 5 + index.html | 160 +++++++++++ manifest.json | 17 ++ numerals.js | 221 +++++++++++++++ styles.css | 616 +++++++++++++++++++++++++++++++++++++++++ sw.js | 32 +++ 8 files changed, 1694 insertions(+) create mode 100644 Ponomar-Regular.woff create mode 100644 app.js create mode 100644 icon.svg create mode 100644 index.html create mode 100644 manifest.json create mode 100644 numerals.js create mode 100644 styles.css create mode 100644 sw.js diff --git a/Ponomar-Regular.woff b/Ponomar-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..f4f1289b8457bcf24056f52fcccf9b854ace1060 GIT binary patch literal 118148 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%0A)JKh8eJhj(QLlB38y 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 B!6N_w literal 0 HcmV?d00001 diff --git a/app.js b/app.js new file mode 100644 index 0000000..29fd10c --- /dev/null +++ b/app.js @@ -0,0 +1,643 @@ +import { SYSTEMS, generateChoices } from './numerals.js'; + +const SYSTEM_RANGES = { + binary: [ + { label: '2\u2070 \u2013 2\u00B3', min: 1, max: 8 }, + { label: '2\u00B3 \u2013 2\u2077', min: 8, max: 128 }, + { label: '2\u2070 \u2013 2\u2077', min: 1, max: 128 }, + { label: '2\u2070 \u2013 2\u00B9\u2075', min: 1, max: 32768 }, + ], + ternary: [ + { label: '3\u2070 \u2013 3\u00B9', min: 1, max: 3 }, + { label: '\u20133\u00B9 \u2013 3\u00B9', min: -3, max: 3 }, + { label: '\u20133\u00B2 \u2013 3\u00B2', min: -9, max: 9 }, + { label: '\u20133\u00B3 \u2013 3\u00B3', min: -27, max: 27 }, + ], + octal: [ + { label: '8\u2070 \u2013 8\u00B9', min: 1, max: 8 }, + { label: '8\u00B2 \u2013 8\u00B3', min: 64, max: 512 }, + { label: '8\u2070 \u2013 8\u00B3', min: 1, max: 512 }, + { label: '8\u2070 \u2013 8\u2074', min: 1, max: 4096 }, + ], + hex: [ + { label: 'F\u2070 \u2013 F\u00B9', min: 1, max: 16 }, + { label: 'F\u2070 \u2013 F\u00B2', min: 1, max: 256 }, + { label: 'F\u00B2 \u2013 F\u2074', min: 256, max: 65536 }, + { label: 'F\u2070 \u2013 F\u2074', min: 1, max: 65536 }, + ], + braille: [ + { label: '0 \u2013 9', min: 0, max: 9 }, + { label: '10 \u2013 99', min: 10, max: 99 }, + { label: '100 \u2013 999', min: 100, max: 999 }, + { label: '0 \u2013 9999', min: 0, max: 9999 }, + ], + roman: [ + { label: '1 \u2013 9', min: 1, max: 9 }, + { label: '10 \u2013 99', min: 10, max: 99 }, + { label: '100 \u2013 999', min: 100, max: 999 }, + { label: '1000 \u2013 3999', min: 1000, max: 3999 }, + ], + greek: [ + { label: '1 \u2013 9', min: 1, max: 9 }, + { label: '10 \u2013 99', min: 10, max: 99 }, + { label: '100 \u2013 999', min: 100, max: 999 }, + { label: '1000 \u2013 9999', min: 1000, max: 9999 }, + ], + slavonic: [ + { label: '1 \u2013 9', min: 1, max: 9 }, + { label: '10 \u2013 99', min: 10, max: 99 }, + { label: '100 \u2013 999', min: 100, max: 999 }, + { label: '1000 \u2013 9999', min: 1000, max: 9999 }, + ], + hebrew: [ + { label: '1 \u2013 9', min: 1, max: 9 }, + { label: '10 \u2013 99', min: 10, max: 99 }, + { label: '100 \u2013 499', min: 100, max: 499 }, + ], +}; + +const SYSTEM_GROUPS = { + pos: ['binary', 'octal', 'hex', 'ternary', 'braille'], + nonpos: ['roman', 'greek', 'slavonic', 'hebrew'], +}; + +const MODES = [ + { label: 'Choose', value: 'choice' }, + { label: 'Type', value: 'manual' }, +]; + +const TIMINGS = [ + { label: '60 sec', value: 60 }, + { label: '40 sec', value: 40 }, + { label: '10 sec', value: 10 }, + { label: 'No limit', value: 0 }, +]; + +const ROUNDS = [10, 25, 50, 100]; + +let game = { + system: null, + range: null, + mode: null, + timing: null, + rounds: null, + currentRound: 0, + correctCount: 0, + correctAnswer: null, + answered: false, + timerInterval: null, + timeLeft: 0, + mistakes: [], +}; + +function showScreen(id) { + document.querySelectorAll('.screen').forEach(s => s.classList.remove('active')); + document.getElementById('screen-' + id).classList.add('active'); +} + +function shuffle(arr) { + const a = [...arr]; + for (let i = a.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [a[i], a[j]] = [a[j], a[i]]; + } + return a; +} + +function randInt(min, max) { + return min + Math.floor(Math.random() * (max - min + 1)); +} + +// ---- SETUP ---- +let setupState = {}; + +function renderSetupSystem() { + setupState = {}; + const posDiv = document.getElementById('setup-systems-pos'); + const nonposDiv = document.getElementById('setup-systems-nonpos'); + posDiv.innerHTML = ''; + nonposDiv.innerHTML = ''; + + for (const [group, keys] of Object.entries(SYSTEM_GROUPS)) { + const target = group === 'pos' ? posDiv : nonposDiv; + keys.forEach(key => { + const btn = document.createElement('button'); + btn.className = 'option-btn'; + btn.textContent = SYSTEMS[key].name; + btn.addEventListener('click', () => { + posDiv.querySelectorAll('.option-btn').forEach(b => b.classList.remove('selected')); + nonposDiv.querySelectorAll('.option-btn').forEach(b => b.classList.remove('selected')); + btn.classList.add('selected'); + setupState.system = key; + renderSetupRange(); + }); + target.appendChild(btn); + }); + } + + showScreen('setup-system'); +} + +function renderSetupRange() { + const ranges = SYSTEM_RANGES[setupState.system]; + + document.getElementById('range-title').textContent = 'Number Range — ' + SYSTEMS[setupState.system].name; + const rangesDiv = document.getElementById('setup-ranges'); + rangesDiv.innerHTML = ''; + delete setupState.range; + delete setupState.rangeData; + + ranges.forEach((r, i) => { + const btn = document.createElement('button'); + btn.className = 'option-btn'; + btn.textContent = r.label; + btn.addEventListener('click', () => { + rangesDiv.querySelectorAll('.option-btn').forEach(b => b.classList.remove('selected')); + btn.classList.add('selected'); + setupState.range = i; + setupState.rangeData = r; + renderSetupOptions(); + }); + rangesDiv.appendChild(btn); + }); + + showScreen('setup-range'); +} + +function renderSetupOptions() { + const defaultMode = 0; + const defaultTiming = 3; + const defaultRounds = 0; + + setupState.mode = defaultMode; + setupState.timing = defaultTiming; + setupState.rounds = defaultRounds; + + const modesDiv = document.getElementById('setup-modes'); + modesDiv.innerHTML = ''; + MODES.forEach((m, i) => { + const btn = document.createElement('button'); + btn.className = 'option-btn' + (i === defaultMode ? ' selected' : ''); + btn.textContent = m.label; + btn.addEventListener('click', () => { + modesDiv.querySelectorAll('.option-btn').forEach(b => b.classList.remove('selected')); + btn.classList.add('selected'); + setupState.mode = i; + }); + modesDiv.appendChild(btn); + }); + + const timingDiv = document.getElementById('setup-timing'); + timingDiv.innerHTML = ''; + TIMINGS.forEach((t, i) => { + const btn = document.createElement('button'); + btn.className = 'option-btn' + (i === defaultTiming ? ' selected' : ''); + btn.textContent = t.label; + btn.addEventListener('click', () => { + timingDiv.querySelectorAll('.option-btn').forEach(b => b.classList.remove('selected')); + btn.classList.add('selected'); + setupState.timing = i; + }); + timingDiv.appendChild(btn); + }); + + const roundsDiv = document.getElementById('setup-rounds'); + roundsDiv.innerHTML = ''; + ROUNDS.forEach((r, i) => { + const btn = document.createElement('button'); + btn.className = 'option-btn' + (i === defaultRounds ? ' selected' : ''); + btn.textContent = String(r); + btn.addEventListener('click', () => { + roundsDiv.querySelectorAll('.option-btn').forEach(b => b.classList.remove('selected')); + btn.classList.add('selected'); + setupState.rounds = i; + }); + roundsDiv.appendChild(btn); + }); + + showScreen('setup-options'); +} + +// ---- GAME ---- +function startGame() { + game.system = setupState.system; + game.range = setupState.rangeData || RANGES[setupState.range]; + game.mode = MODES[setupState.mode]?.value ?? setupState.mode; + game.timing = TIMINGS[setupState.timing]?.value ?? setupState.timing; + game.rounds = ROUNDS[setupState.rounds]; + game.currentRound = 0; + game.correctCount = 0; + game.mistakes = []; + + document.getElementById('score-correct').textContent = '0'; + document.getElementById('score-total').textContent = '0'; + document.getElementById('score-system').textContent = SYSTEMS[game.system].name; + + showScreen('game'); + nextRound(); +} + +function nextRound() { + if (game.currentRound >= game.rounds) { + endGame(); + return; + } + + game.currentRound++; + game.answered = false; + game.correctAnswer = randInt(game.range.min, game.range.max); + + document.getElementById('score-total').textContent = game.currentRound; + document.getElementById('score-correct').textContent = game.correctCount; + + const display = SYSTEMS[game.system].toDisplay(game.correctAnswer); + const numEl = document.getElementById('number-display'); + numEl.textContent = display; + numEl.classList.toggle('small-text', display.length > 12); + numEl.classList.toggle('slavonic-font', game.system === 'slavonic'); + + document.getElementById('answer-feedback').textContent = ''; + document.getElementById('answer-feedback').className = 'answer-feedback'; + document.getElementById('btn-next').classList.add('hidden'); + + if (game.mode === 'choice') { + renderChoices(); + } else { + renderNumpad(); + } + + startTimer(); +} + +function renderChoices() { + const choiceArea = document.getElementById('choice-area'); + const numpadArea = document.getElementById('numpad-area'); + choiceArea.classList.remove('hidden'); + numpadArea.classList.add('hidden'); + + const choices = generateChoices(game.correctAnswer, [game.range.min, game.range.max], 3); + choices.forEach((val, i) => { + const btn = document.getElementById('choice-' + i); + btn.textContent = val; + btn.className = 'choice-btn'; + btn.disabled = false; + btn.onclick = () => handleChoice(i, val, choices); + }); +} + +function handleChoice(idx, val, choices) { + if (game.answered) return; + game.answered = true; + stopTimer(); + + const feedback = document.getElementById('answer-feedback'); + const allBtns = choices.map((_, i) => document.getElementById('choice-' + i)); + + allBtns.forEach(b => b.disabled = true); + + if (val === game.correctAnswer) { + game.correctCount++; + document.getElementById('score-correct').textContent = game.correctCount; + allBtns[idx].classList.add('correct-choice'); + feedback.textContent = 'Correct!'; + feedback.className = 'answer-feedback correct'; + } else { + allBtns[idx].classList.add('incorrect-choice'); + const correctIdx = choices.indexOf(game.correctAnswer); + allBtns[correctIdx].classList.add('correct-choice'); + feedback.textContent = `Incorrect — answer: ${game.correctAnswer}`; + feedback.className = 'answer-feedback incorrect'; + game.mistakes.push({ + system: SYSTEMS[game.system].toDisplay(game.correctAnswer), + decimal: game.correctAnswer, + systemName: SYSTEMS[game.system].name, + }); + } + + document.getElementById('btn-next').classList.remove('hidden'); +} + +function renderNumpad() { + const choiceArea = document.getElementById('choice-area'); + const numpadArea = document.getElementById('numpad-area'); + choiceArea.classList.add('hidden'); + numpadArea.classList.remove('hidden'); + + const inputEl = document.getElementById('numpad-input'); + inputEl.textContent = ''; + + const clearBtn = numpadArea.querySelector('[data-key="clear"]'); + if (game.system === 'ternary') { + clearBtn.textContent = '±'; + clearBtn.dataset.key = 'sign'; + } else { + clearBtn.textContent = 'C'; + clearBtn.dataset.key = 'clear'; + } + + document.getElementById('btn-submit-answer').classList.remove('hidden'); + + numpadArea.querySelectorAll('.numpad-key').forEach(key => { + key.onclick = () => handleNumpadKey(key.dataset.key); + }); + + document.getElementById('btn-submit-answer').onclick = () => { + if (game.answered) return; + const val = parseInt(inputEl.textContent, 10); + if (isNaN(val)) return; + game.answered = true; + stopTimer(); + document.getElementById('btn-submit-answer').classList.add('hidden'); + + const feedback = document.getElementById('answer-feedback'); + if (val === game.correctAnswer) { + game.correctCount++; + document.getElementById('score-correct').textContent = game.correctCount; + feedback.textContent = 'Correct!'; + feedback.className = 'answer-feedback correct'; + } else { + feedback.textContent = `Incorrect — answer: ${game.correctAnswer}`; + feedback.className = 'answer-feedback incorrect'; + game.mistakes.push({ + system: SYSTEMS[game.system].toDisplay(game.correctAnswer), + decimal: game.correctAnswer, + systemName: SYSTEMS[game.system].name, + }); + } + + document.getElementById('btn-next').classList.remove('hidden'); + }; +} + +function handleNumpadKey(key) { + const inputEl = document.getElementById('numpad-input'); + if (game.answered) return; + + if (key === 'clear') { + inputEl.textContent = ''; + } else if (key === 'backspace') { + inputEl.textContent = inputEl.textContent.slice(0, -1); + } else if (key === 'sign') { + if (inputEl.textContent.startsWith('-')) { + inputEl.textContent = inputEl.textContent.slice(1); + } else { + inputEl.textContent = '-' + inputEl.textContent; + } + } else { + if (inputEl.textContent.length < 12) { + inputEl.textContent += key; + } + } +} + +function startTimer() { + stopTimer(); + const timerEl = document.getElementById('timer-display'); + const timerArea = document.getElementById('timer-area'); + + if (game.timing === 0) { + timerEl.textContent = ''; + timerEl.classList.remove('urgent'); + timerArea.classList.remove('visible'); + return; + } + + timerArea.classList.add('visible'); + game.timeLeft = game.timing; + timerEl.textContent = game.timeLeft + 's'; + timerEl.classList.remove('urgent'); + + game.timerInterval = setInterval(() => { + game.timeLeft--; + timerEl.textContent = game.timeLeft + 's'; + + if (game.timeLeft <= 10) { + timerEl.classList.add('urgent'); + } + + if (game.timeLeft <= 0) { + stopTimer(); + if (!game.answered) { + game.answered = true; + const feedback = document.getElementById('answer-feedback'); + feedback.textContent = `Time's up! Answer: ${game.correctAnswer}`; + feedback.className = 'answer-feedback incorrect'; + game.mistakes.push({ + system: SYSTEMS[game.system].toDisplay(game.correctAnswer), + decimal: game.correctAnswer, + systemName: SYSTEMS[game.system].name, + }); + + document.getElementById('btn-next').classList.remove('hidden'); + + if (game.mode === 'choice') { + document.querySelectorAll('.choice-btn').forEach(b => b.disabled = true); + } + } + } + }, 1000); +} + +function stopTimer() { + if (game.timerInterval) { + clearInterval(game.timerInterval); + game.timerInterval = null; + } + document.getElementById('timer-display').classList.remove('urgent'); +} + +function endGame() { + stopTimer(); + showScreen('results'); + + const completed = game.currentRound >= game.rounds; + const total = completed ? game.rounds : game.currentRound; + const correct = game.correctCount; + const pct = total > 0 ? Math.round((correct / total) * 100) : 0; + + const summary = document.getElementById('results-summary'); + summary.innerHTML = ` +
${correct}/${total}
+
${pct}% correct
+ `; + + const congratsEl = document.getElementById('results-congrats'); + const labelEl = document.getElementById('results-mistakes-label'); + const listEl = document.getElementById('results-list'); + congratsEl.innerHTML = ''; + labelEl.textContent = 'Mistakes'; + labelEl.style.display = ''; + listEl.innerHTML = ''; + + if (game.mistakes.length > 0) { + game.mistakes.forEach(m => { + const item = document.createElement('div'); + item.className = 'result-item'; + item.innerHTML = ` +
${m.system}
+
\u2192
+
${m.decimal}
+ `; + listEl.appendChild(item); + }); + } else if (completed) { + labelEl.style.display = 'none'; + congratsEl.textContent = 'Congratulations!'; + spawnConfetti(); + } else { + labelEl.style.display = 'none'; + } +} + +function spawnConfetti() { + const chars = ['🎉', '🎊', '✨', '🎈', '🥳', '💫']; + const container = document.getElementById('results-congrats'); + + for (let i = 0; i < 3; i++) { + setTimeout(() => { + const burst = document.createElement('div'); + burst.className = 'confetti-burst'; + burst.style.left = 15 + Math.random() * 70 + '%'; + burst.style.top = 20 + Math.random() * 40 + '%'; + + for (let j = 0; j < 12; j++) { + const particle = document.createElement('span'); + particle.className = 'confetti-particle'; + particle.textContent = chars[Math.floor(Math.random() * chars.length)]; + particle.style.setProperty('--dx', (Math.random() - 0.5) * 120 + 'px'); + particle.style.setProperty('--dy', -(40 + Math.random() * 80) + 'px'); + particle.style.setProperty('--rot', Math.random() * 360 + 'deg'); + particle.style.animationDuration = (0.6 + Math.random() * 0.4) + 's'; + burst.appendChild(particle); + } + + container.appendChild(burst); + setTimeout(() => burst.remove(), 1200); + }, i * 500); + } +} + +// ---- INIT ---- + +const SUBSCRIPTS = { '0':'\u2080', '1':'\u2081', '2':'\u2082', '3':'\u2083', + '4':'\u2084', '5':'\u2085', '6':'\u2086', '7':'\u2087', '8':'\u2088', '9':'\u2089' }; + +function toSubscript(n) { + return String(n).split('').map(d => SUBSCRIPTS[d]).join(''); +} + +const TICKER_SYSTEMS = [ + { key: 'binary', min: 1, max: 255, prefix: toSubscript(2) }, + { key: 'octal', min: 1, max: 511, prefix: toSubscript(8) }, + { key: 'hex', min: 1, max: 255, prefix: '0x' }, + { key: 'ternary', min: 1, max: 27, prefix: toSubscript(3) }, + { key: 'braille', min: 1, max: 99, prefix: null }, + { key: 'roman', min: 1, max: 3999, prefix: null }, + { key: 'greek', min: 1, max: 999, prefix: null }, + { key: 'slavonic', min: 1, max: 999, prefix: null }, +]; + +function generateTickerText() { + const pairs = []; + for (let i = 0; i < 20; i++) { + const sys = TICKER_SYSTEMS[Math.floor(Math.random() * TICKER_SYSTEMS.length)]; + const num = sys.min + Math.floor(Math.random() * (sys.max - sys.min + 1)); + const display = SYSTEMS[sys.key].toDisplay(num); + const prefixed = sys.prefix ? sys.prefix + display : display; + const wrapped = sys.key === 'slavonic' + ? '' + prefixed + '' + : prefixed; + pairs.push(wrapped + ' = ' + num); + } + return pairs.join('\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0'); +} + +const tickerText = generateTickerText(); +document.getElementById('ticker').innerHTML = tickerText + '\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0' + tickerText; + +function showSetupMessage(msg) { + const containers = document.querySelectorAll('.setup-container'); + let el = document.getElementById('setup-message'); + if (!el) { + el = document.createElement('div'); + el.id = 'setup-message'; + el.className = 'setup-message'; + } + containers.forEach(c => { + if (!c.contains(el)) c.prepend(el); + }); + el.textContent = msg; + el.classList.add('visible'); + setTimeout(() => el.classList.remove('visible'), 2500); +} + +document.getElementById('btn-start').addEventListener('click', () => { + renderSetupSystem(); +}); + +document.getElementById('btn-system-back').addEventListener('click', () => { + showScreen('menu'); +}); + +document.getElementById('btn-range-back').addEventListener('click', () => { + renderSetupSystem(); +}); + +document.getElementById('btn-options-back').addEventListener('click', () => { + renderSetupRange(); +}); + +document.getElementById('btn-play').addEventListener('click', () => { + if (setupState.mode === undefined || setupState.timing === undefined || setupState.rounds === undefined) { + showSetupMessage('Please select all options'); + return; + } + startGame(); +}); + +document.getElementById('btn-next').addEventListener('click', () => { + nextRound(); +}); + +document.getElementById('btn-play-again').addEventListener('click', () => { + renderSetupSystem(); +}); + +document.getElementById('btn-results-menu').addEventListener('click', () => { + showScreen('menu'); +}); + +document.getElementById('btn-stop').addEventListener('click', () => { + stopTimer(); + endGame(); +}); + +// Keyboard support for numpad +document.addEventListener('keydown', (e) => { + if (!document.getElementById('screen-game').classList.contains('active')) return; + if (game.answered) { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + nextRound(); + } + return; + } + + if (game.mode === 'manual') { + if (e.key >= '0' && e.key <= '9') { + handleNumpadKey(e.key); + } else if (e.key === 'Backspace') { + handleNumpadKey('backspace'); + } else if (e.key === 'Escape') { + handleNumpadKey('clear'); + } else if (e.key === 'Enter') { + document.getElementById('btn-submit-answer').click(); + } + } else if (game.mode === 'choice') { + if (e.key === '1' || e.key === '2' || e.key === '3') { + const idx = parseInt(e.key) - 1; + const btn = document.getElementById('choice-' + idx); + if (btn && !btn.disabled) btn.click(); + } + } +}); diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..ec5a81e --- /dev/null +++ b/icon.svg @@ -0,0 +1,5 @@ + + + Num + Num + diff --git a/index.html b/index.html new file mode 100644 index 0000000..10f17d3 --- /dev/null +++ b/index.html @@ -0,0 +1,160 @@ + + + + + + + + + NumNum + + + + + + +
+ + +
+ +
+ + +
+
+

Choose numeral system

+ +
+

Positional

+
+
+ +
+

Non-Positional

+
+
+ + +
+
+ + +
+
+

Number Range

+ +
+
+
+ + +
+
+ + +
+
+

Difficulty level

+ +
+

Answer Mode

+
+
+ +
+

Time Limit

+
+
+ +
+

Number of Rounds

+
+
+ + + +
+
+ + +
+
+
+ 0/0 + +
+
+ Time left +
+
+
+ +
+
+ +
+
+
+ + + + + + + + +
+
+ + +
+
+

Results

+
+
+

Mistakes

+
+ + +
+
+ +
+ + + + + diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..75da91c --- /dev/null +++ b/manifest.json @@ -0,0 +1,17 @@ +{ + "name": "NumNum", + "short_name": "NumNum", + "description": "Train your numeric systems", + "start_url": "/", + "display": "standalone", + "orientation": "portrait", + "background_color": "#1a1a2e", + "theme_color": "#1a1a2e", + "icons": [ + { + "src": "icon.svg", + "sizes": "any", + "type": "image/svg+xml" + } + ] +} diff --git a/numerals.js b/numerals.js new file mode 100644 index 0000000..5c57c25 --- /dev/null +++ b/numerals.js @@ -0,0 +1,221 @@ +export const SYSTEMS = { + binary: { + name: 'Binary', + short: 'BIN', + toDisplay: (n) => n.toString(2), + }, + octal: { + name: 'Octal', + short: 'OCT', + toDisplay: (n) => n.toString(8), + }, + hex: { + name: 'Hexadecimal', + short: 'HEX', + toDisplay: (n) => n.toString(16).toUpperCase(), + }, + ternary: { + name: 'Balanced Ternary', + short: 'BT3', + toDisplay: toBalTernary, + }, + braille: { + name: 'Braille Decimal', + short: 'BRL', + toDisplay: toBraille, + }, + roman: { + name: 'Roman', + short: 'ROM', + toDisplay: toRoman, + }, + slavonic: { + name: 'Church Slavonic', + short: 'SLV', + toDisplay: toSlavonic, + }, + greek: { + name: 'Greek', + short: 'GRK', + toDisplay: toGreek, + }, + hebrew: { + name: 'Hebrew', + short: 'HEB', + toDisplay: toHebrew, + }, +}; + +function toRoman(num) { + if (num <= 0 || num > 3999) return String(num); + const vals = [1000,900,500,400,100,90,50,40,10,9,5,4,1]; + const syms = ['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I']; + let result = ''; + for (let i = 0; i < vals.length; i++) { + while (num >= vals[i]) { + result += syms[i]; + num -= vals[i]; + } + } + return result; +} + +function toBalTernary(num) { + if (num === 0) return '0'; + + let sign = 1; + let n = num; + if (n < 0) { + sign = -1; + n = -n; + } + + const digits = []; + while (n > 0) { + let rem = n % 3; + n = Math.floor(n / 3); + if (rem === 2) { + digits.unshift('\u2296'); + n += 1; + } else if (rem === 1) { + digits.unshift('\u2295'); + } else { + digits.unshift('0'); + } + } + + if (sign === -1) { + return digits.map(d => { + if (d === '\u2295') return '\u2296'; + if (d === '\u2296') return '\u2295'; + return d; + }).join(''); + } + + return digits.join(''); +} + +const BRAILLE_NUMS = ['\u281A','\u2801','\u2803','\u2809','\u2819','\u2811','\u280B','\u281B','\u2813','\u280A']; +const BRAILLE_HASH = '\u283C'; + +function toBraille(num) { + if (num < 0) return String(num); + if (num === 0) return BRAILLE_HASH + BRAILLE_NUMS[0]; + return BRAILLE_HASH + String(num).split('').map(d => BRAILLE_NUMS[parseInt(d)]).join(''); +} + +const GRK_UNITS = ['\u03B1','\u03B2','\u03B3','\u03B4','\u03B5','\u03DB','\u03B6','\u03B7','\u03B8']; +const GRK_TENS = ['\u03B9','\u03BA','\u03BB','\u03BC','\u03BD','\u03BE','\u03BF','\u03C0','\u03DF']; +const GRK_HUNDREDS = ['\u03C1','\u03C3','\u03C4','\u03C5','\u03C6','\u03C7','\u03C8','\u03C9','\u03E1']; +const GRK_THOU = '\u0375'; +const GRK_KER = '\u1FFD'; + +function toGreek(num) { + if (num <= 0 || num > 9999) return String(num); + let result = ''; + const thou = Math.floor(num / 1000); + num %= 1000; + const h = Math.floor(num / 100); + num %= 100; + const t = Math.floor(num / 10); + const u = num % 10; + if (thou > 0) result += GRK_THOU + GRK_UNITS[thou - 1]; + if (h > 0) result += GRK_HUNDREDS[h - 1]; + if (t > 0) result += GRK_TENS[t - 1]; + if (u > 0) result += GRK_UNITS[u - 1]; + return result ? result + GRK_KER : '0'; +} + +const SLV_UNITS = ['а','в','г','д','є','ѕ','з','и','ѳ']; +const SLV_TENS = ['і','к','л','м','н','ѯ','ѻ','п','ч']; +const SLV_HUNDREDS = ['р','с','т','у','ф','х','ѱ','ѿ','ц']; +const SLV_THOU = '\u0482'; +const SLV_TITLO = '\u0483'; + +function toSlavonic(num) { + if (num <= 0 || num > 9999) return String(num); + + const groups = []; + const thou = Math.floor(num / 1000); + num %= 1000; + const h = Math.floor(num / 100); + num %= 100; + const t = Math.floor(num / 10); + const u = num % 10; + + if (thou > 0) groups.push({ p: SLV_THOU, l: SLV_UNITS[thou - 1] }); + + if (h > 0) groups.push({ p: '', l: SLV_HUNDREDS[h - 1] }); + + const twoDigit = t * 10 + u; + if (twoDigit >= 11 && twoDigit <= 19) { + if (u > 0) groups.push({ p: '', l: SLV_UNITS[u - 1] }); + if (t > 0) groups.push({ p: '', l: SLV_TENS[t - 1] }); + } else { + if (t > 0) groups.push({ p: '', l: SLV_TENS[t - 1] }); + if (u > 0) groups.push({ p: '', l: SLV_UNITS[u - 1] }); + } + + if (groups.length === 0) return '0'; + + const titloIdx = groups.length >= 2 ? groups.length - 2 : 0; + groups[titloIdx].l += SLV_TITLO; + + return groups.map(g => g.p + g.l).join('') + '.'; +} + +const HEB_UNITS = ['\u05D0','\u05D1','\u05D2','\u05D3','\u05D4','\u05D5','\u05D6','\u05D7','\u05D8']; +const HEB_TENS = ['\u05D9','\u05DB','\u05DC','\u05DE','\u05E0','\u05E1','\u05E2','\u05E4','\u05E6']; +const HEB_HUNDREDS = ['\u05E7','\u05E8','\u05E9','\u05EA']; +const HEB_GERESH = '\u05F3'; +const HEB_GERSHAYIM = '\u05F4'; + +function toHebrew(num) { + if (num <= 0 || num > 499) return String(num); + + if (num === 15) return '\u05D8' + HEB_GERSHAYIM + '\u05D5'; + if (num === 16) return '\u05D8' + HEB_GERSHAYIM + '\u05D6'; + + const letters = []; + const h = Math.floor(num / 100); + num %= 100; + const t = Math.floor(num / 10); + const u = num % 10; + + if (h > 0) letters.push(HEB_HUNDREDS[h - 1]); + if (t > 0) letters.push(HEB_TENS[t - 1]); + if (u > 0) letters.push(HEB_UNITS[u - 1]); + + if (letters.length === 0) return '0'; + if (letters.length === 1) return letters[0] + HEB_GERESH; + return letters.slice(0, -1).join('') + HEB_GERSHAYIM + letters[letters.length - 1]; +} + +export function generateChoices(correctAnswer, allRanges, count = 3) { + const choices = new Set([correctAnswer]); + const [min, max] = allRanges; + let attempts = 0; + while (choices.size < count && attempts < 100) { + let wrong; + const offset = Math.floor(Math.random() * 20) + 1; + if (Math.random() < 0.5) { + wrong = correctAnswer + offset; + } else { + wrong = correctAnswer - offset; + } + if (wrong >= min && wrong <= max && wrong !== correctAnswer) { + choices.add(wrong); + } + attempts++; + } + while (choices.size < count) { + const r = min + Math.floor(Math.random() * (max - min + 1)); + choices.add(r); + } + const arr = Array.from(choices); + for (let i = arr.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [arr[i], arr[j]] = [arr[j], arr[i]]; + } + return arr; +} diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..37066e6 --- /dev/null +++ b/styles.css @@ -0,0 +1,616 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +:root { + --bg: #1a1a2e; + --bg-light: #16213e; + --bg-card: #0f3460; + --accent: #e94560; + --accent-hover: #ff6b81; + --text: #eaeaea; + --text-dim: #a0a0b0; + --correct: #2ecc71; + --incorrect: #e74c3c; + --border-radius: 12px; + --safe-top: env(safe-area-inset-top); + --safe-bottom: env(safe-area-inset-bottom); +} + +@font-face { + font-family: 'Ponomar'; + src: url('Ponomar-Regular.woff') format('woff'); + font-weight: normal; + font-style: normal; + font-display: swap; +} + +html, body { + height: 100%; + overflow: hidden; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + background: var(--bg); + color: var(--text); + -webkit-tap-highlight-color: transparent; + user-select: none; + -webkit-user-select: none; +} + +#app { + height: 100%; + padding-top: var(--safe-top); + padding-bottom: var(--safe-bottom); +} + +.screen { + display: none; + height: 100%; + overflow-y: auto; +} + +.screen.active { + display: flex; + flex-direction: column; +} + +/* MENU */ +.menu-container { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 16px; + padding: 32px; +} + +.logo { + font-size: 3.5rem; + font-weight: 800; + background: linear-gradient(135deg, var(--accent), #ff9a56); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + margin-bottom: 8px; +} + +.subtitle { + color: var(--text-dim); + font-size: 1.1rem; + margin-bottom: 16px; +} + +.ticker-wrap { + overflow: hidden; + width: 100%; + margin-bottom: 32px; +} + +.ticker { + display: inline-block; + white-space: nowrap; + color: var(--text-dim); + font-size: 1.05rem; + font-family: monospace; + animation: ticker-scroll 40s linear infinite; + padding-left: 100%; +} + +@keyframes ticker-scroll { + 0% { transform: translateX(0); } + 100% { transform: translateX(-50%); } +} + +/* BUTTONS */ +.btn { + display: block; + width: 100%; + padding: 14px 24px; + border: none; + border-radius: var(--border-radius); + font-size: 1rem; + font-weight: 600; + cursor: pointer; + transition: transform 0.1s, opacity 0.1s; + text-align: center; +} + +.btn:active { + transform: scale(0.97); + opacity: 0.9; +} + +.btn-primary { + background: var(--accent); + color: white; +} + +.btn-secondary { + background: var(--bg-card); + color: var(--text); +} + +.btn-large { + padding: 18px 32px; + font-size: 1.2rem; + max-width: 320px; + margin: 0 auto; +} + +/* SETUP */ +.setup-container { + padding: 24px; + max-width: 480px; + margin: 0 auto; + width: 100%; + padding-bottom: 100px; +} + +.setup-container h2 { + margin-bottom: 20px; +} + +.setup-section { + margin-bottom: 28px; +} + +.setup-section h3 { + color: var(--text-dim); + font-size: 0.9rem; + text-transform: uppercase; + letter-spacing: 1px; + margin-bottom: 12px; +} + +.system-group { + margin-bottom: 28px; +} + +.system-group h3 { + color: var(--text-dim); + font-size: 0.9rem; + text-transform: uppercase; + letter-spacing: 1px; + margin-bottom: 12px; +} + +.option-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 8px; +} + +.option-btn { + padding: 14px 12px; + background: var(--bg-light); + border: 2px solid transparent; + border-radius: 8px; + color: var(--text); + font-size: 0.95rem; + font-weight: 500; + cursor: pointer; + text-align: center; + transition: border-color 0.15s, background 0.15s; +} + +.option-btn.selected { + border-color: var(--accent); + background: rgba(233, 69, 96, 0.15); +} + +.option-btn:active { + transform: scale(0.97); +} + +#btn-play { + margin-top: 16px; + max-width: 320px; + margin-left: auto; + margin-right: auto; +} + +#btn-options-back { + margin-top: 12px; +} + +#btn-setup-back, #btn-config-back { + margin-top: 12px; + max-width: 320px; + margin-left: auto; + margin-right: auto; +} + +/* GAME */ +.game-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 16px 20px; + background: var(--bg-light); + flex-shrink: 0; + position: relative; +} + +.score-display { + font-size: 1.2rem; + font-weight: 700; +} + +#score-system { + margin-left: 8px; + color: var(--text-dim); + font-size: 0.9rem; +} + +.timer-area { + position: absolute; + left: 50%; + transform: translateX(-50%); + display: flex; + align-items: center; + gap: 6px; + visibility: hidden; +} + +.timer-area.visible { + visibility: visible; +} + +.timer-label { + color: var(--text-dim); + font-size: 0.85rem; +} + +.timer-display { + font-size: 1.3rem; + font-weight: 700; + color: var(--accent); + min-width: 60px; + text-align: right; +} + +.header-right { + display: flex; + align-items: center; + gap: 12px; +} + +.btn-stop { + width: 36px; + height: 36px; + border: none; + border-radius: 50%; + background: var(--bg-card); + color: var(--text-dim); + font-size: 1.4rem; + line-height: 1; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: background 0.15s; +} + +.btn-stop:active { + background: var(--accent); + color: white; +} + +.timer-display.urgent { + color: var(--incorrect); + animation: pulse 0.5s infinite; +} + +@keyframes pulse { + 0%, 100% { opacity: 1; } + 50% { opacity: 0.5; } +} + +.game-body { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + padding: 24px 20px; + overflow-y: auto; +} + +.number-display { + font-size: 2.8rem; + font-weight: 800; + text-align: center; + padding: 32px 20px; + margin: 16px 0; + background: var(--bg-card); + border-radius: var(--border-radius); + width: 100%; + max-width: 400px; + word-break: break-all; + line-height: 1.3; + min-height: 100px; + display: flex; + align-items: center; + justify-content: center; +} + +.number-display.small-text { + font-size: 1.6rem; +} + +.slavonic-font { + font-family: 'Ponomar', serif; +} + +.number-display.slavonic-font { + font-size: 3.2rem; +} + +.answer-feedback { + min-height: 40px; + font-size: 1.1rem; + font-weight: 600; + text-align: center; + margin: 8px 0; + transition: opacity 0.2s; +} + +.answer-feedback.correct { + color: var(--correct); +} + +.answer-feedback.incorrect { + color: var(--incorrect); +} + +/* CHOICES */ +.choice-area { + display: flex; + flex-direction: column; + gap: 12px; + width: 100%; + max-width: 400px; + margin-top: 16px; +} + +.choice-btn { + padding: 18px 20px; + background: var(--bg-card); + border: 2px solid transparent; + border-radius: var(--border-radius); + color: var(--text); + font-size: 1.3rem; + font-weight: 600; + cursor: pointer; + transition: border-color 0.15s, background 0.15s; +} + +.choice-btn:active { + transform: scale(0.98); +} + +.choice-btn.correct-choice { + border-color: var(--correct); + background: rgba(46, 204, 113, 0.15); +} + +.choice-btn.incorrect-choice { + border-color: var(--incorrect); + background: rgba(231, 76, 60, 0.15); +} + +.choice-btn:disabled { + opacity: 0.7; + cursor: default; +} + +/* NUMPAD */ +.numpad-area { + width: 100%; + max-width: 360px; + margin-top: 16px; +} + +.numpad-input { + font-size: 2rem; + font-weight: 700; + text-align: center; + padding: 16px; + background: var(--bg-card); + border-radius: 8px; + min-height: 60px; + margin-bottom: 16px; + display: flex; + align-items: center; + justify-content: center; + letter-spacing: 2px; + overflow: hidden; +} + +.numpad { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 8px; + margin-bottom: 16px; +} + +.numpad-key { + padding: 18px; + background: var(--bg-light); + border: none; + border-radius: 8px; + color: var(--text); + font-size: 1.4rem; + font-weight: 600; + cursor: pointer; + transition: background 0.1s; +} + +.numpad-key:active { + background: var(--bg-card); +} + +.numpad-action { + background: var(--bg-card); + color: var(--text-dim); +} + +#btn-submit-answer { + max-width: 320px; + margin: 0 auto; +} + +.hidden { + display: none !important; +} + +#btn-next { + margin-top: 16px; + max-width: 320px; +} + +/* RESULTS */ +.results-container { + padding: 24px; + max-width: 480px; + margin: 0 auto; + width: 100%; + padding-bottom: 100px; + position: relative; +} + +.results-container h2 { + margin-bottom: 16px; +} + +.results-summary { + font-size: 1.2rem; + margin-bottom: 24px; + padding: 20px; + background: var(--bg-card); + border-radius: var(--border-radius); + text-align: center; +} + +.results-summary .big-number { + font-size: 2.5rem; + font-weight: 800; + color: var(--accent); +} + +.results-congrats { + text-align: center; + font-size: 1.5rem; + font-weight: 700; + color: var(--correct); + margin-bottom: 16px; + min-height: 48px; +} + +.results-mistakes-label { + color: var(--text-dim); + font-size: 0.9rem; + text-transform: uppercase; + letter-spacing: 1px; + margin-bottom: 12px; +} + +.results-list { + display: flex; + flex-direction: column; + gap: 8px; + margin-bottom: 24px; +} + +.result-item { + display: flex; + align-items: center; + gap: 12px; + padding: 14px 16px; + background: var(--bg-light); + border-radius: 8px; + border-left: 4px solid var(--incorrect); +} + +.result-system { + font-size: 1.4rem; + font-weight: 700; + flex-shrink: 0; + min-width: 80px; + word-break: break-all; +} + +.result-arrow { + color: var(--text-dim); + flex-shrink: 0; +} + +.result-decimal { + font-size: 1.2rem; + font-weight: 600; + color: var(--correct); +} + +.no-mistakes { + text-align: center; + color: var(--correct); + font-size: 1.2rem; + padding: 32px; +} + +#btn-play-again { + max-width: 320px; + margin: 0 auto 12px; +} + +#btn-results-menu { + max-width: 320px; + margin: 0 auto; +} + +.setup-message { + display: none; + background: var(--accent); + color: white; + padding: 14px 20px; + border-radius: var(--border-radius); + font-weight: 600; + text-align: center; + margin-bottom: 16px; + animation: fadeIn 0.2s; +} + +.setup-message.visible { + display: block; +} + +@keyframes fadeIn { + from { opacity: 0; transform: translateY(-8px); } + to { opacity: 1; transform: translateY(0); } +} + +.confetti-burst { + position: absolute; + pointer-events: none; +} + +.confetti-particle { + position: absolute; + font-size: 1.4rem; + animation: confetti-fly 0.8s ease-out forwards; +} + +@keyframes confetti-fly { + 0% { + transform: translate(0, 0) rotate(0deg); + opacity: 1; + } + 100% { + transform: translate(var(--dx), var(--dy)) rotate(var(--rot)); + opacity: 0; + } +} diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..83ac76c --- /dev/null +++ b/sw.js @@ -0,0 +1,32 @@ +const CACHE_NAME = 'numnum-v30'; +const ASSETS = [ + '/', + '/index.html', + '/styles.css', + '/app.js', + '/numerals.js', + '/manifest.json', + '/icon.svg', +]; + +self.addEventListener('install', (e) => { + e.waitUntil( + caches.open(CACHE_NAME).then(cache => cache.addAll(ASSETS)) + ); + self.skipWaiting(); +}); + +self.addEventListener('activate', (e) => { + e.waitUntil( + caches.keys().then(keys => + Promise.all(keys.filter(k => k !== CACHE_NAME).map(k => caches.delete(k))) + ) + ); + self.clients.claim(); +}); + +self.addEventListener('fetch', (e) => { + e.respondWith( + caches.match(e.request).then(r => r || fetch(e.request)) + ); +});