diff --git a/miniprogram/app.json b/miniprogram/app.json index da66ad7..e20c63d 100644 --- a/miniprogram/app.json +++ b/miniprogram/app.json @@ -22,24 +22,7 @@ { "root": "mathPages", "name": "mathPages", - "pages": [ - "numberFind/numberFind", - "countMatch/countMatch", - "addition/addition", - "missingNumber/missingNumber", - "compare/compare", - "countingSelect/countingSelect", - "numberDecompose/numberDecompose", - "numberSort/numberSort", - "numberObjectMatch/numberObjectMatch", - "makeTen/makeTen", - "breakTen/breakTen", - "flatTen/flatTen", - "borrowTen/borrowTen", - "oneDigitAddition/oneDigitAddition", - "calculationPractice/calculationPractice", - "multiplicationTable/multiplicationTable" - ], + "pages": ["mathDraw/mathDraw"], "independent": false }, { @@ -51,19 +34,7 @@ { "root": "focusPages", "name": "focusPages", - "pages": [ - "gridDrawing/gridDrawing", - "shape/shape", - "positionColoring/positionColoring", - "shapeSymbol/shapeSymbol", - "colorPattern/colorPattern", - "matchConnect/matchConnect", - "lineRecognition/lineRecognition", - "gridReasoning/gridReasoning", - "codeConnect/codeConnect", - "dotConnect/dotConnect", - "colorShapeMatch/colorShapeMatch" - ], + "pages": ["focusDraw/focusDraw", "shape/shape"], "independent": false } ], diff --git a/miniprogram/assets/entrancePicture/english/letter-tracing-case-pairing.jpg b/miniprogram/assets/entrancePicture/english/letter-tracing-case-pairing.jpg new file mode 100644 index 0000000..a6c5ba8 Binary files /dev/null and b/miniprogram/assets/entrancePicture/english/letter-tracing-case-pairing.jpg differ diff --git a/miniprogram/assets/entrancePicture/english/letter-tracing-half.jpg b/miniprogram/assets/entrancePicture/english/letter-tracing-half.jpg new file mode 100644 index 0000000..2758d4a Binary files /dev/null and b/miniprogram/assets/entrancePicture/english/letter-tracing-half.jpg differ diff --git a/miniprogram/assets/entrancePicture/english/letter-tracing-single.jpg b/miniprogram/assets/entrancePicture/english/letter-tracing-single.jpg new file mode 100644 index 0000000..af10b90 Binary files /dev/null and b/miniprogram/assets/entrancePicture/english/letter-tracing-single.jpg differ diff --git a/miniprogram/assets/entrancePicture/english/letter-tracing-three.jpg b/miniprogram/assets/entrancePicture/english/letter-tracing-three.jpg new file mode 100644 index 0000000..c007f55 Binary files /dev/null and b/miniprogram/assets/entrancePicture/english/letter-tracing-three.jpg differ diff --git a/miniprogram/assets/entrancePicture/english/letter-tracing-two-column.jpg b/miniprogram/assets/entrancePicture/english/letter-tracing-two-column.jpg new file mode 100644 index 0000000..39f9154 Binary files /dev/null and b/miniprogram/assets/entrancePicture/english/letter-tracing-two-column.jpg differ diff --git a/miniprogram/assets/entrancePicture/english/letter-tracing-upper-lower.jpg b/miniprogram/assets/entrancePicture/english/letter-tracing-upper-lower.jpg new file mode 100644 index 0000000..757f363 Binary files /dev/null and b/miniprogram/assets/entrancePicture/english/letter-tracing-upper-lower.jpg differ diff --git a/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-case-pairing.jpg b/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-case-pairing.jpg deleted file mode 100644 index facf830..0000000 Binary files a/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-case-pairing.jpg and /dev/null differ diff --git a/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-half.jpg b/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-half.jpg deleted file mode 100644 index f684662..0000000 Binary files a/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-half.jpg and /dev/null differ diff --git a/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-single.jpg b/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-single.jpg deleted file mode 100644 index dd0b41e..0000000 Binary files a/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-single.jpg and /dev/null differ diff --git a/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-three.jpg b/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-three.jpg deleted file mode 100644 index f9b30cc..0000000 Binary files a/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-three.jpg and /dev/null differ diff --git a/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-two-column.jpg b/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-two-column.jpg deleted file mode 100644 index 77a4791..0000000 Binary files a/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-two-column.jpg and /dev/null differ diff --git a/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-upper-lower.jpg b/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-upper-lower.jpg deleted file mode 100644 index 23122ea..0000000 Binary files a/miniprogram/assets/entrancePicture/english/letterTracing/letter-tracing-upper-lower.jpg and /dev/null differ diff --git a/miniprogram/assets/entrancePicture/focus/code-connect.png b/miniprogram/assets/entrancePicture/focus/code-connect.png new file mode 100644 index 0000000..41d2a19 Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/code-connect.png differ diff --git a/miniprogram/assets/entrancePicture/focus/color-pattern.png b/miniprogram/assets/entrancePicture/focus/color-pattern.png new file mode 100644 index 0000000..1cf7ce8 Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/color-pattern.png differ diff --git a/miniprogram/assets/entrancePicture/focus/color-shape-match.png b/miniprogram/assets/entrancePicture/focus/color-shape-match.png new file mode 100644 index 0000000..a12cc34 Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/color-shape-match.png differ diff --git a/miniprogram/assets/entrancePicture/focus/dot-connect.png b/miniprogram/assets/entrancePicture/focus/dot-connect.png new file mode 100644 index 0000000..ab9976d Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/dot-connect.png differ diff --git a/miniprogram/assets/entrancePicture/focus/grid-drawing-3x3.png b/miniprogram/assets/entrancePicture/focus/grid-drawing-3x3.png new file mode 100644 index 0000000..5eab4de Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/grid-drawing-3x3.png differ diff --git a/miniprogram/assets/entrancePicture/focus/grid-drawing-5x5.png b/miniprogram/assets/entrancePicture/focus/grid-drawing-5x5.png new file mode 100644 index 0000000..27055db Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/grid-drawing-5x5.png differ diff --git a/miniprogram/assets/entrancePicture/focus/grid-drawing-7x7.png b/miniprogram/assets/entrancePicture/focus/grid-drawing-7x7.png new file mode 100644 index 0000000..d87ef25 Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/grid-drawing-7x7.png differ diff --git a/miniprogram/assets/entrancePicture/focus/grid-reasoning.png b/miniprogram/assets/entrancePicture/focus/grid-reasoning.png new file mode 100644 index 0000000..021a922 Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/grid-reasoning.png differ diff --git a/miniprogram/assets/entrancePicture/focus/line-recognition.png b/miniprogram/assets/entrancePicture/focus/line-recognition.png new file mode 100644 index 0000000..bcb36a7 Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/line-recognition.png differ diff --git a/miniprogram/assets/entrancePicture/focus/match-connect.png b/miniprogram/assets/entrancePicture/focus/match-connect.png new file mode 100644 index 0000000..fb79228 Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/match-connect.png differ diff --git a/miniprogram/assets/entrancePicture/focus/position-coloring.png b/miniprogram/assets/entrancePicture/focus/position-coloring.png new file mode 100644 index 0000000..a51a236 Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/position-coloring.png differ diff --git a/miniprogram/assets/entrancePicture/focus/shape-recognition.png b/miniprogram/assets/entrancePicture/focus/shape-recognition.png new file mode 100644 index 0000000..f49a580 Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/shape-recognition.png differ diff --git a/miniprogram/assets/entrancePicture/focus/shape-symbol.png b/miniprogram/assets/entrancePicture/focus/shape-symbol.png new file mode 100644 index 0000000..a0b50d7 Binary files /dev/null and b/miniprogram/assets/entrancePicture/focus/shape-symbol.png differ diff --git a/miniprogram/assets/entrancePicture/math/addition-10.png b/miniprogram/assets/entrancePicture/math/addition-10.png new file mode 100644 index 0000000..5f8ae16 Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/addition-10.png differ diff --git a/miniprogram/assets/entrancePicture/math/addition-5.png b/miniprogram/assets/entrancePicture/math/addition-5.png new file mode 100644 index 0000000..777f456 Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/addition-5.png differ diff --git a/miniprogram/assets/entrancePicture/math/addition-subtraction-10.png b/miniprogram/assets/entrancePicture/math/addition-subtraction-10.png new file mode 100644 index 0000000..3ccab7f Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/addition-subtraction-10.png differ diff --git a/miniprogram/assets/entrancePicture/math/borrow-ten.png b/miniprogram/assets/entrancePicture/math/borrow-ten.png new file mode 100644 index 0000000..0464893 Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/borrow-ten.png differ diff --git a/miniprogram/assets/entrancePicture/math/break-ten.png b/miniprogram/assets/entrancePicture/math/break-ten.png new file mode 100644 index 0000000..75de08c Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/break-ten.png differ diff --git a/miniprogram/assets/entrancePicture/math/compare.png b/miniprogram/assets/entrancePicture/math/compare.png new file mode 100644 index 0000000..b96111a Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/compare.png differ diff --git a/miniprogram/assets/entrancePicture/math/count-match.png b/miniprogram/assets/entrancePicture/math/count-match.png new file mode 100644 index 0000000..5673ac4 Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/count-match.png differ diff --git a/miniprogram/assets/entrancePicture/math/counting-fill.png b/miniprogram/assets/entrancePicture/math/counting-fill.png new file mode 100644 index 0000000..9c45e9c Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/counting-fill.png differ diff --git a/miniprogram/assets/entrancePicture/math/counting-select.png b/miniprogram/assets/entrancePicture/math/counting-select.png new file mode 100644 index 0000000..a4cde9a Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/counting-select.png differ diff --git a/miniprogram/assets/entrancePicture/math/flat-ten.png b/miniprogram/assets/entrancePicture/math/flat-ten.png new file mode 100644 index 0000000..2aa45f2 Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/flat-ten.png differ diff --git a/miniprogram/assets/entrancePicture/math/make-ten.png b/miniprogram/assets/entrancePicture/math/make-ten.png new file mode 100644 index 0000000..b304791 Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/make-ten.png differ diff --git a/miniprogram/assets/entrancePicture/math/missing-number.png b/miniprogram/assets/entrancePicture/math/missing-number.png new file mode 100644 index 0000000..95a46fc Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/missing-number.png differ diff --git a/miniprogram/assets/entrancePicture/math/multiplication-table.png b/miniprogram/assets/entrancePicture/math/multiplication-table.png new file mode 100644 index 0000000..26ad23e Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/multiplication-table.png differ diff --git a/miniprogram/assets/entrancePicture/math/number-coloring.png b/miniprogram/assets/entrancePicture/math/number-coloring.png new file mode 100644 index 0000000..a107794 Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/number-coloring.png differ diff --git a/miniprogram/assets/entrancePicture/math/number-decompose-20.png b/miniprogram/assets/entrancePicture/math/number-decompose-20.png new file mode 100644 index 0000000..2e9849e Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/number-decompose-20.png differ diff --git a/miniprogram/assets/entrancePicture/math/number-decompose.png b/miniprogram/assets/entrancePicture/math/number-decompose.png new file mode 100644 index 0000000..141b5fb Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/number-decompose.png differ diff --git a/miniprogram/assets/entrancePicture/math/number-find.png b/miniprogram/assets/entrancePicture/math/number-find.png new file mode 100644 index 0000000..39687a4 Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/number-find.png differ diff --git a/miniprogram/assets/entrancePicture/math/number-object-fill.png b/miniprogram/assets/entrancePicture/math/number-object-fill.png new file mode 100644 index 0000000..993810c Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/number-object-fill.png differ diff --git a/miniprogram/assets/entrancePicture/math/number-object-match.png b/miniprogram/assets/entrancePicture/math/number-object-match.png new file mode 100644 index 0000000..58b8ac6 Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/number-object-match.png differ diff --git a/miniprogram/assets/entrancePicture/math/number-sort.png b/miniprogram/assets/entrancePicture/math/number-sort.png new file mode 100644 index 0000000..5c259ef Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/number-sort.png differ diff --git a/miniprogram/assets/entrancePicture/math/number-write.png b/miniprogram/assets/entrancePicture/math/number-write.png new file mode 100644 index 0000000..d99e16b Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/number-write.png differ diff --git a/miniprogram/assets/entrancePicture/math/one-digit-addition.png b/miniprogram/assets/entrancePicture/math/one-digit-addition.png new file mode 100644 index 0000000..3c337f9 Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/one-digit-addition.png differ diff --git a/miniprogram/assets/entrancePicture/math/practice-addition.png b/miniprogram/assets/entrancePicture/math/practice-addition.png new file mode 100644 index 0000000..7a7956a Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/practice-addition.png differ diff --git a/miniprogram/assets/entrancePicture/math/practice-mixed.png b/miniprogram/assets/entrancePicture/math/practice-mixed.png new file mode 100644 index 0000000..83f37c1 Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/practice-mixed.png differ diff --git a/miniprogram/assets/entrancePicture/math/practice-subtraction.png b/miniprogram/assets/entrancePicture/math/practice-subtraction.png new file mode 100644 index 0000000..57bdf82 Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/practice-subtraction.png differ diff --git a/miniprogram/assets/entrancePicture/math/subtraction-10.png b/miniprogram/assets/entrancePicture/math/subtraction-10.png new file mode 100644 index 0000000..87e075e Binary files /dev/null and b/miniprogram/assets/entrancePicture/math/subtraction-10.png differ diff --git a/miniprogram/core/data/worksheets.ts b/miniprogram/core/data/worksheets.ts index db08a12..47c1bcc 100644 --- a/miniprogram/core/data/worksheets.ts +++ b/miniprogram/core/data/worksheets.ts @@ -89,160 +89,160 @@ const L = { // prettier-ignore export const ALL_WORKSHEETS: WorksheetDefinition[] = [ sheet( - { id: 'number-find', title: '找数字,涂一涂', desc: '在数字方阵中找出目标数字并涂色', category: 'math', page: 'numberFind', subpackage: 'mathPages', img: '/assets/mathEntrance/number-find.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#fff3e0', previewText: '🔍 1 2 3' }, + { id: 'number-find', title: '找数字,涂一涂', desc: '在数字方阵中找出目标数字并涂色', category: 'math', page: 'mathDraw', subpackage: 'mathPages', img: '/assets/mathEntrance/number-find.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#fff3e0', previewText: '🔍 1 2 3' }, { subcategory: 'number-sense', template: 'grid-coloring', generator: 'counting', sortOrder: 1, layoutConfig: { ...L.gridEx }, generatorConfig: { functionId: 'number-find' } }, ), sheet( - { id: 'number-write', title: '看数字,写一写', desc: '按笔画顺序练习书写数字', category: 'math', page: 'numberFind', subpackage: 'mathPages', img: '/assets/mathEntrance/number-write.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#fff3e0', previewText: '1 2 3' }, + { id: 'number-write', title: '看数字,写一写', desc: '按笔画顺序练习书写数字', category: 'math', page: 'mathDraw', subpackage: 'mathPages', img: '/assets/mathEntrance/number-write.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#fff3e0', previewText: '1 2 3' }, { subcategory: 'number-sense', template: 'tracing-writing', generator: 'counting', sortOrder: 2, layoutConfig: { ...L.trace }, generatorConfig: { functionId: 'number-write' } }, ), sheet( - { id: 'number-coloring', title: '按数字,涂颜色', desc: '按指定数字给对应圆圈涂色', category: 'math', page: 'countMatch', subpackage: 'mathPages', icon: '🎨', img: '/assets/mathEntrance/number-coloring.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#fce4ec', previewText: '🎨' }, + { id: 'number-coloring', title: '按数字,涂颜色', desc: '按指定数字给对应圆圈涂色', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '🎨', img: '/assets/mathEntrance/number-coloring.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#fce4ec', previewText: '🎨' }, { subcategory: 'number-sense', template: 'grid-coloring', generator: 'counting', sortOrder: 3, layoutConfig: { ...L.gridEx }, generatorConfig: { functionId: 'number-coloring' } }, ), sheet( - { id: 'counting-matching', title: '数一数,连一连', desc: '连线配对数字和对应数量图形', category: 'math', page: 'countMatch', subpackage: 'mathPages', icon: '🔗', img: '/assets/mathEntrance/count-match.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#e8f5e9', previewText: '3↔🍎🍎🍎' }, + { id: 'counting-matching', title: '数一数,连一连', desc: '连线配对数字和对应数量图形', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '🔗', img: '/assets/mathEntrance/count-match.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#e8f5e9', previewText: '3↔🍎🍎🍎' }, { subcategory: 'counting', template: 'match-connect', generator: 'counting', sortOrder: 4, layoutConfig: { ...L.gridEx }, generatorConfig: { functionId: 'counting-matching' } }, ), sheet( - { id: 'number-object-match', title: '数物连线', desc: '连线相同数量的物品和数字', category: 'math', page: 'numberObjectMatch', subpackage: 'mathPages', icon: '🔗', img: '/assets/mathEntrance/number-object-match.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#e8f5e9', previewText: '🔗' }, + { id: 'number-object-match', title: '数物连线', desc: '连线相同数量的物品和数字', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '🔗', img: '/assets/mathEntrance/number-object-match.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#e8f5e9', previewText: '🔗' }, { subcategory: 'counting', template: 'match-connect', generator: 'counting', sortOrder: 5, generatorConfig: { functionId: 'number-object-match' } }, ), sheet( - { id: 'number-object-fill', title: '数物填写', desc: '数物品数量,填写对应数字', category: 'math', page: 'numberObjectMatch', subpackage: 'mathPages', icon: '✏️', img: '/assets/mathEntrance/number-object-fill.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#e8f5e9', previewText: '✏️' }, + { id: 'number-object-fill', title: '数物填写', desc: '数物品数量,填写对应数字', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '✏️', img: '/assets/mathEntrance/number-object-fill.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#e8f5e9', previewText: '✏️' }, { subcategory: 'counting', template: 'grid-exercise', generator: 'counting', sortOrder: 6, generatorConfig: { functionId: 'number-object-fill' } }, ), sheet( - { id: 'counting-select', title: '数一数,选一选', desc: '数出物品数量,圈出正确答案', category: 'math', page: 'countingSelect', subpackage: 'mathPages', icon: '✓', img: '/assets/mathEntrance/counting-select.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#e8f5e9', previewText: '✓' }, + { id: 'counting-select', title: '数一数,选一选', desc: '数出物品数量,圈出正确答案', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '✓', img: '/assets/mathEntrance/counting-select.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#e8f5e9', previewText: '✓' }, { subcategory: 'counting', template: 'grid-exercise', generator: 'counting', sortOrder: 7, generatorConfig: { functionId: 'counting-select' } }, ), sheet( - { id: 'counting-fill', title: '数一数,填一填', desc: '数出物品数量,填写数字', category: 'math', page: 'countingSelect', subpackage: 'mathPages', icon: '✏️', img: '/assets/mathEntrance/counting-fill.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#e8f5e9', previewText: '✏️' }, + { id: 'counting-fill', title: '数一数,填一填', desc: '数出物品数量,填写数字', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '✏️', img: '/assets/mathEntrance/counting-fill.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#e8f5e9', previewText: '✏️' }, { subcategory: 'counting', template: 'grid-exercise', generator: 'counting', sortOrder: 8, generatorConfig: { functionId: 'counting-fill' } }, ), sheet( - { id: 'compare', title: '数一数,比大小', desc: '比较数量,填入 ><=', category: 'math', page: 'compare', subpackage: 'mathPages', icon: '⚖️', img: '/assets/mathEntrance/compare.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#e3f2fd', previewText: '3 ○ 5' }, + { id: 'compare', title: '数一数,比大小', desc: '比较数量,填入 ><=', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '⚖️', img: '/assets/mathEntrance/compare.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#e3f2fd', previewText: '3 ○ 5' }, { subcategory: 'counting', template: 'grid-exercise', generator: 'comparison', sortOrder: 9, generatorConfig: { functionId: 'compare' } }, ), sheet( - { id: 'number-sort', title: '数字排序', desc: '写出正确的数字顺序', category: 'math', page: 'numberSort', subpackage: 'mathPages', icon: '🔢', img: '/assets/mathEntrance/number-sort.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#fff3e0', previewText: '1→2→3' }, + { id: 'number-sort', title: '数字排序', desc: '写出正确的数字顺序', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '🔢', img: '/assets/mathEntrance/number-sort.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#fff3e0', previewText: '1→2→3' }, { subcategory: 'sequence', template: 'sequence-pattern', generator: 'number-sequence', sortOrder: 10, generatorConfig: { functionId: 'number-sort' } }, ), sheet( - { id: 'missing-number', title: '填上缺少的数字', desc: '在数列中找出并填写缺失数字', category: 'math', page: 'missingNumber', subpackage: 'mathPages', icon: '❓', img: '/assets/mathEntrance/missing-number.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#fff3e0', previewText: '1_3_5' }, + { id: 'missing-number', title: '填上缺少的数字', desc: '在数列中找出并填写缺失数字', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '❓', img: '/assets/mathEntrance/missing-number.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#fff3e0', previewText: '1_3_5' }, { subcategory: 'sequence', template: 'sequence-pattern', generator: 'number-sequence', sortOrder: 11, generatorConfig: { functionId: 'missing-number' } }, ), sheet( - { id: 'number-decompose', title: '10以内数的分与合', desc: '把数字分一分,合一合', category: 'math', page: 'numberDecompose', subpackage: 'mathPages', icon: '🔢', img: '/assets/mathEntrance/number-decompose.png', ageRange: [4, 6], difficulty: 'beginner', previewBg: '#fff3e0', previewText: '8=?+?' }, + { id: 'number-decompose', title: '10以内数的分与合', desc: '把数字分一分,合一合', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '🔢', img: '/assets/mathEntrance/number-decompose.png', ageRange: [4, 6], difficulty: 'beginner', previewBg: '#fff3e0', previewText: '8=?+?' }, { subcategory: 'decompose', template: 'grid-exercise', generator: 'number-decompose', sortOrder: 12, generatorConfig: { max: 10 } }, ), sheet( - { id: 'number-decompose-20', title: '20以内数的分与合', desc: '把数字分一分,合一合', category: 'math', page: 'numberDecompose', subpackage: 'mathPages', icon: '🔢', img: '/assets/mathEntrance/number-decompose-20.png', ageRange: [5, 7], difficulty: 'basic', previewBg: '#fff3e0', previewText: '15=?+?' }, + { id: 'number-decompose-20', title: '20以内数的分与合', desc: '把数字分一分,合一合', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '🔢', img: '/assets/mathEntrance/number-decompose-20.png', ageRange: [5, 7], difficulty: 'basic', previewBg: '#fff3e0', previewText: '15=?+?' }, { subcategory: 'decompose', template: 'grid-exercise', generator: 'number-decompose', sortOrder: 13, generatorConfig: { max: 20 } }, ), sheet( - { id: 'one-digit-addition', title: '一位数加法', desc: '通过圆点学习一位数加法运算', category: 'math', page: 'oneDigitAddition', subpackage: 'mathPages', icon: '➕', img: '/assets/mathEntrance/one-digit-addition.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#e3f2fd', previewText: '2+3=?' }, + { id: 'one-digit-addition', title: '一位数加法', desc: '通过圆点学习一位数加法运算', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '➕', img: '/assets/mathEntrance/one-digit-addition.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#e3f2fd', previewText: '2+3=?' }, { subcategory: 'arithmetic-visual', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 14, generatorConfig: { operators: ['+'], maxNumber: 9, showDots: true } }, ), sheet( - { id: 'addition-5', title: '5以内加法', desc: '图形化展示 5 以内加法', category: 'math', page: 'addition', subpackage: 'mathPages', icon: '➕', img: '/assets/mathEntrance/addition-5.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#e3f2fd', previewText: '2+1=?' }, + { id: 'addition-5', title: '5以内加法', desc: '图形化展示 5 以内加法', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '➕', img: '/assets/mathEntrance/addition-5.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#e3f2fd', previewText: '2+1=?' }, { subcategory: 'arithmetic-visual', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 15, generatorConfig: { operators: ['+'], maxNumber: 5, showDots: true } }, ), sheet( - { id: 'addition-10', title: '10以内加法', desc: '图形化展示 10 以内加法', category: 'math', page: 'addition', subpackage: 'mathPages', icon: '➕', img: '/assets/mathEntrance/addition-10.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#e3f2fd', previewText: '3+5=?' }, + { id: 'addition-10', title: '10以内加法', desc: '图形化展示 10 以内加法', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '➕', img: '/assets/mathEntrance/addition-10.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#e3f2fd', previewText: '3+5=?' }, { subcategory: 'arithmetic-visual', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 16, generatorConfig: { operators: ['+'], maxNumber: 10, showDots: true } }, ), sheet( - { id: 'subtraction-10', title: '10以内减法', desc: '图形化展示 10 以内减法', category: 'math', page: 'addition', subpackage: 'mathPages', icon: '➖', img: '/assets/mathEntrance/subtraction-10.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#e3f2fd', previewText: '8-3=?' }, + { id: 'subtraction-10', title: '10以内减法', desc: '图形化展示 10 以内减法', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '➖', img: '/assets/mathEntrance/subtraction-10.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#e3f2fd', previewText: '8-3=?' }, { subcategory: 'arithmetic-visual', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 17, generatorConfig: { operators: ['-'], maxNumber: 10, showDots: true } }, ), sheet( - { id: 'addition-subtraction-10', title: '10以内加减法', desc: '加减法混合运算', category: 'math', page: 'addition', subpackage: 'mathPages', icon: '±', img: '/assets/mathEntrance/addition-subtraction-10.png', ageRange: [5, 7], difficulty: 'basic', previewBg: '#e3f2fd', previewText: '±' }, + { id: 'addition-subtraction-10', title: '10以内加减法', desc: '加减法混合运算', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '±', img: '/assets/mathEntrance/addition-subtraction-10.png', ageRange: [5, 7], difficulty: 'basic', previewBg: '#e3f2fd', previewText: '±' }, { subcategory: 'arithmetic-visual', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 18, generatorConfig: { operators: ['+', '-'], maxNumber: 10, showDots: true } }, ), sheet( - { id: 'make-ten', title: '凑十法练习', desc: '20 以内进位加法', category: 'math', page: 'makeTen', subpackage: 'mathPages', icon: '➕', img: '/assets/mathEntrance/make-ten.png', ageRange: [5, 7], difficulty: 'intermediate', previewBg: '#e3f2fd', previewText: '7+?=10' }, + { id: 'make-ten', title: '凑十法练习', desc: '20 以内进位加法', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '➕', img: '/assets/mathEntrance/make-ten.png', ageRange: [5, 7], difficulty: 'intermediate', previewBg: '#e3f2fd', previewText: '7+?=10' }, { subcategory: 'methods-ten', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 19, generatorConfig: { method: 'make-ten' } }, ), sheet( - { id: 'break-ten', title: '破十法练习', desc: '20 以内退位减法', category: 'math', page: 'breakTen', subpackage: 'mathPages', icon: '➖', img: '/assets/mathEntrance/break-ten.png', ageRange: [5, 7], difficulty: 'intermediate', previewBg: '#e3f2fd', previewText: '15-8=?' }, + { id: 'break-ten', title: '破十法练习', desc: '20 以内退位减法', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '➖', img: '/assets/mathEntrance/break-ten.png', ageRange: [5, 7], difficulty: 'intermediate', previewBg: '#e3f2fd', previewText: '15-8=?' }, { subcategory: 'methods-ten', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 20, generatorConfig: { method: 'break-ten' } }, ), sheet( - { id: 'flat-ten', title: '平十法练习', desc: '20 以内退位减法', category: 'math', page: 'flatTen', subpackage: 'mathPages', icon: '➖', img: '/assets/mathEntrance/flat-ten.png', ageRange: [5, 7], difficulty: 'intermediate', previewBg: '#e3f2fd', previewText: '14-6=?' }, + { id: 'flat-ten', title: '平十法练习', desc: '20 以内退位减法', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '➖', img: '/assets/mathEntrance/flat-ten.png', ageRange: [5, 7], difficulty: 'intermediate', previewBg: '#e3f2fd', previewText: '14-6=?' }, { subcategory: 'methods-ten', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 21, generatorConfig: { method: 'flat-ten' } }, ), sheet( - { id: 'borrow-ten', title: '借十法练习', desc: '20 以上退位减法', category: 'math', page: 'borrowTen', subpackage: 'mathPages', icon: '➖', img: '/assets/mathEntrance/borrow-ten.png', ageRange: [6, 8], difficulty: 'advanced', previewBg: '#e3f2fd', previewText: '32-8=?' }, + { id: 'borrow-ten', title: '借十法练习', desc: '20 以上退位减法', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '➖', img: '/assets/mathEntrance/borrow-ten.png', ageRange: [6, 8], difficulty: 'advanced', previewBg: '#e3f2fd', previewText: '32-8=?' }, { subcategory: 'methods-ten', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 22, generatorConfig: { method: 'borrow-ten' } }, ), sheet( - { id: 'practice-addition', title: '加法运算', desc: '10/20/50/100 以内加法', category: 'math', page: 'calculationPractice', subpackage: 'mathPages', icon: '➕', img: '/assets/mathEntrance/practice-addition.png', ageRange: [5, 8], difficulty: 'intermediate', previewBg: '#e3f2fd', previewText: '25+18=?' }, + { id: 'practice-addition', title: '加法运算', desc: '10/20/50/100 以内加法', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '➕', img: '/assets/mathEntrance/practice-addition.png', ageRange: [5, 8], difficulty: 'intermediate', previewBg: '#e3f2fd', previewText: '25+18=?' }, { subcategory: 'practice', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 23, generatorConfig: { operators: ['+'], preset: 'vertical' } }, ), sheet( - { id: 'practice-subtraction', title: '减法运算', desc: '10/20/50/100 以内减法', category: 'math', page: 'calculationPractice', subpackage: 'mathPages', icon: '➖', img: '/assets/mathEntrance/practice-subtraction.png', ageRange: [5, 8], difficulty: 'intermediate', previewBg: '#e3f2fd', previewText: '43-17=?' }, + { id: 'practice-subtraction', title: '减法运算', desc: '10/20/50/100 以内减法', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '➖', img: '/assets/mathEntrance/practice-subtraction.png', ageRange: [5, 8], difficulty: 'intermediate', previewBg: '#e3f2fd', previewText: '43-17=?' }, { subcategory: 'practice', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 24, generatorConfig: { operators: ['-'], preset: 'vertical' } }, ), sheet( - { id: 'practice-mixed', title: '混合运算', desc: '10/20/50/100 以内加减法混合', category: 'math', page: 'calculationPractice', subpackage: 'mathPages', icon: '±', img: '/assets/mathEntrance/practice-mixed.png', ageRange: [5, 8], difficulty: 'intermediate', previewBg: '#e3f2fd', previewText: '±' }, + { id: 'practice-mixed', title: '混合运算', desc: '10/20/50/100 以内加减法混合', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '±', img: '/assets/mathEntrance/practice-mixed.png', ageRange: [5, 8], difficulty: 'intermediate', previewBg: '#e3f2fd', previewText: '±' }, { subcategory: 'practice', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 25, generatorConfig: { operators: ['+', '-'], preset: 'vertical' } }, ), sheet( - { id: 'multiplication-table', title: '九九乘法表', desc: '学习九九乘法口诀', category: 'math', page: 'multiplicationTable', subpackage: 'mathPages', icon: '✖️', img: '/assets/mathEntrance/multiplication-table.png', ageRange: [6, 8], difficulty: 'intermediate', previewBg: '#f3e5f5', previewText: '3×4=12' }, + { id: 'multiplication-table', title: '九九乘法表', desc: '学习九九乘法口诀', category: 'math', page: 'mathDraw', subpackage: 'mathPages', icon: '✖️', img: '/assets/mathEntrance/multiplication-table.png', ageRange: [6, 8], difficulty: 'intermediate', previewBg: '#f3e5f5', previewText: '3×4=12' }, { subcategory: 'practice', template: 'grid-exercise', generator: 'arithmetic', sortOrder: 26, generatorConfig: { operators: ['×'], mode: 'multiplication-table' } }, ), sheet( - { id: 'color-shape-match', title: '根据颜色画图形', desc: '根据颜色画出对应图形', category: 'focus', page: 'colorShapeMatch', subpackage: 'focusPages', icon: '🎯', img: '/assets/focusEntrance/color-shape-match.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#f3e5f5', previewText: '🎯' }, + { id: 'color-shape-match', title: '根据颜色画图形', desc: '根据颜色画出对应图形', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '🎯', img: '/assets/focusEntrance/color-shape-match.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#f3e5f5', previewText: '🎯' }, { subcategory: 'focus-visual', template: 'grid-exercise', generator: 'shape-grid', sortOrder: 27, generatorConfig: { functionId: 'color-shape-match' } }, ), sheet( - { id: 'shape-symbol', title: '图形符号配对', desc: '根据图形画对应符号', category: 'focus', page: 'shapeSymbol', subpackage: 'focusPages', icon: '🔗', img: '/assets/focusEntrance/shape-symbol.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#e8eaf6', previewText: '△→♠' }, + { id: 'shape-symbol', title: '图形符号配对', desc: '根据图形画对应符号', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '🔗', img: '/assets/focusEntrance/shape-symbol.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#e8eaf6', previewText: '△→♠' }, { subcategory: 'focus-visual', template: 'match-connect', generator: 'shape-grid', sortOrder: 28, generatorConfig: { functionId: 'shape-symbol' } }, ), sheet( - { id: 'shape-recognition', title: '识别形状', desc: '识别形状,涂一涂', category: 'focus', page: 'shape', subpackage: 'focusPages', icon: '🔍', img: '/assets/focusEntrance/shape-recognition.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#fce4ec', previewText: '△ ○ □' }, + { id: 'shape-recognition', title: '识别形状', desc: '识别形状,涂一涂', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '🔍', img: '/assets/focusEntrance/shape-recognition.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#fce4ec', previewText: '△ ○ □' }, { subcategory: 'focus-visual', template: 'grid-coloring', generator: 'shape-grid', sortOrder: 29, generatorConfig: { functionId: 'shape-recognition' } }, ), sheet( - { id: 'position-coloring', title: '方位涂涂乐', desc: '观察位置,在方格中涂色', category: 'focus', page: 'positionColoring', subpackage: 'focusPages', icon: '📍', img: '/assets/focusEntrance/position-coloring.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#e8f5e9', previewText: '📍' }, + { id: 'position-coloring', title: '方位涂涂乐', desc: '观察位置,在方格中涂色', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '📍', img: '/assets/focusEntrance/position-coloring.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#e8f5e9', previewText: '📍' }, { subcategory: 'focus-grid', template: 'grid-coloring', generator: 'shape-grid', sortOrder: 30, generatorConfig: { functionId: 'position-coloring' } }, ), sheet( - { id: 'color-pattern', title: '颜色找规律', desc: '观察颜色规律,在空白图形中涂色', category: 'focus', page: 'colorPattern', subpackage: 'focusPages', icon: '🎨', img: '/assets/focusEntrance/color-pattern.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#fff8e1', previewText: '🎨' }, + { id: 'color-pattern', title: '颜色找规律', desc: '观察颜色规律,在空白图形中涂色', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '🎨', img: '/assets/focusEntrance/color-pattern.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#fff8e1', previewText: '🎨' }, { subcategory: 'focus-grid', template: 'grid-coloring', generator: 'color-pattern', sortOrder: 31, generatorConfig: { functionId: 'color-pattern' } }, ), sheet( - { id: 'match-connect', title: '连连看', desc: '根据物品连一连', category: 'focus', page: 'matchConnect', subpackage: 'focusPages', icon: '🔗', img: '/assets/focusEntrance/match-connect.png', ageRange: [3, 6], difficulty: 'beginner', previewBg: '#e0f7fa', previewText: '🔗' }, + { id: 'match-connect', title: '连连看', desc: '根据物品连一连', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '🔗', img: '/assets/focusEntrance/match-connect.png', ageRange: [3, 6], difficulty: 'beginner', previewBg: '#e0f7fa', previewText: '🔗' }, { subcategory: 'focus-connect', template: 'match-connect', generator: 'shape-grid', sortOrder: 32, generatorConfig: { functionId: 'match-connect' } }, ), sheet( - { id: 'line-recognition', title: '线条识别', desc: '认识不同线条,画出颜色对应的线条', category: 'focus', page: 'lineRecognition', subpackage: 'focusPages', icon: '📏', img: '/assets/focusEntrance/line-recognition.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#f1f8e9', previewText: '〰️' }, + { id: 'line-recognition', title: '线条识别', desc: '认识不同线条,画出颜色对应的线条', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '📏', img: '/assets/focusEntrance/line-recognition.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#f1f8e9', previewText: '〰️' }, { subcategory: 'focus-visual', template: 'tracing-writing', generator: 'shape-grid', sortOrder: 33, generatorConfig: { functionId: 'line-recognition' } }, ), sheet( - { id: 'grid-reasoning', title: '方格推理', desc: '推理出合并方格并连线', category: 'focus', page: 'gridReasoning', subpackage: 'focusPages', icon: '🧩', img: '/assets/focusEntrance/grid-reasoning.png', ageRange: [5, 7], difficulty: 'intermediate', previewBg: '#e8eaf6', previewText: '🧩' }, + { id: 'grid-reasoning', title: '方格推理', desc: '推理出合并方格并连线', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '🧩', img: '/assets/focusEntrance/grid-reasoning.png', ageRange: [5, 7], difficulty: 'intermediate', previewBg: '#e8eaf6', previewText: '🧩' }, { subcategory: 'focus-logic', template: 'special-graphic', generator: 'shape-grid', sortOrder: 34, generatorConfig: { functionId: 'grid-reasoning' } }, ), sheet( - { id: 'code-connect', title: '译码连线', desc: '按数字顺序将数字对应颜色连线', category: 'focus', page: 'codeConnect', subpackage: 'focusPages', icon: '🔢', img: '/assets/focusEntrance/code-connect.png', ageRange: [5, 7], difficulty: 'intermediate', previewBg: '#fff3e0', previewText: '🔢' }, + { id: 'code-connect', title: '译码连线', desc: '按数字顺序将数字对应颜色连线', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '🔢', img: '/assets/focusEntrance/code-connect.png', ageRange: [5, 7], difficulty: 'intermediate', previewBg: '#fff3e0', previewText: '🔢' }, { subcategory: 'focus-connect', template: 'match-connect', generator: 'dot-connect', sortOrder: 35, generatorConfig: { functionId: 'code-connect' } }, ), sheet( - { id: 'dot-connect', title: '数字点连线', desc: '按数字顺序连点成图', category: 'focus', page: 'dotConnect', subpackage: 'focusPages', icon: '🔗', img: '/assets/focusEntrance/dot-connect.png', ageRange: [3, 6], difficulty: 'beginner', previewBg: '#e3f2fd', previewText: '1→2→3' }, + { id: 'dot-connect', title: '数字点连线', desc: '按数字顺序连点成图', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '🔗', img: '/assets/focusEntrance/dot-connect.png', ageRange: [3, 6], difficulty: 'beginner', previewBg: '#e3f2fd', previewText: '1→2→3' }, { subcategory: 'focus-connect', template: 'match-connect', generator: 'dot-connect', sortOrder: 36, generatorConfig: { functionId: 'dot-connect' } }, ), sheet( - { id: 'grid-drawing-3x3', title: '格子仿画 3×3', desc: '简单有趣,培养专注力', category: 'focus', page: 'gridDrawing', subpackage: 'focusPages', icon: '🎨', mode: '3x3', img: '/assets/focusEntrance/grid-drawing-3x3.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#fce4ec', previewText: '▦' }, + { id: 'grid-drawing-3x3', title: '格子仿画 3×3', desc: '简单有趣,培养专注力', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '🎨', mode: '3x3', img: '/assets/focusEntrance/grid-drawing-3x3.png', ageRange: [3, 5], difficulty: 'beginner', previewBg: '#fce4ec', previewText: '▦' }, { subcategory: 'grid-copy', template: 'grid-exercise', generator: 'shape-grid', sortOrder: 37, generatorConfig: { grid: '3x3' } }, ), sheet( - { id: 'grid-drawing-5x5', title: '格子仿画 5×5', desc: '创意挑战,提升观察力', category: 'focus', page: 'gridDrawing', subpackage: 'focusPages', icon: '🎨', mode: '5x5', img: '/assets/focusEntrance/grid-drawing-5x5.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#fce4ec', previewText: '▦' }, + { id: 'grid-drawing-5x5', title: '格子仿画 5×5', desc: '创意挑战,提升观察力', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '🎨', mode: '5x5', img: '/assets/focusEntrance/grid-drawing-5x5.png', ageRange: [4, 6], difficulty: 'basic', previewBg: '#fce4ec', previewText: '▦' }, { subcategory: 'grid-copy', template: 'grid-exercise', generator: 'shape-grid', sortOrder: 38, generatorConfig: { grid: '5x5' } }, ), sheet( - { id: 'grid-drawing-7x7', title: '格子仿画 7×7', desc: '大师挑战,锻炼耐心', category: 'focus', page: 'gridDrawing', subpackage: 'focusPages', icon: '🎨', mode: '7x7', img: '/assets/focusEntrance/grid-drawing-7x7.png', ageRange: [5, 8], difficulty: 'intermediate', previewBg: '#fce4ec', previewText: '▦' }, + { id: 'grid-drawing-7x7', title: '格子仿画 7×7', desc: '大师挑战,锻炼耐心', category: 'focus', page: 'focusDraw', subpackage: 'focusPages', icon: '🎨', mode: '7x7', img: '/assets/focusEntrance/grid-drawing-7x7.png', ageRange: [5, 8], difficulty: 'intermediate', previewBg: '#fce4ec', previewText: '▦' }, { subcategory: 'grid-copy', template: 'grid-exercise', generator: 'shape-grid', sortOrder: 39, generatorConfig: { grid: '7x7' } }, ), diff --git a/miniprogram/focusPages/codeConnect/codeConnect.json b/miniprogram/focusPages/codeConnect/codeConnect.json deleted file mode 100644 index d5e2205..0000000 --- a/miniprogram/focusPages/codeConnect/codeConnect.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "navigationBarTitleText": "译码连线", - "navigationBarBackgroundColor": "#FFD719", - "homeButton": true, - "backgroundColor": "#F6F6F6", - "enablePullDownRefresh": false, - "usingComponents": { - "toy-button": "../../toy/button-v2/button", - "share-guide-popup": "../../components/share-guide-popup/share-guide-popup", - "math-bottom-buttons": "../../components/math-bottom-buttons/math-bottom-buttons", - "draw-ad": "../../components/draw-ad/draw-ad" - } -} diff --git a/miniprogram/focusPages/codeConnect/codeConnect.ts b/miniprogram/focusPages/codeConnect/codeConnect.ts deleted file mode 100644 index c9c73b8..0000000 --- a/miniprogram/focusPages/codeConnect/codeConnect.ts +++ /dev/null @@ -1,150 +0,0 @@ -import CodeConnectDraw from '../shared/service/codeConnectDraw'; -import { createFocusPage } from '../shared/common/focusPageMixin'; -import { CodeConnectData } from '../shared/service/codeConnectDraw'; -import { WATER_COLORS } from '../../constants/colors'; - -createFocusPage({ - canvas: null as Canvas | null, - ctx: null as RenderingContext | null, - boxHeight: 0, - boxWidth: 0, - drawService: null as CodeConnectDraw | null, - codeData: null as CodeConnectData | null, - - data: { - pageTitle: '译码连线', - functionId: '', - hasContent: false, - showShareDialog: false, - }, - - onLoad(options: { id?: string }) { - const functionId = options.id || 'code-connect'; - this.setData({ - functionId, - }); - this.initPageInfo(functionId, '译码连线'); - }, - - onReady() { - this.initCanvas({ - createDrawService: ( - canvas: Canvas, - ctx: RenderingContext, - options?: Record, - ) => { - return new CodeConnectDraw(canvas, ctx, options); - }, - drawServiceOptions: { - title: this.data.pageTitle, - subTitle: '按照数字顺序,将数字对应的颜色连起来', - functionId: this.data.functionId, - }, - onCanvasReady: () => { - // 初始随机生成 - this.onRandom(); - }, - }); - }, - - /** - * 绘制Canvas内容 - */ - async drawCanvas() { - if (!this.ctx || !this.drawService || !this.codeData) { - return; - } - - try { - await this.drawService.draw(this.codeData); - this.setData({ hasContent: true }); - } catch (error) { - console.error('绘制失败:', error); - this.setData({ hasContent: false }); - } - }, - - /** - * 随机生成 - */ - onRandom() { - // 随机选择起始数字:1、2或3 - const startNumberOptions = [1, 2, 3]; - const startNumber = - startNumberOptions[ - Math.floor(Math.random() * startNumberOptions.length) - ]; - - // 生成8个连续的数字(1-8、2-9或3-10) - const numbers: number[] = []; - for (let i = 0; i < 8; i++) { - numbers.push(startNumber + i); - } - - // 从WATER_COLORS.extended24中随机选择8种不重复的颜色 - const colorIndices = Array.from( - { length: WATER_COLORS.extended24.length }, - (_, i) => i, - ); - const shuffledIndices = [...colorIndices].sort( - () => Math.random() - 0.5, - ); - const selectedIndices = shuffledIndices.slice(0, 8); - - // 创建颜色映射 - const colorMap = numbers.map((number, index) => ({ - number, - color: WATER_COLORS.extended24[selectedIndices[index]].hex, - })); - - // 生成4个组的题目 - const groups: Array<{ - sequence: number[]; - dots: Array<{ - number: number; - color: string; - angle: number; - }>; - }> = []; - - for (let i = 0; i < 4; i++) { - // 从当前数字范围中随机选择6个数字(不重复) - const shuffledNumbers = [...numbers].sort( - () => Math.random() - 0.5, - ); - const sequence = shuffledNumbers.slice(0, 5); - - // 生成8个圆点的位置(圆形分布) - const dots: Array<{ - number: number; - color: string; - angle: number; - }> = []; - - // 8个圆点均匀分布在圆周上 - for (let j = 0; j < 8; j++) { - const angle = (j / 8) * Math.PI * 2 - Math.PI / 2; // 从顶部开始,逆时针 - const number = numbers[j]; - const colorInfo = colorMap.find((m) => m.number === number); - dots.push({ - number, - color: colorInfo?.color || '#000', - angle, - }); - } - - groups.push({ - sequence, - dots, - }); - } - - this.codeData = { - colorMap, - startNumber, - groups, - }; - - this.drawCanvas(); - }, -}); diff --git a/miniprogram/focusPages/codeConnect/codeConnect.wxml b/miniprogram/focusPages/codeConnect/codeConnect.wxml deleted file mode 100644 index 3b70e13..0000000 --- a/miniprogram/focusPages/codeConnect/codeConnect.wxml +++ /dev/null @@ -1,6 +0,0 @@ - - - -