/** * 格子仿画 - 7x7 网格形状数据 * 适用于中等难度,复杂图案 */ import { GridCell, ShapeTemplate } from '../types/gridTypes'; // ==================== 7x7 形状模板 ==================== /** 南瓜头 - 对称涂色(仅存储左半部分) */ export const PUMPKIN_HEAD_7X7: ShapeTemplate = { id: 'pumpkin-7x7-001', name: '南瓜头', recommendedSize: { rows: 7, cols: 7 }, category: 'character', difficulty: 4, supportSymmetry: true, symmetryType: 'vertical', isComplete: false, // 只存储了左半部分 colorSchemeId: 'halloween', cells: [ // 茎(在对称轴上) { x: 3, y: 0, color: '#FF7F00' }, // 脸部轮廓(浅绿色)- 左半部分 { x: 0, y: 1, color: '#90EE90' }, { x: 1, y: 1, color: '#90EE90' }, { x: 0, y: 2, color: '#90EE90' }, { x: 1, y: 2, color: '#90EE90' }, { x: 0, y: 3, color: '#90EE90' }, { x: 1, y: 3, color: '#90EE90' }, { x: 0, y: 4, color: '#90EE90' }, { x: 1, y: 4, color: '#90EE90' }, { x: 0, y: 5, color: '#90EE90' }, { x: 1, y: 5, color: '#90EE90' }, { x: 0, y: 6, color: '#90EE90' }, { x: 1, y: 6, color: '#90EE90' }, // 脸部(黄色) { x: 2, y: 1, color: '#FFFF00' }, { x: 3, y: 1, color: '#FFFF00' }, // 对称轴上的点 { x: 2, y: 2, color: '#FFFF00' }, { x: 2, y: 3, color: '#FFFF00' }, { x: 3, y: 3, color: '#FFFF00' }, { x: 2, y: 4, color: '#FFFF00' }, { x: 2, y: 5, color: '#FFFF00' }, { x: 3, y: 5, color: '#FFFF00' }, // 眼睛(黑色)- 左眼 { x: 2, y: 2, color: '#000000' }, ], }; /** 卡通恐龙 - 对称涂色(仅存储左半部分) */ export const DINOSAUR_7X7: ShapeTemplate = { id: 'dinosaur-7x7-001', name: '卡通恐龙', recommendedSize: { rows: 7, cols: 7 }, category: 'animal', difficulty: 4, supportSymmetry: true, symmetryType: 'vertical', isComplete: false, // 只存储了左半部分 cells: [ // 身体(浅绿色) { x: 1, y: 1, color: '#90EE90' }, { x: 2, y: 1, color: '#90EE90' }, { x: 1, y: 2, color: '#90EE90' }, { x: 2, y: 2, color: '#90EE90' }, { x: 0, y: 3, color: '#90EE90' }, { x: 1, y: 3, color: '#90EE90' }, { x: 2, y: 3, color: '#90EE90' }, { x: 0, y: 4, color: '#90EE90' }, { x: 1, y: 4, color: '#90EE90' }, { x: 2, y: 4, color: '#90EE90' }, { x: 0, y: 5, color: '#90EE90' }, { x: 1, y: 5, color: '#90EE90' }, { x: 2, y: 5, color: '#90EE90' }, { x: 0, y: 6, color: '#90EE90' }, { x: 1, y: 6, color: '#90EE90' }, // 眼睛(黑色) { x: 2, y: 1, color: '#000000' }, // 嘴巴(红色) { x: 2, y: 2, color: '#FF0000' }, { x: 0, y: 3, color: '#FF0000' }, // 脚(黄色) { x: 2, y: 5, color: '#FFFF00' }, { x: 0, y: 6, color: '#FFFF00' }, { x: 1, y: 6, color: '#FFFF00' }, ], }; /** 心形 - 对称涂色(仅存储左半部分,对称轴在x=3) */ export const HEART_7X7: ShapeTemplate = { id: 'heart-7x7-001', name: '心形', recommendedSize: { rows: 7, cols: 7 }, category: 'object', difficulty: 3, supportSymmetry: true, symmetryType: 'vertical', isComplete: false, colorSchemeId: 'warm', cells: [ // 左上半部分 { x: 1, y: 0, color: '#FF69B4' }, { x: 2, y: 0, color: '#FF69B4' }, { x: 0, y: 1, color: '#FF69B4' }, { x: 3, y: 1, color: '#FF69B4' }, // 对称轴上的点 { x: 0, y: 2, color: '#FF69B4' }, { x: 1, y: 3, color: '#FF69B4' }, { x: 2, y: 4, color: '#FF69B4' }, { x: 3, y: 5, color: '#FF69B4' }, // 对称轴上的点 { x: 3, y: 6, color: '#FF69B4' }, // 对称轴上的点(底部尖端) ], }; /** 房子 */ export const HOUSE_7X7: ShapeTemplate = { id: 'house-7x7-001', name: '小房子', recommendedSize: { rows: 7, cols: 7 }, category: 'object', difficulty: 3, supportSymmetry: true, symmetryType: 'vertical', isComplete: false, cells: [ // 屋顶(三角形)- 左半部分 { x: 2, y: 0, color: '#FF0000' }, { x: 1, y: 1, color: '#FF0000' }, { x: 2, y: 1, color: '#FF0000' }, { x: 3, y: 1, color: '#FF0000' }, // 对称轴上的点 { x: 0, y: 2, color: '#FF0000' }, { x: 1, y: 2, color: '#FF0000' }, { x: 2, y: 2, color: '#FF0000' }, { x: 3, y: 2, color: '#FF0000' }, // 墙体(黄色)- 左半部分 { x: 1, y: 3, color: '#FFFF00' }, { x: 2, y: 3, color: '#FFFF00' }, { x: 3, y: 3, color: '#FFFF00' }, { x: 1, y: 4, color: '#FFFF00' }, { x: 2, y: 4, color: '#FFFF00' }, { x: 3, y: 4, color: '#FFFF00' }, { x: 1, y: 5, color: '#FFFF00' }, { x: 2, y: 5, color: '#FFFF00' }, { x: 3, y: 5, color: '#FFFF00' }, // 门(棕色)- 在对称轴上 { x: 3, y: 4, color: '#8B4513' }, { x: 3, y: 5, color: '#8B4513' }, // 窗户(蓝色) { x: 1, y: 3, color: '#0000FF' }, ], }; /** 蝴蝶 */ export const BUTTERFLY_7X7: ShapeTemplate = { id: 'butterfly-7x7-001', name: '蝴蝶', recommendedSize: { rows: 7, cols: 7 }, category: 'animal', difficulty: 4, supportSymmetry: true, symmetryType: 'vertical', isComplete: false, cells: [ // 左翅膀 { x: 0, y: 1, color: '#FF69B4' }, { x: 1, y: 1, color: '#FF69B4' }, { x: 0, y: 2, color: '#FF69B4' }, { x: 1, y: 2, color: '#FF69B4' }, { x: 2, y: 2, color: '#FF69B4' }, { x: 0, y: 3, color: '#FF69B4' }, { x: 1, y: 3, color: '#FF69B4' }, { x: 2, y: 3, color: '#FF69B4' }, // 身体(在对称轴上) { x: 3, y: 1, color: '#000000' }, { x: 3, y: 2, color: '#000000' }, { x: 3, y: 3, color: '#000000' }, { x: 3, y: 4, color: '#000000' }, { x: 3, y: 5, color: '#000000' }, // 左下半翅膀 { x: 1, y: 4, color: '#FF69B4' }, { x: 2, y: 4, color: '#FF69B4' }, { x: 0, y: 5, color: '#FF69B4' }, { x: 1, y: 5, color: '#FF69B4' }, { x: 2, y: 5, color: '#FF69B4' }, ], }; /** 花朵 */ export const FLOWER_7X7: ShapeTemplate = { id: 'flower-7x7-001', name: '花朵', recommendedSize: { rows: 7, cols: 7 }, category: 'nature', difficulty: 3, supportSymmetry: true, symmetryType: 'both', isComplete: false, cells: [ // 花瓣(左上半部分) { x: 1, y: 0, color: '#FF69B4' }, { x: 2, y: 0, color: '#FF69B4' }, { x: 0, y: 1, color: '#FF69B4' }, { x: 1, y: 1, color: '#FF69B4' }, { x: 2, y: 1, color: '#FF69B4' }, { x: 3, y: 1, color: '#FF69B4' }, // 对称轴上的点 // 花心(中心) { x: 2, y: 2, color: '#FFFF00' }, { x: 3, y: 2, color: '#FFFF00' }, // 对称轴上的点 { x: 2, y: 3, color: '#FFFF00' }, { x: 3, y: 3, color: '#FFFF00' }, // 对称轴上的点 // 茎(在对称轴上) { x: 3, y: 4, color: '#00FF00' }, { x: 3, y: 5, color: '#00FF00' }, { x: 3, y: 6, color: '#00FF00' }, ], }; /** 所有 7x7 形状模板 */ export const ALL_7X7_SHAPES: ShapeTemplate[] = [ PUMPKIN_HEAD_7X7, DINOSAUR_7X7, HEART_7X7, HOUSE_7X7, BUTTERFLY_7X7, FLOWER_7X7, ]; /** * 随机获取一个 7x7 形状 */ export function getRandom7x7Shape(): ShapeTemplate { const randomIndex = Math.floor(Math.random() * ALL_7X7_SHAPES.length); return ALL_7X7_SHAPES[randomIndex]; }