//private bool hayNivelSiguiente() //{ // if (nivelActual == nivelActividad.experto) // return false; // else // return true; //} public ResultadoActividad ingresarLetraUsuario(string letra) { ResultadoActividad result = new ResultadoActividad(); //if (actPorTiempo) //{ // tiempoAgotado = false; // //reloj.Start(); //si es por tiempo se inicia el reloj // reloj.Enabled = true; //} result = act.ingresarLetraUsuario(letra); if (actPorTiempo && tiempoAgotado) //si es por tiempo y se agotó el mismo { result.tiempoAgotado = true; } else { result.tiempoAgotado = false; } actualizarInfoActividad(); //reloj.Stop(); //reloj.Enabled = false; tiempoAgotado = false; //se reinicia la variable return(result); }
public ResultadoActividad ingresarLetraUsuario(string letra) { ResultadoActividad result = new ResultadoActividad(); comparación comparaciónLetraUsuario; cargar resultCarga = cargar.cargada; if (swHayPalabraNueva == true) { swHayPalabraNueva = false; //si la anterior fue palabra nueva, se resetea } if (this.swHayLecciónNueva == true) { this.swHayLecciónNueva = false; //si la anterior fue lección nueva, se resetea } comparaciónLetraUsuario = chequearLetraUsuario(letra); if (comparaciónLetraUsuario == comparación.igual) //se chequea si la letra del usuario es correcta { palabraActualUsuario += letra; resultCarga = cargarSiguienteLetraLección(); result.letraCorrecta = true; } else { if (auxLetras.esLetraConAcento(letraActualLección)) { result.esperarPorAcento = true; //si antes se escribió el acento correctamente y se esperaba por la vocal correcta, pero el usuario apretó una errónea, no se le pide que escriba de nuevo el acento, sólo la vocal } result.letraCorrecta = false; } if (comparaciónLetraUsuario == comparación.esperarAcento) { result.esperarPorAcento = true; result.letraCorrecta = true; } if (this.swHayLecciónNueva) //si hay una lección nueva dentro de la misma actividad { result.nuevaLección = true; } else { result.nuevaLección = false; } //si hay aún letras en la lección o lecciones en la actividad if (resultCarga == cargar.cargada) { result.continúaActividad = true; } else { result.continúaActividad = false; } return(result); }
//private bool hayNivelSiguiente() //{ // if (nivelActual == nivelActividad.experto) // return false; // else // return true; //} public ResultadoActividad ingresarLetraUsuario(string letra) { ResultadoActividad result = new ResultadoActividad(); //if (actPorTiempo) //{ // tiempoAgotado = false; // //reloj.Start(); //si es por tiempo se inicia el reloj // reloj.Enabled = true; //} result = act.ingresarLetraUsuario(letra); if (actPorTiempo && tiempoAgotado) //si es por tiempo y se agotó el mismo result.tiempoAgotado=true; else result.tiempoAgotado=false; actualizarInfoActividad(); //reloj.Stop(); //reloj.Enabled = false; tiempoAgotado = false; //se reinicia la variable return result; }
private string elegirMensajeParaHablar(ResultadoActividad result) { string mensaje=""; if (result.letraCorrecta) mensaje = "Muy bien, "; else mensaje = "Te equivocaste, "; switch (adminAct.TipoActividad) { //=============== palabras ====================== case tipoActividad.palabras: if (adminAct.swhayPalabraNueva) { mensaje += " Terminaste de escribir " + auxLetras.traducirCarácter(adminAct.PalabraAnteriorLección) + ". Ahora escribí la palabra " + auxLetras.traducirCarácter(adminAct.PalabraActualLección); } else { if (adminAct.LetraActualLección == " ") //si terminó la palabra mensaje += " Terminaste de escribir la palabra " + auxLetras.traducirCarácter(adminAct.PalabraActualLección) + ", ahora apretá espacio"; else //si todavía queda parte de la palabra por escribir { if (result.letraCorrecta && !result.esperarPorAcento) //si es la letra correcta y no hay que esperar por el acento mensaje += " hasta ahora escribiste" + auxLetras.traducirCarácter(adminAct.PalabraActualUsuario); else if (result.letraCorrecta && result.esperarPorAcento) //si acaba de acertar el acento mensaje += auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + ". Ahora escribí la vocal " + auxLetras.obtenerVocalSinAcento(adminAct.LetraActualLección) + " para formar " + auxLetras.traducirCarácter(adminAct.LetraActualLección); else if (!result.letraCorrecta && result.esperarPorAcento) //si ya acertó el acento, pero erró la vocal que se esperaba; o si erró el tipo de acento que se esperaba { mensaje += " apretaste " + auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + " pero tenías que apretar "; if (!auxLetras.esAcento(adminAct.LetraAnteriorLección)) //si lo que tiene que escribir es el acento mensaje += auxLetras.traducirCarácter(auxLetras.obtenerAcentoDeVocal(adminAct.LetraActualLección)); else mensaje += auxLetras.traducirCarácter(auxLetras.obtenerVocalSinAcento(adminAct.LetraActualLección)); mensaje += " para escribir " + auxLetras.traducirCarácter(adminAct.LetraActualLección); if (auxLetras.esLetraConAcento(adminAct.LetraAnteriorLección) || auxLetras.esAcento(adminAct.LetraAnteriorLección)) //si ya escribió el acento mensaje += ". Ya escribiste " + auxLetras.traducirCarácter(adminAct.LetraAnteriorLección); } else if (!result.letraCorrecta && !result.esperarPorAcento) //si no es la letra esperada pero a su vez no había que esperar por la vocal del acento { mensaje += " apretaste " + auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + " pero tenías que apretar " + auxLetras.traducirCarácter(adminAct.LetraActualLección); if (adminAct.PalabraActualUsuario != "") //si el usuario ha escrito algo mensaje += ". Llevás escrito" + auxLetras.traducirCarácter(adminAct.PalabraActualUsuario); else mensaje += ". Todavía no has escrito nada"; } } } break; //=============== sílabas ====================== case tipoActividad.sílabas: if (adminAct.swhayPalabraNueva) mensaje += " Terminaste de escribir " + auxLetras.traducirCarácter(adminAct.PalabraAnteriorLección) + ". Ahora escribí la sílaba " + auxLetras.traducirCarácter(adminAct.PalabraActualLección); else if (adminAct.LetraActualLección == " ") mensaje += " Terminaste de escribir la sílaba " + auxLetras.traducirCarácter(adminAct.PalabraActualLección) + ", ahora apretá espacio"; else { if (result.letraCorrecta && !result.esperarPorAcento) mensaje += " hasta ahora escribiste" + auxLetras.traducirCarácter(adminAct.PalabraActualUsuario); if (result.letraCorrecta && result.esperarPorAcento) //si acaba de acertar el acento mensaje += auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + ". Ahora escribí la vocal " + auxLetras.obtenerVocalSinAcento(adminAct.LetraActualLección) + " para formar " + auxLetras.traducirCarácter(adminAct.LetraActualLección); else if (!result.letraCorrecta && result.esperarPorAcento) //si ya acertó el acento, pero erró la vocal que se esperaba; o si erró el tipo de acento que se esperaba { mensaje += " apretaste " + auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + " pero tenías que apretar "; if (!auxLetras.esAcento(adminAct.LetraAnteriorLección)) //si lo que tiene que escribir es el acento mensaje += auxLetras.traducirCarácter(auxLetras.obtenerAcentoDeVocal(adminAct.LetraActualLección)); else mensaje += auxLetras.traducirCarácter(auxLetras.obtenerVocalSinAcento(adminAct.LetraActualLección)); mensaje += " para escribir " + auxLetras.traducirCarácter(adminAct.LetraActualLección); if (auxLetras.esLetraConAcento(adminAct.LetraAnteriorLección) || auxLetras.esAcento(adminAct.LetraAnteriorLección)) //si ya escribió el acento mensaje += ". Ya escribiste " + auxLetras.traducirCarácter(adminAct.LetraAnteriorLección); } else if (!result.letraCorrecta && !result.esperarPorAcento) //si no es la letra esperada pero a su vez no había que esperar por la vocal del acento { mensaje += " apretaste " + auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + " pero tenías que apretar " + auxLetras.traducirCarácter(adminAct.LetraActualLección); if (adminAct.PalabraActualUsuario != "") //si el usuario ha escrito algo mensaje += ". Llevás escrito" + auxLetras.traducirCarácter(adminAct.PalabraActualUsuario); else mensaje += ". Todavía no has escrito nada"; } } break; //=============== números ====================== case tipoActividad.números: if (adminAct.swhayPalabraNueva) mensaje += " Terminaste de escribir " + auxLetras.traducirCarácter(adminAct.PalabraAnteriorLección) + ". Ahora escribí el número " + auxLetras.traducirCarácter(adminAct.PalabraActualLección); else if (adminAct.LetraActualLección == " ") mensaje += " Terminaste de escribir el número " + auxLetras.traducirCarácter(adminAct.PalabraActualLección) + ", ahora apretá espacio"; else { //if (result.letraCorrecta) // mensaje += " hasta ahora escribiste el número " + auxLetras.traducirCarácter(adminAct.PalabraActualUsuario); //else //{ // mensaje += " apretaste " + auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + " pero tenías que apretar " + auxLetras.traducirCarácter(adminAct.LetraActualLección); // if (adminAct.PalabraActualUsuario != "") //si el usuario ha escrito algo // mensaje += ". Llevás escrito" + auxLetras.traducirCarácter(adminAct.PalabraActualUsuario); // else // mensaje += ". Todavía no has escrito nada"; if (result.letraCorrecta && !result.esperarPorAcento) mensaje += " hasta ahora escribiste el número " + auxLetras.traducirCarácter(adminAct.PalabraActualUsuario); if (result.letraCorrecta && result.esperarPorAcento) //si acaba de acertar el acento mensaje += auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + ". Ahora escribí la vocal " + auxLetras.obtenerVocalSinAcento(adminAct.LetraActualLección) + " para formar " + auxLetras.traducirCarácter(adminAct.LetraActualLección); else if (!result.letraCorrecta && result.esperarPorAcento) //si ya acertó el acento, pero erró la vocal que se esperaba; o si erró el tipo de acento que se esperaba { mensaje += " apretaste " + auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + " pero tenías que apretar "; if (!auxLetras.esAcento(adminAct.LetraAnteriorLección)) //si lo que tiene que escribir es el acento mensaje += auxLetras.traducirCarácter(auxLetras.obtenerAcentoDeVocal(adminAct.LetraActualLección)); else mensaje += auxLetras.traducirCarácter(auxLetras.obtenerVocalSinAcento(adminAct.LetraActualLección)); mensaje += " para escribir " + auxLetras.traducirCarácter(adminAct.LetraActualLección); if (auxLetras.esLetraConAcento(adminAct.LetraAnteriorLección) || auxLetras.esAcento(adminAct.LetraAnteriorLección)) //si ya escribió el acento mensaje += ". Ya escribiste " + auxLetras.traducirCarácter(adminAct.LetraAnteriorLección); } else if (!result.letraCorrecta && !result.esperarPorAcento) //si no es la letra esperada pero a su vez no había que esperar por la vocal del acento { mensaje += " apretaste " + auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + " pero tenías que apretar " + auxLetras.traducirCarácter(adminAct.LetraActualLección); if (adminAct.PalabraActualUsuario != "") //si el usuario ha escrito algo mensaje += ". Llevás escrito" + auxLetras.traducirCarácter(adminAct.PalabraActualUsuario); else mensaje += ". Todavía no has escrito nada"; } } break; //=============== letras y símbolos ====================== default: if (result.letraCorrecta && !result.esperarPorAcento) mensaje += " Tecla apretada: " + auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + ". Ahora apretá la tecla " + auxLetras.traducirCarácter(adminAct.LetraActualLección); else if (result.letraCorrecta && result.esperarPorAcento) //si acaba de acertar el acento mensaje += auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + ". Ahora escribí la vocal " + auxLetras.obtenerVocalSinAcento(adminAct.LetraActualLección) + " para formar " + auxLetras.traducirCarácter(adminAct.LetraActualLección); else if (!result.letraCorrecta && result.esperarPorAcento) //si ya acertó el acento, pero erró la vocal que se esperaba; o si erró el tipo de acento que se esperaba { mensaje += " apretaste " + auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + " pero tenías que apretar "; if (!auxLetras.esAcento(adminAct.LetraAnteriorLección)) //si lo que tiene que escribir es el acento mensaje += auxLetras.traducirCarácter(auxLetras.obtenerAcentoDeVocal(adminAct.LetraActualLección)); else mensaje += auxLetras.traducirCarácter(auxLetras.obtenerVocalSinAcento(adminAct.LetraActualLección)); mensaje += " para escribir " + auxLetras.traducirCarácter(adminAct.LetraActualLección); } else if (!result.letraCorrecta && !result.esperarPorAcento) //si no es la letra esperada pero a su vez no había que esperar por la vocal del acento { mensaje += " apretaste " + auxLetras.traducirCarácter(adminAct.LetraActualUsuario) + " pero tenías que apretar " + auxLetras.traducirCarácter(adminAct.LetraActualLección); } break; } if (!result.letraCorrecta) { char letra; char.TryParse(adminAct.LetraActualLección, out letra); mensaje += elegirAyudaQuéDedoUsar(letra); } return mensaje; }
//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); } }