Comunidad de diseño web y desarrollo en internet online

TUTORIAL: Sistema de Puntuación de Juego Flash (FLA+TXT+PHP)

Citar            
MensajeEscrito el 23 Ago 2012 05:41 am
TUTORIAL PASO A PASO
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 XD 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 XD.

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! XD
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 XD

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 XD

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 XD
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" XD

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

Por Anigrama

44 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 24 Ago 2012 04:58 am
Mx, es AS2.

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

chrome
Citar            
MensajeEscrito el 24 Ago 2012 09:32 pm
Hola Anigrama, hace bastante tiempo que no pasamos a portada tutoriales de Actionscript2. Si ves que podés actualizar el tuto con un lenguaje de programación más de estos días podés probar de volver a postear y vemos qué pasa.

gracias por el aporte :)

post movido.

Por Mariux

BOFH

7756 de clabLevel

28 tutoriales
15 articulos

Genero:Femenino   Héroes Editores

Diseñadora & ilustradora

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.