/** * 格子仿画 - 3x3 网格形状数据 * 适用于入门级,低龄儿童 */ import { ShapeTemplate } from '../types/gridTypes'; // ==================== 3x3 形状模板 ==================== /** 所有 3x3 形状模板 总共39个形状模板 */ export const ALL_3X3_SHAPES: ShapeTemplate[] = [ /** 简单十字形 */ { id: 'cross-3x3-001', name: '十字形', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 1, y: 0, color: '#FFE176' }, // 顶部 - 黄色 { x: 0, y: 1, color: '#F9A857' }, // 左侧 - 橙色 { x: 1, y: 1, color: '#ED6D50' }, // 中心 - 红色 { x: 2, y: 1, color: '#F9A857' }, // 右侧 - 橙色 { x: 1, y: 2, color: '#FFE176' }, // 底部 - 黄色 ], }, /** L形 */ { id: 'l-3x3-001', name: 'L形', category: 'geometric', difficulty: 1, supportSymmetry: false, isComplete: true, cells: [ { x: 0, y: 0, color: '#79A7ED' }, // 蓝色 { x: 0, y: 1, color: '#6CD2EA' }, // 浅蓝 { x: 0, y: 2, color: '#53D1B6' }, // 青色 { x: 1, y: 2, color: '#B2D94B' }, // 绿色 { x: 2, y: 2, color: '#FFE176' }, // 黄色 ], }, /** 对角线 */ { id: 'diagonal-3x3-001', name: '对角线', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 0, y: 0, color: '#ED6D50' }, // 红色 { x: 1, y: 1, color: '#F9A857' }, // 橙色 { x: 2, y: 2, color: '#FFE176' }, // 黄色 ], }, /** 反向对角线 */ { id: 'reverse-diagonal-3x3-001', name: '反向对角线', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 0, y: 2, color: '#F2A4C0' }, { x: 1, y: 1, color: '#79A7ED' }, { x: 2, y: 0, color: '#B2D94B' }, ], }, /** 小房子 */ { id: 'house-3x3-001', name: '小房子', category: 'object', difficulty: 1, supportSymmetry: true, symmetryType: 'vertical', isComplete: true, cells: [ { x: 1, y: 0, color: '#ED6D50' }, // 屋顶 { x: 0, y: 1, color: '#FFE176' }, // 左侧墙 { x: 1, y: 1, color: '#FFE176' }, // 中间墙 { x: 2, y: 1, color: '#FFE176' }, // 右侧墙 { x: 1, y: 2, color: '#BC8F71' }, // 门 ], }, /** 小星星 */ { id: 'star-3x3-001', name: '小星星', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 1, y: 0, color: '#FFE176' }, // 顶部 - 黄色 { x: 0, y: 1, color: '#F9A857' }, // 左侧 - 橙色 { x: 1, y: 1, color: '#ED6D50' }, // 中心 - 红色 { x: 2, y: 1, color: '#F9A857' }, // 右侧 - 橙色 { x: 1, y: 2, color: '#FFE176' }, // 底部 - 黄色 ], }, /** T形 */ { id: 't-3x3-001', name: 'T形', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'vertical', isComplete: true, cells: [ { x: 0, y: 0, color: '#53D1B6' }, // 青色 { x: 1, y: 0, color: '#6CD2EA' }, // 浅蓝 { x: 2, y: 0, color: '#53D1B6' }, // 青色 { x: 1, y: 1, color: '#79A7ED' }, // 蓝色 { x: 1, y: 2, color: '#6CD2EA' }, // 浅蓝 ], }, /** 倒T形 */ { id: 'reverse-t-3x3-001', name: '倒T形', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'vertical', isComplete: true, cells: [ { x: 0, y: 2, color: '#ED6D50' }, { x: 1, y: 2, color: '#F9A857' }, { x: 2, y: 2, color: '#FFE176' }, { x: 1, y: 1, color: '#B2D94B' }, { x: 1, y: 0, color: '#79A7ED' }, ], }, /** 三角形 */ { id: 'triangle-3x3-001', name: '三角形', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'vertical', isComplete: true, cells: [ { x: 1, y: 0, color: '#FFE176' }, // 顶部 - 黄色 { x: 0, y: 1, color: '#F9A857' }, // 左侧 - 橙色 { x: 1, y: 1, color: '#ED6D50' }, // 中心 - 红色 { x: 2, y: 1, color: '#F9A857' }, // 右侧 - 橙色 { x: 0, y: 2, color: '#F2A4C0' }, // 左下 - 粉色 { x: 1, y: 2, color: '#ED6D50' }, // 中下 - 红色 { x: 2, y: 2, color: '#F2A4C0' }, // 右下 - 粉色 ], }, /** 正方形 */ { id: 'square-3x3-001', name: '正方形', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 0, y: 0, color: '#9C98DE' }, // 紫色 { x: 1, y: 0, color: '#F2A4C0' }, // 粉色 { x: 0, y: 1, color: '#F2A4C0' }, // 粉色 { x: 1, y: 1, color: '#9C98DE' }, // 紫色 ], }, /** 向上箭头 */ { id: 'arrow-up-3x3-001', name: '向上箭头', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'vertical', isComplete: true, cells: [ { x: 1, y: 0, color: '#6CD2EA' }, // 箭头顶部 - 浅蓝 { x: 0, y: 1, color: '#53D1B6' }, // 左侧 - 青色 { x: 1, y: 1, color: '#79A7ED' }, // 中心 - 蓝色 { x: 2, y: 1, color: '#53D1B6' }, // 右侧 - 青色 { x: 1, y: 2, color: '#6CD2EA' }, // 箭头杆 - 浅蓝 ], }, /** 数字7 */ { id: 'number-7-3x3-001', name: '数字7', category: 'geometric', difficulty: 1, supportSymmetry: false, isComplete: true, cells: [ { x: 0, y: 0, color: '#FC9B6C' }, // 橙色 { x: 1, y: 0, color: '#F9A857' }, // 浅橙 { x: 2, y: 0, color: '#ED6D50' }, // 红色 { x: 2, y: 1, color: '#F9A857' }, // 浅橙 { x: 1, y: 2, color: '#ED6D50' }, // 红色 { x: 2, y: 2, color: '#FC9B6C' }, // 橙色 ], }, /** 边框 */ { id: 'frame-3x3-001', name: '边框', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 0, y: 0, color: '#B2D94B' }, // 绿色 { x: 1, y: 0, color: '#53D1B6' }, // 青色 { x: 2, y: 0, color: '#B2D94B' }, // 绿色 { x: 0, y: 1, color: '#6CD2EA' }, // 浅蓝 { x: 2, y: 1, color: '#6CD2EA' }, // 浅蓝 { x: 0, y: 2, color: '#B2D94B' }, // 绿色 { x: 1, y: 2, color: '#53D1B6' }, // 青色 { x: 2, y: 2, color: '#B2D94B' }, // 绿色 ], }, /** 加号(大) */ { id: 'plus-3x3-001', name: '加号', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 1, y: 0, color: '#F2A4C0' }, // 粉色 { x: 0, y: 1, color: '#ED6D50' }, // 红色 { x: 1, y: 1, color: '#F9A857' }, // 橙色 { x: 2, y: 1, color: '#ED6D50' }, // 红色 { x: 1, y: 2, color: '#F2A4C0' }, // 粉色 ], }, /** 点阵 */ { id: 'dots-3x3-001', name: '点阵', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 0, y: 0, color: '#79A7ED' }, // 蓝色 { x: 2, y: 0, color: '#6CD2EA' }, // 浅蓝 { x: 1, y: 1, color: '#53D1B6' }, // 青色 { x: 0, y: 2, color: '#6CD2EA' }, // 浅蓝 { x: 2, y: 2, color: '#79A7ED' }, // 蓝色 ], }, /** 向下箭头 */ { id: 'arrow-down-3x3-001', name: '向下箭头', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'vertical', isComplete: true, cells: [ { x: 1, y: 0, color: '#6CD2EA' }, // 箭头杆 - 浅蓝 { x: 0, y: 1, color: '#53D1B6' }, // 左侧 - 青色 { x: 1, y: 1, color: '#79A7ED' }, // 中心 - 蓝色 { x: 2, y: 1, color: '#53D1B6' }, // 右侧 - 青色 { x: 1, y: 2, color: '#6CD2EA' }, // 箭头底部 - 浅蓝 ], }, /** 菱形 */ { id: 'diamond-3x3-001', name: '菱形', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 1, y: 0, color: '#FFE176' }, // 顶部 - 黄色 { x: 0, y: 1, color: '#F9A857' }, // 左侧 - 橙色 { x: 1, y: 1, color: '#ED6D50' }, // 中心 - 红色 { x: 2, y: 1, color: '#F9A857' }, // 右侧 - 橙色 { x: 1, y: 2, color: '#FFE176' }, // 底部 - 黄色 ], }, /** U形 */ { id: 'u-3x3-001', name: 'U形', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'vertical', isComplete: true, cells: [ { x: 0, y: 0, color: '#53D1B6' }, // 青色 { x: 2, y: 0, color: '#53D1B6' }, // 青色 { x: 0, y: 1, color: '#6CD2EA' }, // 浅蓝 { x: 2, y: 1, color: '#6CD2EA' }, // 浅蓝 { x: 0, y: 2, color: '#79A7ED' }, // 蓝色 { x: 1, y: 2, color: '#B2D94B' }, // 绿色 { x: 2, y: 2, color: '#79A7ED' }, // 蓝色 ], }, /** C形 */ { id: 'c-3x3-001', name: 'C形', category: 'geometric', difficulty: 1, supportSymmetry: false, isComplete: true, cells: [ { x: 0, y: 0, color: '#ED6D50' }, // 红色 { x: 1, y: 0, color: '#F9A857' }, // 橙色 { x: 0, y: 1, color: '#FFE176' }, // 黄色 { x: 0, y: 2, color: '#F9A857' }, // 橙色 { x: 1, y: 2, color: '#ED6D50' }, // 红色 ], }, /** 倒三角形 */ { id: 'inverted-triangle-3x3-001', name: '倒三角形', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'vertical', isComplete: true, cells: [ { x: 0, y: 0, color: '#B2D94B' }, // 绿色 { x: 1, y: 0, color: '#53D1B6' }, // 青色 { x: 2, y: 0, color: '#B2D94B' }, // 绿色 { x: 0, y: 1, color: '#6CD2EA' }, // 浅蓝 { x: 1, y: 1, color: '#79A7ED' }, // 蓝色 { x: 2, y: 1, color: '#6CD2EA' }, // 浅蓝 { x: 1, y: 2, color: '#53D1B6' }, // 底部 - 青色 ], }, /** 数字1 */ { id: 'number-1-3x3-001', name: '数字1', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'vertical', isComplete: true, cells: [ { x: 1, y: 0, color: '#FC9B6C' }, // 橙色 { x: 1, y: 1, color: '#F9A857' }, // 浅橙 { x: 1, y: 2, color: '#ED6D50' }, // 红色 ], }, /** 数字4 */ { id: 'number-4-3x3-001', name: '数字4', category: 'geometric', difficulty: 1, supportSymmetry: false, isComplete: true, cells: [ { x: 0, y: 0, color: '#F2A4C0' }, // 粉色 { x: 1, y: 0, color: '#ED6D50' }, // 红色 { x: 0, y: 1, color: '#F9A857' }, // 橙色 { x: 1, y: 1, color: '#FFE176' }, // 黄色 { x: 2, y: 1, color: '#F2A4C0' }, // 粉色 { x: 2, y: 2, color: '#ED6D50' }, // 红色 ], }, /** 圆形(3x3近似) */ { id: 'circle-3x3-001', name: '圆形', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 1, y: 0, color: '#9C98DE' }, // 紫色 { x: 0, y: 1, color: '#F2A4C0' }, // 粉色 { x: 2, y: 1, color: '#F2A4C0' }, // 粉色 { x: 1, y: 2, color: '#9C98DE' }, // 紫色 ], }, /** 数字0 */ { id: 'number-0-3x3-001', name: '数字0', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 0, y: 0, color: '#FFE176' }, // 黄色 { x: 1, y: 0, color: '#F9A857' }, // 橙色 { x: 2, y: 0, color: '#FFE176' }, // 黄色 { x: 0, y: 1, color: '#F9A857' }, // 橙色 { x: 2, y: 1, color: '#F9A857' }, // 橙色 { x: 0, y: 2, color: '#FFE176' }, // 黄色 { x: 1, y: 2, color: '#F9A857' }, // 橙色 { x: 2, y: 2, color: '#FFE176' }, // 黄色 ], }, /** 数字8 */ { id: 'number-8-3x3-001', name: '数字8', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 0, y: 0, color: '#79A7ED' }, // 蓝色 { x: 1, y: 0, color: '#6CD2EA' }, // 浅蓝 { x: 2, y: 0, color: '#79A7ED' }, // 蓝色 { x: 0, y: 1, color: '#53D1B6' }, // 青色 { x: 1, y: 1, color: '#B2D94B' }, // 绿色 { x: 2, y: 1, color: '#53D1B6' }, // 青色 { x: 0, y: 2, color: '#79A7ED' }, // 蓝色 { x: 1, y: 2, color: '#6CD2EA' }, // 浅蓝 { x: 2, y: 2, color: '#79A7ED' }, // 蓝色 ], }, /** 多色十字形 */ { id: 'colorful-cross-3x3-001', name: '多色十字形', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 1, y: 0, color: '#FFE176' }, // 顶部 - 黄色 { x: 0, y: 1, color: '#F9A857' }, // 左侧 - 橙色 { x: 1, y: 1, color: '#ED6D50' }, // 中心 - 红色 { x: 2, y: 1, color: '#F9A857' }, // 右侧 - 橙色 { x: 1, y: 2, color: '#FFE176' }, // 底部 - 黄色 ], }, /** 多色L形 */ { id: 'colorful-l-3x3-001', name: '多色L形', category: 'geometric', difficulty: 1, supportSymmetry: false, isComplete: true, cells: [ { x: 0, y: 0, color: '#79A7ED' }, // 蓝色 { x: 0, y: 1, color: '#6CD2EA' }, // 浅蓝 { x: 0, y: 2, color: '#53D1B6' }, // 青色 { x: 1, y: 2, color: '#B2D94B' }, // 绿色 { x: 2, y: 2, color: '#FFE176' }, // 黄色 ], }, /** 多色星星 */ { id: 'colorful-star-3x3-001', name: '多色星星', category: 'geometric', difficulty: 1, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 1, y: 0, color: '#FFE176' }, // 顶部 - 黄色 { x: 0, y: 1, color: '#F9A857' }, // 左侧 - 橙色 { x: 1, y: 1, color: '#ED6D50' }, // 中心 - 红色 { x: 2, y: 1, color: '#F9A857' }, // 右侧 - 橙色 { x: 1, y: 2, color: '#FFE176' }, // 底部 - 黄色 ], }, /** 多色小房子 */ { id: 'colorful-house-3x3-001', name: '多色小房子', category: 'object', difficulty: 1, supportSymmetry: true, symmetryType: 'vertical', isComplete: true, cells: [ { x: 1, y: 0, color: '#ED6D50' }, // 屋顶 - 红色 { x: 0, y: 1, color: '#FFE176' }, // 左侧墙 - 黄色 { x: 1, y: 1, color: '#F9A857' }, // 中间墙 - 橙色 { x: 2, y: 1, color: '#FFE176' }, // 右侧墙 - 黄色 { x: 1, y: 2, color: '#BC8F71' }, // 门 - 棕色 ], }, /** 数字2 */ { id: 'number-2-3x3-001', name: '数字2', category: 'geometric', difficulty: 2, supportSymmetry: false, isComplete: true, cells: [ { x: 0, y: 0, color: '#79A7ED' }, // 蓝色 { x: 1, y: 0, color: '#6CD2EA' }, // 浅蓝 { x: 2, y: 0, color: '#53D1B6' }, // 青色 { x: 2, y: 1, color: '#6CD2EA' }, // 浅蓝 { x: 0, y: 2, color: '#53D1B6' }, // 青色 { x: 1, y: 2, color: '#6CD2EA' }, // 浅蓝 { x: 2, y: 2, color: '#79A7ED' }, // 蓝色 ], }, /** 数字3 */ { id: 'number-3-3x3-001', name: '数字3', category: 'geometric', difficulty: 2, supportSymmetry: false, isComplete: true, cells: [ { x: 0, y: 0, color: '#6CD2EA' }, // 浅蓝 { x: 1, y: 0, color: '#53D1B6' }, // 青色 { x: 2, y: 0, color: '#79A7ED' }, // 蓝色 { x: 2, y: 1, color: '#53D1B6' }, // 青色 { x: 0, y: 2, color: '#79A7ED' }, // 蓝色 { x: 1, y: 2, color: '#53D1B6' }, // 青色 { x: 2, y: 2, color: '#6CD2EA' }, // 浅蓝 ], }, /** 数字5 */ { id: 'number-5-3x3-001', name: '数字5', category: 'geometric', difficulty: 2, supportSymmetry: false, isComplete: true, cells: [ { x: 0, y: 0, color: '#53D1B6' }, // 青色 { x: 1, y: 0, color: '#6CD2EA' }, // 浅蓝 { x: 2, y: 0, color: '#79A7ED' }, // 蓝色 { x: 0, y: 1, color: '#6CD2EA' }, // 浅蓝 { x: 0, y: 2, color: '#79A7ED' }, // 蓝色 { x: 1, y: 2, color: '#6CD2EA' }, // 浅蓝 { x: 2, y: 2, color: '#53D1B6' }, // 青色 ], }, /** 数字6 */ { id: 'number-6-3x3-001', name: '数字6', category: 'geometric', difficulty: 2, supportSymmetry: false, isComplete: true, cells: [ { x: 0, y: 0, color: '#B2D94B' }, // 绿色 { x: 1, y: 0, color: '#53D1B6' }, // 青色 { x: 0, y: 1, color: '#6CD2EA' }, // 浅蓝 { x: 0, y: 2, color: '#79A7ED' }, // 蓝色 { x: 1, y: 2, color: '#6CD2EA' }, // 浅蓝 { x: 2, y: 2, color: '#53D1B6' }, // 青色 ], }, /** 数字9 */ { id: 'number-9-3x3-001', name: '数字9', category: 'geometric', difficulty: 2, supportSymmetry: false, isComplete: true, cells: [ { x: 0, y: 0, color: '#F2A4C0' }, // 粉色 { x: 1, y: 0, color: '#ED6D50' }, // 红色 { x: 2, y: 0, color: '#F9A857' }, // 橙色 { x: 0, y: 1, color: '#ED6D50' }, // 红色 { x: 2, y: 1, color: '#FFE176' }, // 黄色 { x: 1, y: 2, color: '#F9A857' }, // 橙色 { x: 2, y: 2, color: '#ED6D50' }, // 红色 ], }, /** 字母A */ { id: 'letter-a-3x3-001', name: '字母A', category: 'geometric', difficulty: 2, supportSymmetry: true, symmetryType: 'vertical', isComplete: true, cells: [ { x: 1, y: 0, color: '#FFE176' }, // 黄色 { x: 0, y: 1, color: '#F9A857' }, // 橙色 { x: 1, y: 1, color: '#ED6D50' }, // 红色 { x: 2, y: 1, color: '#F9A857' }, // 橙色 { x: 0, y: 2, color: '#FFE176' }, // 黄色 { x: 2, y: 2, color: '#FFE176' }, // 黄色 ], }, /** 字母H */ { id: 'letter-h-3x3-001', name: '字母H', category: 'geometric', difficulty: 2, supportSymmetry: true, symmetryType: 'vertical', isComplete: true, cells: [ { x: 0, y: 0, color: '#F9A857' }, // 橙色 { x: 2, y: 0, color: '#F9A857' }, // 橙色 { x: 0, y: 1, color: '#ED6D50' }, // 红色 { x: 1, y: 1, color: '#FFE176' }, // 黄色 { x: 2, y: 1, color: '#ED6D50' }, // 红色 { x: 0, y: 2, color: '#F9A857' }, // 橙色 { x: 2, y: 2, color: '#F9A857' }, // 橙色 ], }, /** 字母O */ { id: 'letter-o-3x3-001', name: '字母O', category: 'geometric', difficulty: 2, supportSymmetry: true, symmetryType: 'both', isComplete: true, cells: [ { x: 0, y: 0, color: '#ED6D50' }, // 红色 { x: 1, y: 0, color: '#F9A857' }, // 橙色 { x: 2, y: 0, color: '#ED6D50' }, // 红色 { x: 0, y: 1, color: '#F9A857' }, // 橙色 { x: 2, y: 1, color: '#F9A857' }, // 橙色 { x: 0, y: 2, color: '#ED6D50' }, // 红色 { x: 1, y: 2, color: '#F9A857' }, // 橙色 { x: 2, y: 2, color: '#ED6D50' }, // 红色 ], }, ]; /** * 随机获取一个 3x3 形状 */ export function getRandom3x3Shape(): ShapeTemplate { const randomIndex = Math.floor(Math.random() * ALL_3X3_SHAPES.length); return ALL_3X3_SHAPES[randomIndex]; }