6e85917f73
Kids math practice (SL/EN) in a Vite React app, wrapped with Capacitor for Android (net.bit76.matematika). Includes session refactor, i18n, and text-free difficulty icons with translated overlays.
2.3 KiB
2.3 KiB
Math Game – Difficulty Levels
This document describes how the game works today.
Difficulty changes how the player answers and some number caps.
The player still chooses which operations to practice in Settings (+, −, ×, ÷).
Overview
Three difficulties:
| Key | Label | Input | Timer |
|---|---|---|---|
easy |
Lahko | 4 multiple-choice buttons | Stopwatch (on) |
medium |
Srednje | 6 multiple-choice buttons | Stopwatch (on) |
hard |
Težko | Numeric keypad + OK | Stopwatch (on) |
Settings also choose:
- Which operations are active
- How many questions (
stevilo_racunov) - Add/subtract range (
max_number) - Multiplication factors (
za_mnozenje) - Division divisors (
za_deljenje)
Easy (easy / Lahko)
- Input: 4 choices
- Timer: stopwatch, enabled
- Negatives: not allowed
- Multiply other-factor cap: 1–10
- Add/subtract range: from settings (
max_number)
Medium (medium / Srednje)
- Input: 6 choices
- Timer: stopwatch, enabled
- Negatives: not allowed
- Multiply other-factor cap: 1–12
- Add/subtract range: from settings (
max_number)
Hard (hard / Težko)
- Input: keypad (digits, backspace,
OK;±only ifallowNegativeis on) - No multiple-choice buttons
- Timer: stopwatch, enabled
- Negatives: off (
allowNegative: false) unless flipped later inlevels.js - Multiply other-factor cap: 1–20
- Add/subtract range: from settings (
max_number) - Division: exact results only
Code map
// web/src/levels.js
LEVELS = {
easy: { inputType: 'choices', choicesCount: 4, timerEnabled: true, allowNegative: false, multiplicationMaxA: 10 },
medium: { inputType: 'choices', choicesCount: 6, timerEnabled: true, allowNegative: false, multiplicationMaxA: 12 },
hard: { inputType: 'keypad', choicesCount: 0, timerEnabled: true, allowNegative: false, multiplicationMaxA: 20 }
}
Questions are built by buildSession(config, level) in web/src/questionGenerator.js.
The Game screen only renders question.text and checks question.result.
Design principles
- Difficulty increases interaction complexity, not intimidation
- Same play screen, different answer component
- Hard is framed as a challenge, not a punishment
- Unfinished modes (rounding, dice, calculator, equations, text problems) are not in the live path