private void abrirActividad() { if (listActividades.SelectedItem != null) { Lecciones formLecciones = new Lecciones(lecciones[listActividades.SelectedIndex].PathLección, lecciones[listActividades.SelectedIndex].Tipo, idUsr, lecciones[listActividades.SelectedIndex].IdLección); //el índice del listBox es el mismo que el de la lista de lecciones formLecciones.swVolviendo = false; formLecciones.Show(); this.Close(); } }
//void animarTeclado(Key teclaApretada) //{ // switch (teclaApretada) // { // case Key.A: // teclado.BeginStoryboard(tecla); // break; // case Key.B: // teclado.b.FontSize = 24; // break; // } //} private void ventana_KeyDown(object sender, KeyEventArgs e) { string textoParaHablar; ResultadoActividad result = new ResultadoActividad(); string letra = e.Key.ToString().ToLower(); try { if (e.Key == Key.RightShift || e.Key == Key.LeftShift) //si se aprieta el shift swShiftActivo = true; if (e.Key == Key.RightAlt || e.Key == Key.LeftAlt) //si se aprieta el alt swAltActivo = true; if (e.Key == Key.Capital) if (e.IsToggled) voz.hablarAsync("Bloqueador de mayúsculas activado"); else voz.hablarAsync("Bloqueador de mayúsculas desactivado"); if (e.Key == Key.NumLock) if (e.IsToggled) voz.hablarAsync("Bloqueador de números activado"); else voz.hablarAsync("Bloqueador de números desactivado"); bool swArribaEñe = false; if (adminPref.lugarDelAcento == lugarAcento.arribaDeLaEñe) swArribaEñe = true; letra = auxLetras.corregirCarácter(letra, swShiftActivo, swAltActivo, swArribaEñe); if (auxLetras.esCarácterLegible(letra)) { if (letra == "space") letra = " "; result = adminAct.ingresarLetraUsuario(letra.ToString()); if (result.continúaActividad) { if (result.letraCorrecta && !result.esperarPorAcento) //si la letra es correcta pero no hay que esperar por una vocal por el acento { posiciónCarácterActualEnPalabra++; } } else { MediaPlayer reproductor = new MediaPlayer(); //se reproduce el sonido reproductor.Close(); string rutaInicial = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + @"\Recursos\Sonidos\"; if (File.Exists(rutaInicial + "finActividad.wav")) { reproductor.Open(new Uri(rutaInicial + "finActividad.wav")); reproductor.Play(); } adminEst.guardarEstadísticas(idUsuario, idActividad, adminAct.IdLecciónActual); //se guarda la estadística string mensaje = "Muy bien! Terminaste todas las lecciones de esta actividad para practicar "; switch (adminAct.TipoActividad) { case tipoActividad.palabras: mensaje += " palabras"; break; case tipoActividad.sílabas: mensaje += " sílabas"; break; case tipoActividad.letras: mensaje += " letras"; break; case tipoActividad.números: mensaje += " números"; break; case tipoActividad.símbolos: mensaje += " símbolos"; break; } mensaje += "!. Ahora vas a ir al menú principal así podés elegir otra actividad para seguir practicando"; voz.hablar(mensaje); //Lecciones ventanaAct = new Lecciones(rutaAct, tipoAct, idUsuario); //ventanaAct.swVolviendo = true; //ventanaAct.Show(); //this.Close(); Actividades ventanaAct = new Actividades(idUsuario); ventanaAct.swVolviendo = true; ventanaAct.Show(); this.Close(); return; } textoParaHablar = elegirMensajeParaHablar(result); if (result.letraCorrecta) //se cargan las estadísticas adminEst.cargarLetraAcierto(char.Parse(letra)); else adminEst.cargarLetraError(char.Parse(letra)); medidor1.actualizarGráfico(adminEst.estadística.aciertos, adminEst.estadística.errores, miPincel); //se actualiza el medidor if (result.tiempoAgotado) textoParaHablar += ", tiempo agotado"; if (adminAct.swhayPalabraNueva) cargarPalabra(); if (adminAct.swhayLecciónNueva) adminEst.guardarEstadísticas(idUsuario, idActividad, adminAct.IdLecciónAnterior); //cambiar 1,1 por el número de la act y de la lecc e.Handled = true; //se evita que se procese la tecla en el sistema, esto por los acentos y diéresis //se actualizan las estadísticas actualizarTxtEstadísticas(); animarTexto(); voz.hablarAsync(textoParaHablar); } if (e.Key == Key.Escape) //si aprieta escape, volver a las lecciones { Lecciones ventanaAct = new Lecciones(rutaAct, tipoAct, idUsuario, idActividad); ventanaAct.swVolviendo = true; ventanaAct.Show(); this.Close(); } if (e.Key == Key.F1) //F1, recordar texto actual a escribir y lo ya escrito { recordarPalabraActual(); } if (e.Key == Key.F2) //F2, deletrear palabra { deletrearPalabraActual(); } if (e.Key == Key.F3) //F3, ayuda de qué dedo apretar { char miLetra; char.TryParse(adminAct.LetraActualLección, out miLetra); voz.hablarAsync(elegirAyudaQuéDedoUsar(miLetra)); } if (e.Key == Key.F4) //F4, cambia el estado de visibilidad del teclado en pantalla { if (miTeclado.IsVisible) { miTeclado.Visibility = Visibility.Hidden; txtTexto.Margin = new Thickness(53, this.Width / 4, 49, 0); voz.hablarAsync("Ocultando el teclado en pantalla"); } else { miTeclado.Visibility = Visibility.Visible; txtTexto.Margin = new Thickness(53, 36, 49, 0); voz.hablarAsync("Haciendo visible el teclado en pantalla"); } } if (e.Key == Key.F5) //F5, cambiar el acento entre la derecha de la eñe y arriba de la misma { if (adminPref.lugarDelAcento == lugarAcento.arribaDeLaEñe) { adminPref.lugarDelAcento = lugarAcento.derechaDeLaEñe; voz.hablarAsync("Configurando el acento agudo a la derecha de la eñe"); } else { adminPref.lugarDelAcento = lugarAcento.arribaDeLaEñe; voz.hablarAsync("Configurando el acento agudo arriba y a la derecha de la eñe"); } } if (e.Key == Key.F6) //F6, lee las estadísticas { actualizarMensajeEstadísticasVoz(); } if (e.Key == Key.F9) //F9, abre el editor de actividades { abrirActividades(); } if (e.Key == Key.F8) //F8, abre el estadísticas { abrirEstadísticas(); } if (e.Key == Key.F12) //F12, abre las preferencias { abrirPreferencias(); } if (e.Key == Key.RightCtrl || e.Key == Key.LeftCtrl)//si usa las flechas { voz.callar(); } //e.Handled = true; //se evita que se procese la tecla en el sistema, esto por los acentos, diéresis y efes } catch (Exception ex) { MessageBox.Show("Para enviar al desarrollador. Mensaje del error: " + ex.Message); } }