Sistema de Puntuación de Juego Flash (FLA+TXT+PHP)
Saludos a toda la comunidad de CristaLab!
Con ayuda de varios post que he leído he logrado elaborar un sistema (SENCILLO) para grabar la puntuación de tus juegos en flash. Aunque no utilizo la mejor manera de hacerlo sé que puede ser de ayuda para algunos por eso me animé a compartirlo.
¿Qué haremos?
Crearemos un sistema que desde flash nos permite registrar las tres (3) mejores puntuaciones de nuestro juego, registra las nuevas puntuaciones en un archivo TXT mediante PHP.
Explicación Gráfica
Empezemos Pues!
PrimerPaso
Crearemos un archivo de TXT (Bloc de Notas) y construiremos las variables en la sintaxis necesaria y lo guardaremos como "puntajes.txt"
Código :
&puesto1=pepe& &puntos1=50& &puesto2=jose& &puntos2=40& &puesto3=juan& &puntos3=30&
Segundo Paso
Ya imaginamos que tenemos nuestro juego en flash, en el cual la puntuación de almacenará en una variable llamada "puntaje"
Código ActionScript :
//Se declara la variable del puntaje var puntaje:Number= 0;
En la muestra coloque la variable dinamica para subir la puntuación por medio de un botón. La puntuación subirá 10 puntos. NOTA: Información no necesaria para lograr el tuto pero igual lo comento .
Tercer Paso
Al culminar el juego flash nos enviará a otro fotograma, el cual cargará el archivo TXT y comprobará que se cargó ademas de evaluar si se ha roto algún record. De ser así nos enviará a otro fotograma que solicita la introduccion del nombre del ususario o e caso contrarios nos muestra la puntuaciones mas altas.
En el fotograma estara las siguientes acciones: (Primero Completo y luego por partes)
Código ActionScript :
stop(); //Se carga las variables desde el TXT loadVariablesNum("puntajes.txt", 0); //Funcion e Intervalo que comprueban que se cargó correctamente function chequearCarga(){ if (puesto1 ne ""){ //Aqui Comprobamos si el jugador Rompió un Record if (puntaje>puntos3){ //Si lo rompió lo enviamos a grabar su puntaje gotoAndStop("inputnombre") clearInterval(idIntervalo); } else if (puntaje<puntos1 or puntaje<puntos2 or puntaje<puntos3){ //Si no, lo enviamos a ver los puntajes mas altos gotoAndStop("verpuntuaciones") clearInterval(idIntervalo); } } } var idIntervalo:Number = setInterval(chequearCarga, 20);
En la primera parte se carga el archivo TXT mediante loadVariablesNum
Código ActionScript :
loadVariablesNum("puntajes.txt", 0);
Luego creamos una funcion que chequea si se cargó mediante un if que pregunta si la variable puesto1 está vacía o no. Ok si no está vacío evalua si la puntuacion del usuario es mayor a la del tercer puesto.
SI RESPONDE SI: Vamos a la pantalla de introducir nombre
SI RESPONDE NO: Ve a ver los mayores puntajes y juega de nuevo!
Por ultimo la funcion se ejecuta con un intervalo.
Código ActionScript :
function chequearCarga(){ if (puesto1 ne ""){ //Aqui Comprobamos si el jugador Rompió un Record if (puntaje>puntos3){ //Si lo rompió lo enviamos a grabar su puntaje gotoAndStop("inputnombre") clearInterval(idIntervalo); } else if (puntaje<puntos1 or puntaje<puntos2 or puntaje<puntos3){ //Si no, lo enviamos a ver los puntajes mas altos gotoAndStop("verpuntuaciones") clearInterval(idIntervalo); } } } var idIntervalo:Number = setInterval(chequearCarga, 20);
En la muestra yo coloqué una animacion de carga pero es mero formalismo
Cuarto Paso
Si el usuario a superado un record se enviará a esta pantalla, Aqui se harán Varias cosas prestad atención.
Primero crearemos un Input Text que se llamará "nombre_jugador" y lo vaciaremos y un boton para enviar la info. A este fotograma le coloqué el nombre de etiqueta de "inputnombre"
Código ActionScript :
var nombre_jugador:String = ""
Crearemos un objeto de LoadVars y una función "enviarPuntuacion" que se comunicará con el archivo PHP y ordenará las puntuaciones para mostrarlas posteriormente. Esto lo hice con un if (Arcaico lo acepto) pero que cumple su función
Código ActionScript :
function enviarPuntuacion() { if(puntaje>puntos1){ puesto3=puesto2; puntos3=puntos2; puesto2=puesto1; puntos2=puntos1 puesto1=nombre_jugador; puntos1=puntaje; } else if(puntaje>puntos2){ puesto3=puesto2; puntos3=puntos2; puesto2=nombre_jugador; puntos2=puntaje; } else if(puntaje>puntos3){ puesto3=nombre_jugador; puntos3=puntaje; } envio_lv.score = "&puesto1="+puesto1+"&&puntos1="+puntos1+"&&puesto2="+puesto2+"&&puntos2="+puntos2+"&&puesto3="+puesto3+"&&puntos3="+puntos3+"&"; envio_lv.sendAndLoad("guardarpuntajes.php", recibir_lv, "POST"); } //Texto de Estado recibir_lv.onLoad = function(exito) { if (exito) { estado_txt.text = "Exito"; } else { estado_txt.text = "Error"; } };
Para quienes les gusta indagar sobre como hacer las cosas, fijense que la variable
Código ActionScript :
envio_lv.score = "&puesto1="+puesto1+"&&puntos1="+puntos1+"&&puesto2="+puesto2+"&&puntos2="+puntos2+"&&puesto3="+puesto3+"&&puntos3="+puntos3+"&";
es la que se envia por POST al archivo php y que estructuré de forma que se pueda reconocer por flash en cualquier momento.
Adicionalmete le agregué un clip de carga que se activa al presionar el botón y que se reproduce unos 60 fotogramas y me envia al fotograma de ver las puntuaciones
OK ahora al boton que enviará el nombre del usuario ejecutará la funcion de envio y tendrá el siguiente codigo:
Código ActionScript :
on (release) { enviarPuntuacion(); _root.overlay._visible=1; _root.overlay.play(); }
Quinto Paso
El Archivo PHP
El codigo basicamente lo que hace es capturar la variable que se envió desde flash y reemplaza el contenido del TXT por la variable capturada. Guarden el archivo con el nombre "guardarpuntajes.php"
Código PHP :
<?php //Sistema de Puntuaciones Flash Games - Anigrama $message = $_POST["score"]; $fn = "puntajes.txt"; if (isset($message)){ $content = stripslashes($message); $fp = fopen($fn,"w"); fputs($fp,$content); fclose($fp); } else { echo "error"; } ?>
PD: SI llegasen a tener problemas prueben cambiando los permiso a 777. Yo no necesité ahecrlos pero "Por si el caso"
Sexto Paso
Ahora el fotograma que mostrará las puntuaciones. El fotograma tiene como nombre de etiqueta "verpuntuaciones"
Acá es simple solo crearemos una funcion que cargue el archivo con un intervalos (Para actualizar) y los muestre en el flash.
Código ActionScript :
stop(); function recargar(){ //Se Recarga las variables desde el TXT loadVariablesNum("puntajes.txt", 0); }; var puntajeintervalo:Number = setInterval(recargar, 20);
Listo! Subanlo al servidor y prueben. Pueden adaptarlo a sus necesidades y a Crear Amigos míos.
Acá la Prueba Funcionando:
Prueba Online
Descarga los Archivos Base
Bueno espero sea de ayuda!
Gracias a todos los que contribuyen en CristaLab que gracias a ellos logré montar este tuto.
Anigrama - Venezuela
En Twitter @Anigrama
En Facebook Visita Nuestra Página