Files
edueasy/curriculum/lectura/etapa-6.ts
T

120 lines
4.2 KiB
TypeScript

import type { Stage } from '../types'
const palabras2silabas = [
{ palabra: 'MAPA', silabas: ['MA', 'PA'], emoji: '🗺️' },
{ palabra: 'PASA', silabas: ['PA', 'SA'], emoji: '🔄' },
{ palabra: 'SALA', silabas: ['SA', 'LA'], emoji: '🏠' },
{ palabra: 'TAPA', silabas: ['TA', 'PA'], emoji: '📦' },
{ palabra: 'LATA', silabas: ['LA', 'TA'], emoji: '🥫' },
{ palabra: 'NIDO', silabas: ['NI', 'DO'], emoji: '🪺' },
{ palabra: 'DEDO', silabas: ['DE', 'DO'], emoji: '👉' },
{ palabra: 'RATO', silabas: ['RA', 'TO'], emoji: '⏰' },
{ palabra: 'MESA', silabas: ['ME', 'SA'], emoji: '🪑' },
{ palabra: 'PATO', silabas: ['PA', 'TO'], emoji: '🦆' },
{ palabra: 'LIMA', silabas: ['LI', 'MA'], emoji: '🍋' },
{ palabra: 'SOPA', silabas: ['SO', 'PA'], emoji: '🥣' },
{ palabra: 'TINA', silabas: ['TI', 'NA'], emoji: '🛁' },
{ palabra: 'MONO', silabas: ['MO', 'NO'], emoji: '🐵' },
{ palabra: 'PINO', silabas: ['PI', 'NO'], emoji: '🌲' },
{ palabra: 'LUNES', silabas: ['LU', 'NES'], emoji: '📅' },
{ palabra: 'SAPO', silabas: ['SA', 'PO'], emoji: '🐸' },
{ palabra: 'TELO', silabas: ['TE', 'LO'], emoji: '🧶' },
{ palabra: 'DAMA', silabas: ['DA', 'MA'], emoji: '👩' },
{ palabra: 'RAMA', silabas: ['RA', 'MA'], emoji: '🌿' },
]
const exercises: any[] = []
for (const { palabra, silabas, emoji } of palabras2silabas) {
const lowerPalabra = palabra.toLowerCase().replace(/[^a-z]/g, '')
const id = `lec6-palabra-${lowerPalabra}`
const letras = palabra.split('')
const conLetras = letras[0]?.toLowerCase()
const consonantDep = conLetras && ['m', 'p', 'l', 's', 't', 'n', 'd', 'r'].includes(conLetras)
? `lec4-${conLetras}-completa`
: 'lec3-u-completa'
// Leer la palabra (ver las sílabas separadas)
exercises.push({
id: `${id}-leer`,
stage: 6,
skillCode: `silabas-${lowerPalabra}`,
type: 'eleccion',
prerequisites: [consonantDep],
content: {
instruction: `Leé esta palabra: ${silabas.join('-')}`,
text: `${silabas.join(' ')}`,
audioText: `${palabra}: ${silabas.join(', ')}`,
emoji,
options: [
{ label: palabra, correct: true, id: lowerPalabra },
...palabras2silabas
.filter(p => p.palabra !== palabra)
.slice(0, 2)
.map(p => ({ label: p.palabra, correct: false, id: p.palabra.toLowerCase() })),
],
},
functionalContext: `Leer la palabra ${palabra} combinando sílabas.`,
errorType: 'silaba-dificil',
})
// Emparejar con imagen
exercises.push({
id: `${id}-imagen`,
stage: 6,
skillCode: `silabas-${lowerPalabra}`,
type: 'palabra',
prerequisites: [`${id}-leer`],
content: {
instruction: `¿Cuál palabra es esta?`,
imageEmoji: emoji,
audioText: `¿Qué palabra es?`,
options: [
...palabras2silabas
.filter(p => p.palabra !== palabra)
.slice(0, 2)
.map(p => ({ label: p.palabra, correct: false, id: p.palabra.toLowerCase() })),
{ label: palabra, correct: true, id: lowerPalabra },
{ label: 'Escuchar 👂', correct: false, id: 'escuchar' },
],
},
functionalContext: `Asociar la palabra ${palabra} con su imagen.`,
errorType: 'confusion-letra',
})
}
// Silaba order exercises
const secuencias = [
{ palabra: 'MAPA', silabas: ['PA', 'MA'], emoji: '🗺️' },
{ palabra: 'PATO', silabas: ['TO', 'PA'], emoji: '🦆' },
{ palabra: 'SAPO', silabas: ['PO', 'SA'], emoji: '🐸' },
]
for (const { palabra, silabas, emoji } of secuencias) {
const lower = palabra.toLowerCase()
exercises.push({
id: `lec6-ordenar-${lower}`,
stage: 6,
skillCode: `silabas-orden-${lower}`,
type: 'secuencia',
prerequisites: [`lec6-palabra-${lower}-leer`],
content: {
instruction: `Ordená las sílabas para formar ${palabra}`,
audioText: `Ordená para formar ${palabra}`,
sequence: silabas,
emoji,
},
functionalContext: `Ordenar sílabas para formar ${palabra}.`,
errorType: 'inversion-letra',
})
}
const stage: Stage = {
id: 6,
name: 'Sílabas y palabras de 2 sílabas',
description: 'Combinar consonantes + vocales para formar y leer palabras de 2 sílabas.',
exercises,
}
export default stage