Files
klevze 6e85917f73 Initial commit: Zabavna Matematika web and Android app.
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.
2026-08-15 10:59:25 +02:00

2.3 KiB
Raw Permalink Blame History

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: 110
  • Add/subtract range: from settings (max_number)

Medium (medium / Srednje)

  • Input: 6 choices
  • Timer: stopwatch, enabled
  • Negatives: not allowed
  • Multiply other-factor cap: 112
  • Add/subtract range: from settings (max_number)

Hard (hard / Težko)

  • Input: keypad (digits, backspace, OK; ± only if allowNegative is on)
  • No multiple-choice buttons
  • Timer: stopwatch, enabled
  • Negatives: off (allowNegative: false) unless flipped later in levels.js
  • Multiply other-factor cap: 120
  • 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