처음엔 쉬운 거부터. 익숙해지면 난이도 올리기.
5단계 난이도
const DIFFICULTY_SETTINGS = {
easy: { maxNum: 10, mulMax: 5, label: '쉬움' },
medium: { maxNum: 20, mulMax: 9, label: '보통' },
hard: { maxNum: 100, mulMax: 12, label: '어려움' },
expert: { maxNum: 500, mulMax: 15, label: '전문가' },
master: { maxNum: 1000, mulMax: 20, label: '마스터' }
};
초등 1학년: 쉬움
maxNum: 10
mulMax: 5
예시:
- 3 + 5 = 8
- 9 - 4 = 5
- 2 × 3 = 6
- 10 ÷ 2 = 5
10 이하 숫자만. 받아올림 최소화.
초등 2학년: 보통
maxNum: 20
mulMax: 9
예시:
- 13 + 7 = 20
- 18 - 9 = 9
- 7 × 8 = 56
- 45 ÷ 9 = 5
두 자리 수, 구구단 전체.
초등 3~4학년: 어려움
maxNum: 100
mulMax: 12
예시:
- 47 + 38 = 85
- 73 - 29 = 44
- 11 × 12 = 132
세 자리까지, 12단까지.
고학년 이상: 전문가/마스터
expert: { maxNum: 500, mulMax: 15 }
master: { maxNum: 1000, mulMax: 20 }
암산 훈련용.
난이도 선택 UI
<div className="grid grid-cols-5 gap-1">
{Object.entries(DIFFICULTY_SETTINGS).map(([key, val]) => (
<button
key={key}
onClick={() => setDifficulty(key)}
className={`py-2 rounded-lg text-xs font-medium btn-3d ${
difficulty === key
? 'bg-orange-400 text-white'
: 'bg-gray-100 text-gray-600'
}`}
>
{val.label}
</button>
))}
</div>
5개 버튼 가로 배열.
연산 선택
<div className="grid grid-cols-4 gap-1 mb-1">
{[
{ key: 'add', label: '➕' },
{ key: 'sub', label: '➖' },
{ key: 'mul', label: '✖️' },
{ key: 'div', label: '➗' }
].map(({ key, label }) => (
<button
key={key}
onClick={() => setOperation(key)}
className={`py-2 rounded-lg text-lg font-medium btn-3d ${
operation === key
? 'bg-rose-400 text-white'
: 'bg-gray-100 text-gray-600'
}`}
>
{label}
</button>
))}
</div>
<div className="grid grid-cols-3 gap-1">
{[
{ key: 'addsub', label: '➕➖' },
{ key: 'muldiv', label: '✖️➗' },
{ key: 'all', label: '전부' }
].map(({ key, label }) => (
<button ...>
{label}
</button>
))}
</div>
- 단일 연산: +, -, ×, ÷
- 조합: 덧뺄, 곱나눗, 전부
문제 수 선택
<div className="grid grid-cols-4 gap-2">
{[10, 20, 30, 50].map((num) => (
<button
key={num}
onClick={() => setTotalQuestions(num)}
className={`py-2.5 rounded-lg text-sm font-medium btn-3d ${
totalQuestions === num
? 'bg-emerald-400 text-white'
: 'bg-gray-100 text-gray-600'
}`}
>
{num}문제
</button>
))}
</div>
짧게 10문제, 길게 50문제.
성장 경로
- 쉬움 + 덧뺄 + 10문제: 처음 시작
- 보통 + 덧뺄 + 20문제: 익숙해지면
- 보통 + 전부 + 30문제: 구구단 추가
- 어려움 + 전부 + 50문제: 도전
아이 속도에 맞춰 조절.
다음 글에서 아들 반응 & 개선점.