Hola. Tengo un problema con el juego del "ahorcado" en flash. Lo descargué de internet pero tiene errores. Necesito ayuda para corregirlos. Los errores son: Al presionar una tecla correcta, aparece bien, pero es presionan la misma tecla varias veces, aparece el mensaje de que la palabra es correcta cuando no es así. Y si presiono enter se pasa al primer frame. El archivo del juego está en http://www.programacion.com/codigo/84/
Gracias.
Respuesta de edier
1
1
edier, tengo experiencia de varios proyectos de desarrollo de multimedia...
Espero que mis respuestas te satisfagan. Bueno, lo de presionar el enter ocurre solo cuando estas en el flash y das Probar Película (Ctrl+Enter). Lo que pasa es que así, cuando das Enter pasas al siguiente frame. Cuando exportas la película, el .swf ya no le ocurre eso. Lo otro, la solución que le encontré fue crear un array que guarde las teclas que vayas presionando, entonces lo primero que haces es verificar si la tecla ya la presionaste, si no la he tecleado procedo como hacia antes. Si la tecla ya la presionaste una vez no ocurre nada. De esta forma, puedes incluso poner visualmente las teclas que has presionado. Aquí te mando como quedaría el código modificado. /*************************************************************************** Al cargar inicializa variables *****************************************************************************/ onClipEvent (load) { malas = 0; buenas = 0; arrayLetraTecleadas = new Array(); } /*************************************************************************** Al cargar inicializa variables *****************************************************************************/ onClipEvent (keyDown) { var numLetra = Key.getCode(); //ASCII de la tecla //verifico si la tecla ya ha sido tecleada var len = arrayLetraTecleadas.length; var enc = false; for (var i = 0; i<len && !enc; i++) { enc = arrayLetraTecleadas == numLetra; } //y solo si no encontre la tecla, es decir que no la he tecleado, puedo proceder //y no sea la tecla Enter if (!enc && numLetra != Key.ENTER) { //lo primero que hago es guardar la tecla como tecleada arrayLetraTecleadas.push(numLetra); var numeroLetra = 0; //Calcula frame var acierto = false; //Bandera var clip = ""; //Vacía el MC for (var i = 0; i<_root.longitud; i++) { //Barre palabra if (_root.palabra.charCodeAt(i) == numLetra) { //Compara valores acierto = true; //Bandera en verdadero buenas++; //Incrementa contador numeroLetra = numLetra-_root.RESTA_ASCII; //Calcula frame clip = _root["letra"+(i+1)]; //Pasa valor a la variable clip.gotoAndStop(numeroLetra); //Despliega acierto } } } else { acierto = true; } if (acierto == false) { //Verifica la bandera malas++; //Incrementa fallas _root.horca.gotoAndStop(malas+1); //Despliega ahorcado if (malas == 4) { //Verifica fallas _root.gotoAndPlay("PERDIO"); //Puff :( } } if (buenas == _root.longitud) { //Verifica si ganó _root.gotoAndPlay("GANO"); //Ohhh :) } } /****************************************************************************/