969 lines
34 KiB
TypeScript
969 lines
34 KiB
TypeScript
/**
|
|
* 格子仿画 - 5x5 网格形状数据
|
|
* 适用于常用尺寸,适中难度
|
|
*/
|
|
|
|
import { ShapeTemplate } from '../types/gridTypes';
|
|
|
|
// ==================== 5x5 形状模板 ====================
|
|
|
|
/** 所有 5x5 形状模板 */
|
|
export const ALL_5X5_SHAPES: ShapeTemplate[] = [
|
|
/** 十字形 */
|
|
{
|
|
id: 'cross-5x5-001',
|
|
name: '十字形',
|
|
category: 'geometric',
|
|
difficulty: 1,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 2, y: 0, color: '#FFE176' }, // 顶部
|
|
{ x: 2, y: 1, color: '#FFE176' },
|
|
{ x: 0, y: 2, color: '#FFE176' }, // 左侧
|
|
{ x: 1, y: 2, color: '#FFE176' },
|
|
{ x: 2, y: 2, color: '#FFE176' }, // 中心
|
|
{ x: 3, y: 2, color: '#FFE176' },
|
|
{ x: 4, y: 2, color: '#FFE176' }, // 右侧
|
|
{ x: 2, y: 3, color: '#FFE176' },
|
|
{ x: 2, y: 4, color: '#FFE176' }, // 底部
|
|
],
|
|
},
|
|
|
|
/** X形 */
|
|
{
|
|
id: 'x-5x5-001',
|
|
name: 'X形',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#79A7ED' },
|
|
{ x: 1, y: 1, color: '#79A7ED' },
|
|
{ x: 2, y: 2, color: '#79A7ED' },
|
|
{ x: 3, y: 3, color: '#79A7ED' },
|
|
{ x: 4, y: 4, color: '#79A7ED' },
|
|
{ x: 4, y: 0, color: '#79A7ED' },
|
|
{ x: 3, y: 1, color: '#79A7ED' },
|
|
{ x: 1, y: 3, color: '#79A7ED' },
|
|
{ x: 0, y: 4, color: '#79A7ED' },
|
|
],
|
|
},
|
|
|
|
/** 星星 */
|
|
{
|
|
id: 'star-5x5-001',
|
|
name: '星星',
|
|
category: 'geometric',
|
|
difficulty: 3,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 2, y: 0, color: '#FFE176' }, // 顶部
|
|
{ x: 1, y: 1, color: '#FFE176' },
|
|
{ x: 3, y: 1, color: '#FFE176' },
|
|
{ x: 0, y: 2, color: '#FFE176' },
|
|
{ x: 2, y: 2, color: '#FFE176' }, // 中心
|
|
{ x: 4, y: 2, color: '#FFE176' },
|
|
{ x: 1, y: 3, color: '#FFE176' },
|
|
{ x: 3, y: 3, color: '#FFE176' },
|
|
{ x: 2, y: 4, color: '#FFE176' }, // 底部
|
|
],
|
|
},
|
|
|
|
/** Z字形 */
|
|
{
|
|
id: 'zigzag-5x5-001',
|
|
name: 'Z字形',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: false,
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#9C98DE' },
|
|
{ x: 1, y: 0, color: '#9C98DE' },
|
|
{ x: 2, y: 0, color: '#9C98DE' },
|
|
{ x: 2, y: 1, color: '#9C98DE' },
|
|
{ x: 1, y: 2, color: '#9C98DE' },
|
|
{ x: 0, y: 2, color: '#9C98DE' },
|
|
{ x: 0, y: 3, color: '#9C98DE' },
|
|
{ x: 1, y: 3, color: '#9C98DE' },
|
|
{ x: 2, y: 4, color: '#9C98DE' },
|
|
{ x: 3, y: 4, color: '#9C98DE' },
|
|
{ x: 4, y: 4, color: '#9C98DE' },
|
|
],
|
|
},
|
|
|
|
/** V字形 */
|
|
{
|
|
id: 'v-5x5-001',
|
|
name: 'V字形',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#53D1B6' },
|
|
{ x: 4, y: 0, color: '#53D1B6' },
|
|
{ x: 0, y: 1, color: '#53D1B6' },
|
|
{ x: 4, y: 1, color: '#53D1B6' },
|
|
{ x: 1, y: 2, color: '#53D1B6' },
|
|
{ x: 3, y: 2, color: '#53D1B6' },
|
|
{ x: 2, y: 3, color: '#53D1B6' },
|
|
{ x: 2, y: 4, color: '#53D1B6' },
|
|
],
|
|
},
|
|
|
|
/** I字形 */
|
|
{
|
|
id: 'i-5x5-001',
|
|
name: 'I字形',
|
|
category: 'geometric',
|
|
difficulty: 1,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#F9A857' },
|
|
{ x: 2, y: 0, color: '#F9A857' },
|
|
{ x: 3, y: 0, color: '#F9A857' },
|
|
{ x: 2, y: 1, color: '#F9A857' },
|
|
{ x: 2, y: 2, color: '#F9A857' },
|
|
{ x: 2, y: 3, color: '#F9A857' },
|
|
{ x: 2, y: 4, color: '#F9A857' },
|
|
{ x: 1, y: 4, color: '#F9A857' },
|
|
{ x: 3, y: 4, color: '#F9A857' },
|
|
],
|
|
},
|
|
|
|
/** 棋盘格 */
|
|
{
|
|
id: 'checkerboard-5x5-001',
|
|
name: '棋盘格',
|
|
category: 'geometric',
|
|
difficulty: 3,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#FFE176' },
|
|
{ x: 2, y: 0, color: '#FFE176' },
|
|
{ x: 4, y: 0, color: '#FFE176' },
|
|
{ x: 1, y: 1, color: '#FFE176' },
|
|
{ x: 3, y: 1, color: '#FFE176' },
|
|
{ x: 0, y: 2, color: '#FFE176' },
|
|
{ x: 2, y: 2, color: '#FFE176' },
|
|
{ x: 4, y: 2, color: '#FFE176' },
|
|
{ x: 1, y: 3, color: '#FFE176' },
|
|
{ x: 3, y: 3, color: '#FFE176' },
|
|
{ x: 0, y: 4, color: '#FFE176' },
|
|
{ x: 2, y: 4, color: '#FFE176' },
|
|
{ x: 4, y: 4, color: '#FFE176' },
|
|
],
|
|
},
|
|
|
|
/** 心形(简化版) */
|
|
{
|
|
id: 'heart-5x5-001',
|
|
name: '心形',
|
|
category: 'object',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#F2A4C0' },
|
|
{ x: 2, y: 0, color: '#F2A4C0' },
|
|
{ x: 3, y: 0, color: '#F2A4C0' },
|
|
{ x: 0, y: 1, color: '#F2A4C0' },
|
|
{ x: 2, y: 1, color: '#F2A4C0' },
|
|
{ x: 4, y: 1, color: '#F2A4C0' },
|
|
{ x: 1, y: 2, color: '#F2A4C0' },
|
|
{ x: 2, y: 2, color: '#F2A4C0' },
|
|
{ x: 3, y: 2, color: '#F2A4C0' },
|
|
{ x: 2, y: 3, color: '#F2A4C0' },
|
|
{ x: 2, y: 4, color: '#F2A4C0' },
|
|
],
|
|
},
|
|
|
|
/** 菱形 */
|
|
{
|
|
id: 'diamond-5x5-001',
|
|
name: '菱形',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 2, y: 0, color: '#F9A857' },
|
|
{ x: 1, y: 1, color: '#F9A857' },
|
|
{ x: 2, y: 1, color: '#F9A857' },
|
|
{ x: 3, y: 1, color: '#F9A857' },
|
|
{ x: 0, y: 2, color: '#F9A857' },
|
|
{ x: 1, y: 2, color: '#F9A857' },
|
|
{ x: 2, y: 2, color: '#F9A857' },
|
|
{ x: 3, y: 2, color: '#F9A857' },
|
|
{ x: 4, y: 2, color: '#F9A857' },
|
|
{ x: 1, y: 3, color: '#F9A857' },
|
|
{ x: 2, y: 3, color: '#F9A857' },
|
|
{ x: 3, y: 3, color: '#F9A857' },
|
|
{ x: 2, y: 4, color: '#F9A857' },
|
|
],
|
|
},
|
|
|
|
/** T形 */
|
|
{
|
|
id: 't-5x5-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: '#53D1B6' },
|
|
{ x: 2, y: 0, color: '#53D1B6' },
|
|
{ x: 3, y: 0, color: '#53D1B6' },
|
|
{ x: 4, y: 0, color: '#53D1B6' },
|
|
{ x: 2, y: 1, color: '#53D1B6' },
|
|
{ x: 2, y: 2, color: '#53D1B6' },
|
|
{ x: 2, y: 3, color: '#53D1B6' },
|
|
{ x: 2, y: 4, color: '#53D1B6' },
|
|
],
|
|
},
|
|
|
|
/** U形 */
|
|
{
|
|
id: 'u-5x5-001',
|
|
name: 'U形',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#6CD2EA' },
|
|
{ x: 4, y: 0, color: '#6CD2EA' },
|
|
{ x: 0, y: 1, color: '#6CD2EA' },
|
|
{ x: 4, y: 1, color: '#6CD2EA' },
|
|
{ x: 0, y: 2, color: '#6CD2EA' },
|
|
{ x: 4, y: 2, color: '#6CD2EA' },
|
|
{ x: 0, y: 3, color: '#6CD2EA' },
|
|
{ x: 1, y: 3, color: '#6CD2EA' },
|
|
{ x: 2, y: 3, color: '#6CD2EA' },
|
|
{ x: 3, y: 3, color: '#6CD2EA' },
|
|
{ x: 4, y: 3, color: '#6CD2EA' },
|
|
],
|
|
},
|
|
|
|
/** 圆形(5x5近似) */
|
|
{
|
|
id: 'circle-5x5-001',
|
|
name: '圆形',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#9C98DE' },
|
|
{ x: 2, y: 0, color: '#9C98DE' },
|
|
{ x: 3, y: 0, color: '#9C98DE' },
|
|
{ x: 0, y: 1, color: '#9C98DE' },
|
|
{ x: 4, y: 1, color: '#9C98DE' },
|
|
{ x: 0, y: 2, color: '#9C98DE' },
|
|
{ x: 4, y: 2, color: '#9C98DE' },
|
|
{ x: 0, y: 3, color: '#9C98DE' },
|
|
{ x: 4, y: 3, color: '#9C98DE' },
|
|
{ x: 1, y: 4, color: '#9C98DE' },
|
|
{ x: 2, y: 4, color: '#9C98DE' },
|
|
{ x: 3, y: 4, color: '#9C98DE' },
|
|
],
|
|
},
|
|
|
|
/** 三角形 */
|
|
{
|
|
id: 'triangle-5x5-001',
|
|
name: '三角形',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 2, y: 0, color: '#F9A857' },
|
|
{ x: 1, y: 1, color: '#F9A857' },
|
|
{ x: 2, y: 1, color: '#F9A857' },
|
|
{ x: 3, y: 1, color: '#F9A857' },
|
|
{ x: 0, y: 2, color: '#F9A857' },
|
|
{ x: 1, y: 2, color: '#F9A857' },
|
|
{ x: 2, y: 2, color: '#F9A857' },
|
|
{ x: 3, y: 2, color: '#F9A857' },
|
|
{ x: 4, y: 2, color: '#F9A857' },
|
|
{ x: 0, y: 3, color: '#F9A857' },
|
|
{ x: 1, y: 3, color: '#F9A857' },
|
|
{ x: 2, y: 3, color: '#F9A857' },
|
|
{ x: 3, y: 3, color: '#F9A857' },
|
|
{ x: 4, y: 3, color: '#F9A857' },
|
|
{ x: 0, y: 4, color: '#F9A857' },
|
|
{ x: 1, y: 4, color: '#F9A857' },
|
|
{ x: 2, y: 4, color: '#F9A857' },
|
|
{ x: 3, y: 4, color: '#F9A857' },
|
|
{ x: 4, y: 4, color: '#F9A857' },
|
|
],
|
|
},
|
|
|
|
/** 多色星星 */
|
|
{
|
|
id: 'colorful-star-5x5-001',
|
|
name: '多色星星',
|
|
category: 'geometric',
|
|
difficulty: 3,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 2, y: 0, color: '#FFE176' }, // 顶部 - 黄色
|
|
{ x: 1, y: 1, color: '#F9A857' }, // 左上 - 橙色
|
|
{ x: 3, y: 1, color: '#F9A857' }, // 右上 - 橙色
|
|
{ x: 0, y: 2, color: '#ED6D50' }, // 左 - 红色
|
|
{ x: 2, y: 2, color: '#FFE176' }, // 中心 - 黄色
|
|
{ x: 4, y: 2, color: '#ED6D50' }, // 右 - 红色
|
|
{ x: 1, y: 3, color: '#F9A857' }, // 左下 - 橙色
|
|
{ x: 3, y: 3, color: '#F9A857' }, // 右下 - 橙色
|
|
{ x: 2, y: 4, color: '#FFE176' }, // 底部 - 黄色
|
|
],
|
|
},
|
|
|
|
/** 多色心形 */
|
|
{
|
|
id: 'colorful-heart-5x5-001',
|
|
name: '多色心形',
|
|
category: 'object',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#F2A4C0' }, // 粉色
|
|
{ x: 2, y: 0, color: '#ED6D50' }, // 红色
|
|
{ x: 3, y: 0, color: '#F2A4C0' }, // 粉色
|
|
{ x: 0, y: 1, color: '#F2A4C0' }, // 粉色
|
|
{ x: 2, y: 1, color: '#ED6D50' }, // 红色
|
|
{ x: 4, y: 1, color: '#F2A4C0' }, // 粉色
|
|
{ x: 1, y: 2, color: '#F2A4C0' }, // 粉色
|
|
{ x: 2, y: 2, color: '#ED6D50' }, // 红色
|
|
{ x: 3, y: 2, color: '#F2A4C0' }, // 粉色
|
|
{ x: 2, y: 3, color: '#ED6D50' }, // 红色
|
|
{ x: 2, y: 4, color: '#ED6D50' }, // 红色
|
|
],
|
|
},
|
|
|
|
/** 边框 */
|
|
{
|
|
id: 'frame-5x5-001',
|
|
name: '边框',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#B2D94B' },
|
|
{ x: 1, y: 0, color: '#B2D94B' },
|
|
{ x: 2, y: 0, color: '#B2D94B' },
|
|
{ x: 3, y: 0, color: '#B2D94B' },
|
|
{ x: 4, y: 0, color: '#B2D94B' },
|
|
{ x: 0, y: 1, color: '#B2D94B' },
|
|
{ x: 4, y: 1, color: '#B2D94B' },
|
|
{ x: 0, y: 2, color: '#B2D94B' },
|
|
{ x: 4, y: 2, color: '#B2D94B' },
|
|
{ x: 0, y: 3, color: '#B2D94B' },
|
|
{ x: 4, y: 3, color: '#B2D94B' },
|
|
{ x: 0, y: 4, color: '#B2D94B' },
|
|
{ x: 1, y: 4, color: '#B2D94B' },
|
|
{ x: 2, y: 4, color: '#B2D94B' },
|
|
{ x: 3, y: 4, color: '#B2D94B' },
|
|
{ x: 4, y: 4, color: '#B2D94B' },
|
|
],
|
|
},
|
|
|
|
/** 加号 */
|
|
{
|
|
id: 'plus-5x5-001',
|
|
name: '加号',
|
|
category: 'geometric',
|
|
difficulty: 1,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 2, y: 0, color: '#F2A4C0' },
|
|
{ x: 0, y: 2, color: '#F2A4C0' },
|
|
{ x: 1, y: 2, color: '#F2A4C0' },
|
|
{ x: 2, y: 2, color: '#F2A4C0' },
|
|
{ x: 3, y: 2, color: '#F2A4C0' },
|
|
{ x: 4, y: 2, color: '#F2A4C0' },
|
|
{ x: 2, y: 4, color: '#F2A4C0' },
|
|
],
|
|
},
|
|
|
|
/** 点阵 */
|
|
{
|
|
id: 'dots-5x5-001',
|
|
name: '点阵',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#79A7ED' },
|
|
{ x: 2, y: 0, color: '#79A7ED' },
|
|
{ x: 4, y: 0, color: '#79A7ED' },
|
|
{ x: 1, y: 2, color: '#79A7ED' },
|
|
{ x: 3, y: 2, color: '#79A7ED' },
|
|
{ x: 0, y: 4, color: '#79A7ED' },
|
|
{ x: 2, y: 4, color: '#79A7ED' },
|
|
{ x: 4, y: 4, color: '#79A7ED' },
|
|
],
|
|
},
|
|
|
|
/** 数字5 */
|
|
{
|
|
id: 'number-5-5x5-001',
|
|
name: '数字5',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: false,
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#FC9B6C' },
|
|
{ x: 1, y: 0, color: '#FC9B6C' },
|
|
{ x: 2, y: 0, color: '#FC9B6C' },
|
|
{ x: 0, y: 1, color: '#FC9B6C' },
|
|
{ x: 0, y: 2, color: '#FC9B6C' },
|
|
{ x: 1, y: 2, color: '#FC9B6C' },
|
|
{ x: 2, y: 2, color: '#FC9B6C' },
|
|
{ x: 2, y: 3, color: '#FC9B6C' },
|
|
{ x: 0, y: 4, color: '#FC9B6C' },
|
|
{ x: 1, y: 4, color: '#FC9B6C' },
|
|
{ x: 2, y: 4, color: '#FC9B6C' },
|
|
],
|
|
},
|
|
|
|
/** 数字6 */
|
|
{
|
|
id: 'number-6-5x5-001',
|
|
name: '数字6',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: false,
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#6CD2EA' },
|
|
{ x: 2, y: 0, color: '#6CD2EA' },
|
|
{ x: 0, y: 1, color: '#6CD2EA' },
|
|
{ x: 0, y: 2, color: '#6CD2EA' },
|
|
{ x: 1, y: 2, color: '#6CD2EA' },
|
|
{ x: 2, y: 2, color: '#6CD2EA' },
|
|
{ x: 0, y: 3, color: '#6CD2EA' },
|
|
{ x: 2, y: 3, color: '#6CD2EA' },
|
|
{ x: 1, y: 4, color: '#6CD2EA' },
|
|
{ x: 2, y: 4, color: '#6CD2EA' },
|
|
],
|
|
},
|
|
|
|
/** 数字9 */
|
|
{
|
|
id: 'number-9-5x5-001',
|
|
name: '数字9',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: false,
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#B2D94B' },
|
|
{ x: 2, y: 0, color: '#B2D94B' },
|
|
{ x: 0, y: 1, color: '#B2D94B' },
|
|
{ x: 2, y: 1, color: '#B2D94B' },
|
|
{ x: 0, y: 2, color: '#B2D94B' },
|
|
{ x: 1, y: 2, color: '#B2D94B' },
|
|
{ x: 2, y: 2, color: '#B2D94B' },
|
|
{ x: 2, y: 3, color: '#B2D94B' },
|
|
{ x: 1, y: 4, color: '#B2D94B' },
|
|
{ x: 2, y: 4, color: '#B2D94B' },
|
|
],
|
|
},
|
|
|
|
/** 多色棋盘格 */
|
|
{
|
|
id: 'colorful-checkerboard-5x5-001',
|
|
name: '多色棋盘格',
|
|
category: 'geometric',
|
|
difficulty: 3,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#FFE176' },
|
|
{ x: 2, y: 0, color: '#FFE176' },
|
|
{ x: 4, y: 0, color: '#FFE176' },
|
|
{ x: 1, y: 1, color: '#F9A857' },
|
|
{ x: 3, y: 1, color: '#F9A857' },
|
|
{ x: 0, y: 2, color: '#ED6D50' },
|
|
{ x: 2, y: 2, color: '#ED6D50' },
|
|
{ x: 4, y: 2, color: '#ED6D50' },
|
|
{ x: 1, y: 3, color: '#F9A857' },
|
|
{ x: 3, y: 3, color: '#F9A857' },
|
|
{ x: 0, y: 4, color: '#FFE176' },
|
|
{ x: 2, y: 4, color: '#FFE176' },
|
|
{ x: 4, y: 4, color: '#FFE176' },
|
|
],
|
|
},
|
|
|
|
/** 多色X形 */
|
|
{
|
|
id: 'colorful-x-5x5-001',
|
|
name: '多色X形',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#79A7ED' },
|
|
{ x: 1, y: 1, color: '#6CD2EA' },
|
|
{ x: 2, y: 2, color: '#53D1B6' },
|
|
{ x: 3, y: 3, color: '#6CD2EA' },
|
|
{ x: 4, y: 4, color: '#79A7ED' },
|
|
{ x: 4, y: 0, color: '#79A7ED' },
|
|
{ x: 3, y: 1, color: '#6CD2EA' },
|
|
{ x: 1, y: 3, color: '#6CD2EA' },
|
|
{ x: 0, y: 4, color: '#79A7ED' },
|
|
],
|
|
},
|
|
|
|
/** 箭头(向右) */
|
|
{
|
|
id: 'arrow-right-5x5-001',
|
|
name: '向右箭头',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: false,
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 2, color: '#6CD2EA' },
|
|
{ x: 1, y: 1, color: '#6CD2EA' },
|
|
{ x: 1, y: 2, color: '#6CD2EA' },
|
|
{ x: 1, y: 3, color: '#6CD2EA' },
|
|
{ x: 2, y: 0, color: '#6CD2EA' },
|
|
{ x: 2, y: 1, color: '#6CD2EA' },
|
|
{ x: 2, y: 2, color: '#6CD2EA' },
|
|
{ x: 2, y: 3, color: '#6CD2EA' },
|
|
{ x: 2, y: 4, color: '#6CD2EA' },
|
|
{ x: 3, y: 1, color: '#6CD2EA' },
|
|
{ x: 3, y: 2, color: '#6CD2EA' },
|
|
{ x: 3, y: 3, color: '#6CD2EA' },
|
|
{ x: 4, y: 2, color: '#6CD2EA' },
|
|
],
|
|
},
|
|
|
|
/** 箭头(向左) */
|
|
{
|
|
id: 'arrow-left-5x5-001',
|
|
name: '向左箭头',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: false,
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 4, y: 2, color: '#6CD2EA' },
|
|
{ x: 3, y: 1, color: '#6CD2EA' },
|
|
{ x: 3, y: 2, color: '#6CD2EA' },
|
|
{ x: 3, y: 3, color: '#6CD2EA' },
|
|
{ x: 2, y: 0, color: '#6CD2EA' },
|
|
{ x: 2, y: 1, color: '#6CD2EA' },
|
|
{ x: 2, y: 2, color: '#6CD2EA' },
|
|
{ x: 2, y: 3, color: '#6CD2EA' },
|
|
{ x: 2, y: 4, color: '#6CD2EA' },
|
|
{ x: 1, y: 1, color: '#6CD2EA' },
|
|
{ x: 1, y: 2, color: '#6CD2EA' },
|
|
{ x: 1, y: 3, color: '#6CD2EA' },
|
|
{ x: 0, y: 2, color: '#6CD2EA' },
|
|
],
|
|
},
|
|
|
|
/** 多色圆形 */
|
|
{
|
|
id: 'colorful-circle-5x5-001',
|
|
name: '多色圆形',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#FFE176' },
|
|
{ x: 2, y: 0, color: '#F9A857' },
|
|
{ x: 3, y: 0, color: '#FFE176' },
|
|
{ x: 0, y: 1, color: '#F9A857' },
|
|
{ x: 4, y: 1, color: '#F9A857' },
|
|
{ x: 0, y: 2, color: '#ED6D50' },
|
|
{ x: 4, y: 2, color: '#ED6D50' },
|
|
{ x: 0, y: 3, color: '#F9A857' },
|
|
{ x: 4, y: 3, color: '#F9A857' },
|
|
{ x: 1, y: 4, color: '#FFE176' },
|
|
{ x: 2, y: 4, color: '#F9A857' },
|
|
{ x: 3, y: 4, color: '#FFE176' },
|
|
],
|
|
},
|
|
|
|
/** 多色十字 */
|
|
{
|
|
id: 'colorful-cross-5x5-001',
|
|
name: '多色十字',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'both',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 2, y: 0, color: '#FFE176' },
|
|
{ x: 2, y: 1, color: '#F9A857' },
|
|
{ x: 0, y: 2, color: '#ED6D50' },
|
|
{ x: 1, y: 2, color: '#F9A857' },
|
|
{ x: 2, y: 2, color: '#FFE176' },
|
|
{ x: 3, y: 2, color: '#F9A857' },
|
|
{ x: 4, y: 2, color: '#ED6D50' },
|
|
{ x: 2, y: 3, color: '#F9A857' },
|
|
{ x: 2, y: 4, color: '#FFE176' },
|
|
],
|
|
},
|
|
|
|
/** 多色V形 */
|
|
{
|
|
id: 'colorful-v-5x5-001',
|
|
name: '多色V形',
|
|
category: 'geometric',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#ED6D50' },
|
|
{ x: 4, y: 0, color: '#ED6D50' },
|
|
{ x: 0, y: 1, color: '#F9A857' },
|
|
{ x: 4, y: 1, color: '#F9A857' },
|
|
{ x: 1, y: 2, color: '#FFE176' },
|
|
{ x: 3, y: 2, color: '#FFE176' },
|
|
{ x: 2, y: 3, color: '#B2D94B' },
|
|
{ x: 2, y: 4, color: '#53D1B6' },
|
|
],
|
|
},
|
|
|
|
/** 简化小猫 */
|
|
{
|
|
id: 'simple-cat-5x5-001',
|
|
name: '简化小猫',
|
|
category: 'animal',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#F2A4C0' }, // 粉色(耳朵)
|
|
{ x: 2, y: 0, color: '#ED6D50' }, // 红色
|
|
{ x: 3, y: 0, color: '#F2A4C0' }, // 粉色(耳朵)
|
|
{ x: 0, y: 1, color: '#F2A4C0' }, // 粉色
|
|
{ x: 1, y: 1, color: '#ED6D50' }, // 红色
|
|
{ x: 2, y: 1, color: '#666666' }, // 黑色(眼睛)
|
|
{ x: 3, y: 1, color: '#ED6D50' }, // 红色
|
|
{ x: 4, y: 1, color: '#F2A4C0' }, // 粉色
|
|
{ x: 0, y: 2, color: '#F2A4C0' }, // 粉色
|
|
{ x: 1, y: 2, color: '#ED6D50' }, // 红色
|
|
{ x: 2, y: 2, color: '#F2A4C0' }, // 粉色
|
|
{ x: 3, y: 2, color: '#ED6D50' }, // 红色
|
|
{ x: 4, y: 2, color: '#F2A4C0' }, // 粉色
|
|
{ x: 1, y: 3, color: '#F2A4C0' }, // 粉色
|
|
{ x: 2, y: 3, color: '#ED6D50' }, // 红色
|
|
{ x: 3, y: 3, color: '#F2A4C0' }, // 粉色
|
|
{ x: 1, y: 4, color: '#ED6D50' }, // 红色(腿)
|
|
{ x: 2, y: 4, color: '#F2A4C0' }, // 粉色(尾巴)
|
|
{ x: 3, y: 4, color: '#ED6D50' }, // 红色(腿)
|
|
],
|
|
},
|
|
|
|
/** 简化小狗 */
|
|
{
|
|
id: 'simple-dog-5x5-001',
|
|
name: '简化小狗',
|
|
category: 'animal',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#F9A857' }, // 橙色(耳朵)
|
|
{ x: 2, y: 0, color: '#ED6D50' }, // 红色
|
|
{ x: 3, y: 0, color: '#F9A857' }, // 橙色(耳朵)
|
|
{ x: 0, y: 1, color: '#F9A857' }, // 橙色
|
|
{ x: 1, y: 1, color: '#ED6D50' }, // 红色
|
|
{ x: 2, y: 1, color: '#666666' }, // 黑色(眼睛)
|
|
{ x: 3, y: 1, color: '#ED6D50' }, // 红色
|
|
{ x: 4, y: 1, color: '#F9A857' }, // 橙色
|
|
{ x: 0, y: 2, color: '#F9A857' }, // 橙色
|
|
{ x: 1, y: 2, color: '#ED6D50' }, // 红色
|
|
{ x: 2, y: 2, color: '#F9A857' }, // 橙色
|
|
{ x: 3, y: 2, color: '#ED6D50' }, // 红色
|
|
{ x: 4, y: 2, color: '#F9A857' }, // 橙色
|
|
{ x: 1, y: 3, color: '#F9A857' }, // 橙色
|
|
{ x: 2, y: 3, color: '#ED6D50' }, // 红色
|
|
{ x: 3, y: 3, color: '#F9A857' }, // 橙色
|
|
{ x: 1, y: 4, color: '#ED6D50' }, // 红色(腿)
|
|
{ x: 2, y: 4, color: '#F9A857' }, // 橙色(尾巴)
|
|
{ x: 3, y: 4, color: '#ED6D50' }, // 红色(腿)
|
|
],
|
|
},
|
|
|
|
/** 简化小鸟 */
|
|
{
|
|
id: 'simple-bird-5x5-001',
|
|
name: '简化小鸟',
|
|
category: 'animal',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#FFE176' }, // 黄色
|
|
{ x: 2, y: 0, color: '#F9A857' }, // 橙色
|
|
{ x: 3, y: 0, color: '#ED6D50' }, // 红色(嘴巴)
|
|
{ x: 0, y: 1, color: '#FFE176' }, // 黄色
|
|
{ x: 1, y: 1, color: '#F9A857' }, // 橙色
|
|
{ x: 2, y: 1, color: '#666666' }, // 黑色(眼睛)
|
|
{ x: 3, y: 1, color: '#F9A857' }, // 橙色
|
|
{ x: 4, y: 1, color: '#FFE176' }, // 黄色
|
|
{ x: 0, y: 2, color: '#FFE176' }, // 黄色
|
|
{ x: 1, y: 2, color: '#F9A857' }, // 橙色
|
|
{ x: 2, y: 2, color: '#ED6D50' }, // 红色
|
|
{ x: 3, y: 2, color: '#F9A857' }, // 橙色
|
|
{ x: 4, y: 2, color: '#FFE176' }, // 黄色
|
|
{ x: 1, y: 3, color: '#F9A857' }, // 橙色(翅膀)
|
|
{ x: 2, y: 3, color: '#ED6D50' }, // 红色
|
|
{ x: 3, y: 3, color: '#F9A857' }, // 橙色(翅膀)
|
|
{ x: 2, y: 4, color: '#ED6D50' }, // 红色(脚)
|
|
],
|
|
},
|
|
|
|
/** 简化小鱼 */
|
|
{
|
|
id: 'simple-fish-5x5-001',
|
|
name: '简化小鱼',
|
|
category: 'animal',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 1, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 1, y: 1, color: '#79A7ED' }, // 蓝色
|
|
{ x: 2, y: 1, color: '#53D1B6' }, // 青色
|
|
{ x: 3, y: 1, color: '#53D1B6' }, // 青色
|
|
{ x: 4, y: 1, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 0, y: 2, color: '#79A7ED' }, // 蓝色
|
|
{ x: 1, y: 2, color: '#53D1B6' }, // 青色
|
|
{ x: 2, y: 2, color: '#666666' }, // 黑色(眼睛)
|
|
{ x: 3, y: 2, color: '#53D1B6' }, // 青色
|
|
{ x: 4, y: 2, color: '#79A7ED' }, // 蓝色
|
|
{ x: 0, y: 3, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 1, y: 3, color: '#79A7ED' }, // 蓝色
|
|
{ x: 2, y: 3, color: '#53D1B6' }, // 青色
|
|
{ x: 3, y: 3, color: '#53D1B6' }, // 青色
|
|
{ x: 4, y: 3, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 1, y: 4, color: '#6CD2EA' }, // 浅蓝(尾巴)
|
|
{ x: 2, y: 4, color: '#79A7ED' }, // 蓝色(尾巴)
|
|
{ x: 3, y: 4, color: '#6CD2EA' }, // 浅蓝(尾巴)
|
|
],
|
|
},
|
|
|
|
/** 简化小兔子 */
|
|
{
|
|
id: 'simple-rabbit-5x5-001',
|
|
name: '简化小兔子',
|
|
category: 'animal',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#F2A4C0' }, // 粉色(左耳)
|
|
{ x: 1, y: 0, color: '#ED6D50' }, // 红色
|
|
{ x: 2, y: 0, color: '#F2A4C0' }, // 粉色
|
|
{ x: 3, y: 0, color: '#ED6D50' }, // 红色
|
|
{ x: 4, y: 0, color: '#F2A4C0' }, // 粉色(右耳)
|
|
{ x: 0, y: 1, color: '#F2A4C0' }, // 粉色
|
|
{ x: 1, y: 1, color: '#ED6D50' }, // 红色
|
|
{ x: 2, y: 1, color: '#F2A4C0' }, // 粉色
|
|
{ x: 3, y: 1, color: '#ED6D50' }, // 红色
|
|
{ x: 4, y: 1, color: '#F2A4C0' }, // 粉色
|
|
{ x: 1, y: 2, color: '#F2A4C0' }, // 粉色
|
|
{ x: 2, y: 2, color: '#666666' }, // 黑色(眼睛)
|
|
{ x: 3, y: 2, color: '#F2A4C0' }, // 粉色
|
|
{ x: 1, y: 3, color: '#F2A4C0' }, // 粉色
|
|
{ x: 2, y: 3, color: '#ED6D50' }, // 红色(鼻子)
|
|
{ x: 3, y: 3, color: '#F2A4C0' }, // 粉色
|
|
{ x: 1, y: 4, color: '#ED6D50' }, // 红色(腿)
|
|
{ x: 2, y: 4, color: '#F2A4C0' }, // 粉色
|
|
{ x: 3, y: 4, color: '#ED6D50' }, // 红色(腿)
|
|
],
|
|
},
|
|
|
|
/** 简化小鸭子 */
|
|
{
|
|
id: 'simple-duck-5x5-001',
|
|
name: '简化小鸭子',
|
|
category: 'animal',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#FFE176' }, // 黄色
|
|
{ x: 2, y: 0, color: '#F9A857' }, // 橙色
|
|
{ x: 3, y: 0, color: '#ED6D50' }, // 红色(嘴巴)
|
|
{ x: 0, y: 1, color: '#FFE176' }, // 黄色
|
|
{ x: 1, y: 1, color: '#F9A857' }, // 橙色
|
|
{ x: 2, y: 1, color: '#666666' }, // 黑色(眼睛)
|
|
{ x: 3, y: 1, color: '#F9A857' }, // 橙色
|
|
{ x: 4, y: 1, color: '#FFE176' }, // 黄色
|
|
{ x: 0, y: 2, color: '#FFE176' }, // 黄色
|
|
{ x: 1, y: 2, color: '#F9A857' }, // 橙色
|
|
{ x: 2, y: 2, color: '#ED6D50' }, // 红色
|
|
{ x: 3, y: 2, color: '#F9A857' }, // 橙色
|
|
{ x: 4, y: 2, color: '#FFE176' }, // 黄色
|
|
{ x: 1, y: 3, color: '#F9A857' }, // 橙色(翅膀)
|
|
{ x: 2, y: 3, color: '#ED6D50' }, // 红色
|
|
{ x: 3, y: 3, color: '#F9A857' }, // 橙色(翅膀)
|
|
{ x: 1, y: 4, color: '#ED6D50' }, // 红色(脚)
|
|
{ x: 2, y: 4, color: '#ED6D50' }, // 红色(脚)
|
|
{ x: 3, y: 4, color: '#ED6D50' }, // 红色(脚)
|
|
],
|
|
},
|
|
|
|
/** 简化小熊 */
|
|
{
|
|
id: 'simple-bear-5x5-001',
|
|
name: '简化小熊',
|
|
category: 'animal',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#F9A857' }, // 橙色(左耳)
|
|
{ x: 2, y: 0, color: '#ED6D50' }, // 红色
|
|
{ x: 3, y: 0, color: '#F9A857' }, // 橙色(右耳)
|
|
{ x: 0, y: 1, color: '#F9A857' }, // 橙色
|
|
{ x: 1, y: 1, color: '#ED6D50' }, // 红色
|
|
{ x: 2, y: 1, color: '#666666' }, // 黑色(眼睛)
|
|
{ x: 3, y: 1, color: '#ED6D50' }, // 红色
|
|
{ x: 4, y: 1, color: '#F9A857' }, // 橙色
|
|
{ x: 0, y: 2, color: '#F9A857' }, // 橙色
|
|
{ x: 1, y: 2, color: '#ED6D50' }, // 红色
|
|
{ x: 2, y: 2, color: '#F9A857' }, // 橙色
|
|
{ x: 3, y: 2, color: '#ED6D50' }, // 红色
|
|
{ x: 4, y: 2, color: '#F9A857' }, // 橙色
|
|
{ x: 1, y: 3, color: '#F9A857' }, // 橙色
|
|
{ x: 2, y: 3, color: '#ED6D50' }, // 红色
|
|
{ x: 3, y: 3, color: '#F9A857' }, // 橙色
|
|
{ x: 1, y: 4, color: '#ED6D50' }, // 红色(腿)
|
|
{ x: 2, y: 4, color: '#F9A857' }, // 橙色
|
|
{ x: 3, y: 4, color: '#ED6D50' }, // 红色(腿)
|
|
],
|
|
},
|
|
|
|
/** 简化小象 */
|
|
{
|
|
id: 'simple-elephant-5x5-001',
|
|
name: '简化小象',
|
|
category: 'animal',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 1, y: 0, color: '#79A7ED' }, // 蓝色
|
|
{ x: 2, y: 0, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 3, y: 0, color: '#79A7ED' }, // 蓝色
|
|
{ x: 0, y: 1, color: '#79A7ED' }, // 蓝色(鼻子)
|
|
{ x: 1, y: 1, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 2, y: 1, color: '#666666' }, // 黑色(眼睛)
|
|
{ x: 3, y: 1, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 4, y: 1, color: '#79A7ED' }, // 蓝色(鼻子)
|
|
{ x: 0, y: 2, color: '#79A7ED' }, // 蓝色
|
|
{ x: 1, y: 2, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 2, y: 2, color: '#79A7ED' }, // 蓝色
|
|
{ x: 3, y: 2, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 4, y: 2, color: '#79A7ED' }, // 蓝色
|
|
{ x: 0, y: 3, color: '#79A7ED' }, // 蓝色
|
|
{ x: 1, y: 3, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 2, y: 3, color: '#79A7ED' }, // 蓝色
|
|
{ x: 3, y: 3, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 4, y: 3, color: '#79A7ED' }, // 蓝色
|
|
{ x: 0, y: 4, color: '#79A7ED' }, // 蓝色(腿)
|
|
{ x: 1, y: 4, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 2, y: 4, color: '#79A7ED' }, // 蓝色
|
|
{ x: 3, y: 4, color: '#6CD2EA' }, // 浅蓝
|
|
{ x: 4, y: 4, color: '#79A7ED' }, // 蓝色(腿)
|
|
],
|
|
},
|
|
|
|
/** 简化小蝴蝶 */
|
|
{
|
|
id: 'simple-butterfly-5x5-001',
|
|
name: '简化小蝴蝶',
|
|
category: 'animal',
|
|
difficulty: 2,
|
|
supportSymmetry: true,
|
|
symmetryType: 'vertical',
|
|
isComplete: true,
|
|
cells: [
|
|
{ x: 0, y: 0, color: '#F2A4C0' }, // 粉色(左翅膀)
|
|
{ x: 1, y: 0, color: '#ED6D50' }, // 红色
|
|
{ x: 2, y: 0, color: '#F2A4C0' }, // 粉色
|
|
{ x: 3, y: 0, color: '#ED6D50' }, // 红色
|
|
{ x: 4, y: 0, color: '#F2A4C0' }, // 粉色(右翅膀)
|
|
{ x: 0, y: 1, color: '#F2A4C0' }, // 粉色
|
|
{ x: 1, y: 1, color: '#ED6D50' }, // 红色
|
|
{ x: 2, y: 1, color: '#666666' }, // 黑色(身体)
|
|
{ x: 3, y: 1, color: '#ED6D50' }, // 红色
|
|
{ x: 4, y: 1, color: '#F2A4C0' }, // 粉色
|
|
{ x: 0, y: 2, color: '#F2A4C0' }, // 粉色
|
|
{ x: 1, y: 2, color: '#ED6D50' }, // 红色
|
|
{ x: 2, y: 2, color: '#666666' }, // 黑色(身体)
|
|
{ x: 3, y: 2, color: '#ED6D50' }, // 红色
|
|
{ x: 4, y: 2, color: '#F2A4C0' }, // 粉色
|
|
{ x: 1, y: 3, color: '#F2A4C0' }, // 粉色(左翅膀)
|
|
{ x: 2, y: 3, color: '#666666' }, // 黑色(身体)
|
|
{ x: 3, y: 3, color: '#F2A4C0' }, // 粉色(右翅膀)
|
|
{ x: 2, y: 4, color: '#666666' }, // 黑色(身体)
|
|
],
|
|
},
|
|
];
|
|
|
|
/**
|
|
* 随机获取一个 5x5 形状
|
|
*/
|
|
export function getRandom5x5Shape(): ShapeTemplate {
|
|
const randomIndex = Math.floor(Math.random() * ALL_5X5_SHAPES.length);
|
|
return ALL_5X5_SHAPES[randomIndex];
|
|
}
|