File size: 2,281 Bytes
fd0b9df
 
53940d1
 
fd0b9df
 
 
 
 
ba16816
 
 
 
 
fd0b9df
 
 
 
 
 
 
 
53940d1
fd0b9df
 
 
 
 
 
 
ba16816
fd0b9df
 
 
 
 
 
 
 
 
 
 
 
 
 
ba16816
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fd0b9df
 
 
53940d1
fd0b9df
53940d1
fd0b9df
 
53940d1
fd0b9df
 
 
53940d1
 
 
fd0b9df
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import random

# Levels definition
# Targeting ages 9-10

def generate_question(level: int) -> tuple[str, int]:
    """
    Returns (question_string, correct_answer) for the given level.
    Levels:
      1 - Additions         (1–30)
      2 - Subtractions      (1–30, positive result)
      3 - Multiplications   (2Γ—2 … 9Γ—9)
      4 - Mix               (all of the above, up to 50)
      5 - Hard Mix          (2-digit additions/subtractions, 6×…12Γ— tables)
    """
    if level == 1:
        a = random.randint(1, 30)
        b = random.randint(1, 30)
        return f"{a} + {b}", a + b

    elif level == 2:
        a = random.randint(1, 30)
        b = random.randint(1, a)
        return f"{a} - {b}", a - b

    elif level == 3:
        a = random.randint(2, 9)
        b = random.randint(2, 9)
        return f"{a} Γ— {b}", a * b

    elif level == 4:  # Mix
        op = random.choice(["add", "sub", "mul"])
        if op == "add":
            a = random.randint(10, 50)
            b = random.randint(10, 50)
            return f"{a} + {b}", a + b
        elif op == "sub":
            a = random.randint(10, 50)
            b = random.randint(1, a)
            return f"{a} - {b}", a - b
        else:
            a = random.randint(2, 12)
            b = random.randint(2, 12)
            return f"{a} Γ— {b}", a * b

    else:  # level 5+ β€” Hard Mix
        op = random.choice(["add", "sub", "mul"])
        if op == "add":
            a = random.randint(10, 99)
            b = random.randint(10, 99)
            return f"{a} + {b}", a + b
        elif op == "sub":
            a = random.randint(20, 99)
            b = random.randint(10, a - 10)   # both operands β‰₯ 2 digits, result β‰₯ 10
            return f"{a} - {b}", a - b
        else:
            a = random.randint(6, 12)        # tables β‰₯ 6
            b = random.randint(6, 12)
            return f"{a} Γ— {b}", a * b


LEVEL_NAMES = {
    1: "βž• Additions",
    2: "βž– Subtractions",
    3: "βœ–οΈ Multiplications",
    4: "🎲 Mix",
}

LEVEL_THRESHOLDS = {1: 5, 2: 5, 3: 5, 4: 999}

def level_up_message(level: int) -> str:
    messages = {
        2: "πŸŽ‰ Next level!",
        3: "🌟 Multiplications!",
        4: "πŸ† Expert mode!",
    }
    return messages.get(level, "")