Comunidad de diseño web y desarrollo en internet online

com qué creo un juego de memoria, Array o bucles con boolean

Citar            
MensajeEscrito el 03 Feb 2009 05:48 pm
Hola a todos.

Estoy intentando hacer un juego de memoria (memorama), de esos que hay que voltear dos cartas y si son iguales que se queden volteadas y si no, que regresen a su posición inicial.

Lo he intentado con booleanos, comprobando el estado en que se encuentran, pero es un poco complicado cuando ya son más de 3 pares. Ya que no tengo bien controlado, aun, lo de utilizar arrays.

Alguien me podría orientar, o si conocen algún tuto, porque no encontre.
De antemano, gracias.
y Saludos.

Por crokis

34 de clabLevel



 

safari
Citar            
MensajeEscrito el 05 Feb 2009 05:41 am
Bueno, mira, supongamos que tienes varios movieclips cada movieclip, tiene dos estados, que llamaremos "tapado" y "destapado" ok?

Pense que seria facil crear este codigo, pero no fue tan facil como pense cuando inicie a programarlo :P de todas forma ya hice la mayor parte, y funciono, te explico:

Vamos a crear un MovieClip vacio en el escenario que llamaremos "memorama_mc" y pondremos todo el codigo dentro de memorama_mc:

Código ActionScript :

var intervalo:Number;
var imagenes_arr:Array = new Array();
imagenes_arr.push("uno_mc");
imagenes_arr.push("dos_mc");
imagenes_arr.push("tres_mc");
imagenes_arr.push("cuatro_mc");
imagenes_arr.push("cinco_mc");

//Creamos las imagenes del memorama
crear( imagenes_arr, "tapa_mc" );
//Creamos los duplicado de las imagenes del memorama
crear( imagenes_arr, "tapa_mc" );
//Ordenamos todas las imagenes de forma aleatoria
ordenar();

function crear( img_arr:Array, tapa_str:String )
{
   var aux:MovieClip;
   var nom:String;
   
   for( var i in img_arr )
   {
      nom = ( this["mem" + i] == undefined )? "mem" + i : "cop" + i ;
      aux = this.createEmptyMovieClip(nom, this.getNextHighestDepth());
      aux.e = true;//Estado tapado
      aux.t = tapa_str;//id de biblioteca de la tapa
      aux.f = img_arr[i];//id de biblioteca de la imagen
      aux.i = i;
      aux.attachMovie( aux.t, "art", 0);      
      aux.onRelease = function( Void ):Void
      {
         this.cambio();
         this._parent.verificar( this );
      };
      aux.cambio = function( Void ):Void
      {
         this.e = !this.e;
         this.attachMovie( this.e ? this.t : this.f, "art", 0);
      };
   }
}

function verificar( aux:MovieClip ):Void
{
   for(var i in this)
   {
      if( this[i] != aux && this[i].onRelease != undefined )
      {
         if( aux.i == this[i].i && !this[i].e )
         {
            delete aux.onRelease;
            delete this[i].onRelease;
            completo();
            break;
         }
         else if( !this[i].e )
         {
            for(var j in this)this[j].enabled = false;
            intervalo = setInterval(this,"fallo",500,this[i],aux);
            break;
         }
      }
   }
}

function ordenar( Void ):Void
{
   for(var i in this)
   {
      this[i]._x = (this[i]._width + 10) * this[i].i;
      this[i]._y = (i.substr(0,3) == "cop")? this[i]._width + 10 : 0;
   }
}

function fallo(aux1:MovieClip, aux2:MovieClip)
{
   clearInterval(intervalo);
   for(var i in this)this[i].enabled = true;
   aux1.cambio();
   aux2.cambio();
}

function completo(Void):Void
{
   for(var i in this) if(this[i].onRelease) return;
   //Aqui incia el codigo de lo que pasa si ganaste
   trace("GANASTE");
}


La funcion "ordenar" ordena todo de forma normal, te toca a ti que los ordene de forma aleatoria para que sea un juego en realidad.

"uno_mc" "dos_mc" "tres_mc" "cuatro_mc" "cinco_mc" y "tapa_mc" son ids de clips en la biblioteca que representan las imagenes de las cartas y "tapa_mc" representa la parte trasera de la carta, osea como si estuviera volteada.

Ya esta el mecanismo, solo falta eso de "ordenar", :P Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 19 Feb 2009 03:53 pm
juenas jóvenes...
pos les cuento que lo intente pero la cosa no me funciona, no se si es que le asigne el tapado a un solo MC y el destapado a las imágenes correspondientes...
si a alguno le funciono, favor postear la respuesta y en lo posible un tutorial o que se yo, el archivo para ver como se hace...

la mera que soy re bruto para esto de la programación, si alguien me puede ayudar... favor comunicarse a estas mail:
[email protected]
[email protected]

gracias jóvenes... es urg....

:lol: :lol: :lol:

Por Phixin

4 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Feb 2009 06:44 pm
En realidad es facil, uno_mc, dos_mc, etc... son movieclips de la bilbioteca vinculados a ActionScript, y "tapa_mc" es otro movieclip de la biblioteca vinculado a actionscript tambien, pero este tiene la funcion de la parte trasera de la carta. preferentemente todos los movieclips deben medir exactamente lo mismo, de otro modo quedara todo descuadrado.

Actualemente el script ordena de forma muy facil las cartas sobre el escenario, la funcion "ordenar" debe ser reescrita para que coloque al azar todas las imagenes y sea un verdadero juego de memoria. Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox

 

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