Cristalab

Ejemplo de guía para Mapas en juegos tipo Mario 3

Por: AXM + 02.11.2007

Este es un mapa que trata de imitar al de Mario 3. Esta hecho en ActionScript 3.


(Mover las flechas del teclado para que se mueva Mario)


En el FLA hay un MovieClip que se llama puntos. Aquí dentro están todos los puntos que le van a decir a Mario donde parar. También hay otro Movie Clip que se llama lineas, que le sirve a Mario de Guía.

Lo que me gusta del código, es que Mario se guía no por el código, si no por los puntos y lineas que hay en el FLA. Esto hace que uno pueda hacer cualquier camino, en cualquier configuración de manera gráfica, y no por código.
En esta flash, se entiende mejor como funciona.


(Mover las flechas del teclado para que se mueva Mario)


Código :


package
{
   import flash.display.*;
   import flash.events.*;
   import flash.ui.Keyboard;
   import flash.utils.Timer;

   public class Mario extends MovieClip
   {

      private var enMovimiento:Boolean = false;
      private var temporizador:Timer = new Timer(10,0);
      private var teclaPulsada:uint;
      private var contendorPuntos:Sprite = new Sprite();

      private var contactoConCamino_Arriba:Boolean;
      private var contactoConCamino_Abajo:Boolean;
      private var contactoConCamino_Izquierda:Boolean;
      private var contactoConCamino_Derecha:Boolean;

      public function Mario()
      {
         lineas.visible = false;
         puntos.visible = false;
         stage.addEventListener(KeyboardEvent.KEY_DOWN,tecla);
         temporizador.addEventListener(TimerEvent.TIMER,mover);
      }
      private function tecla(e:KeyboardEvent):void
      {
         if (enMovimiento == false) {
            this.contactoConCamino_Arriba= false;
            this.contactoConCamino_Abajo= false;
            this.contactoConCamino_Izquierda= false;
            this.contactoConCamino_Derecha= false;

            teclaPulsada = e.keyCode;
            palparCaminos();
            temporizador.start();
            enMovimiento = true;
         }

      }
      private function mover(e:TimerEvent):void
      {

         var velocidad:uint = 2;

         if (teclaPulsada == 39 && this.contactoConCamino_Derecha == true) // 39 es RIGHT
         {
            mario.x += velocidad;
         }
         if (teclaPulsada == 37 && this.contactoConCamino_Izquierda== true) // 37 es LEFT
         {
            mario.x -= velocidad;
         }
         if (teclaPulsada == 38 && this.contactoConCamino_Arriba == true) // 39 es UP
         {
            mario.y -= velocidad;
         }
         if (teclaPulsada == 40 && this.contactoConCamino_Abajo== true) // 40 es DOWN
         {
            mario.y += velocidad;
         }

         for (var i:uint = 0; i <= puntos.numChildren-1; i++) {
            // En el mc llamado mario hay un MC llamado centro que sirve como detector..
            // ... de coliciones
            // Si centro coliciona con cualquier punto se detiene
            if (mario.centro.hitTestObject(puntos.getChildAt(i)) == true) {
               temporizador.stop();
               enMovimiento = false;
            }
         }
      }
      // Funcion que le indica a Mario, que caminos puede cojer
      // Mas tecnico. Dependiendo de que lineas tenga arriba, abajo, derecha o izquierda...
      // ...se podra mover en una direccion
      // En el MC llamado mario hay 4 MC que sirven como vigotes de un gato, para saber..
      // que lineas tiene cerca

      private function palparCaminos():void
      {
         for (var i:uint = 0; i <= lineas.numChildren-1; i++) {
            if (mario.arriba.hitTestObject(lineas.getChildAt(i)) == true) {
               this.contactoConCamino_Arriba= true;
            }
            if (mario.abajo.hitTestObject(lineas.getChildAt(i)) == true) {
               this.contactoConCamino_Abajo= true;
            }
            if (mario.izquierda.hitTestObject(lineas.getChildAt(i)) == true) {
               this.contactoConCamino_Izquierda= true;
            }
            if (mario.derecha.hitTestObject(lineas.getChildAt(i)) == true) {
               this.contactoConCamino_Derecha= true;
            }
         }
      }
   }
}


Descargar archivos

Etiquetas actionscript_3

Comentarios | Enviar un comentario
Buen tip, muy útil para muchos tipos de juegos Thumbs up
Por: Zguillez
Estupendo miau

Me ha gustado mucho tu tip Thumbs up
Por: XKlibur
Que buen tip, fácil de entender y listo para usar! Sonrisa
Por: Sisco
excelente miau Bien
Por: eldervaz
K buen tip, se agradece.
*Pensando en hacerse un Pacman miau
Por: Otaku RzO
Muy buen tip, pero no estaria de mas agregar un poco mas de comentarios, para los despistados como yo que aun se les van algunas cosas, serviria mucho para los que quieren meterse de lleno a actionscript 3, puesto que veo que efectivamente, estamos hablando ahora si por completo de POO, y aun hay cosas que se me escapan de eso.
Gracias amigo, repito, excelente tip.
Por: Señor Oz_blog

Señor Oz_blog :

Muy buen tip, pero no estaria de mas agregar un poco mas de comentarios, para los despistados como yo que aun se les van algunas cosas


Lo siento Señor Oz, pero el infinito sistema burocrático de Cristalab me impide hacerlo.
Por: AXM

AXM :

Señor Oz_blog :

Muy buen tip, pero no estaria de mas agregar un poco mas de comentarios, para los despistados como yo que aun se les van algunas cosas


Lo siento Señor Oz, pero el infinito sistema burocrático de Cristalab me impide hacerlo.
Excuse me WTF?
Por: Freddie
no entendi
Por: yo_blog

yo_blog :

no entendi
¿Quieres que protección social te de una subvención de por vida?
Por: Freddie
es una porquria el juego pero esta re bueno
Por: cachi_blog
cachi...no es un juego mmmm , solo son los "movimientos" del que vendria a interpretarse como el personaje...en este caso llamado mario. Estoy pensando en crearme un pacman....despues veo...buen tip!

muy util para algunos que todavia no estan a fondo con el flash, y AS,

saludos a todos!
Por: brian_linkin_park@live.co
Me parece muy bueno el codigo, ademas es sencillo de entender aunque hay algunas cosas que no he estudiado mucho las pondre en practica, soy fanatico de diseñar juegos en Flash, pero aun soy un principiante, he creado varios demos de movimientos, animaciones y minijuegos con la utilizacion de Java Script en flash, pero aun tengo mucho que aprender... mis juegos se basan en estilos tradicionales como Mario, Pokemon, Zelda... y algunos con acciones de click, como MoNOPolY... en fin... pero solo son pequeños Jueguitos, me gustaria compartir mis conocimientos e ideas con alguien que le interecen estos temas y ampliar juntos nuestros conocimientos... gracias Interesados en ayudarme Comunicarce: okiloco2@hotmail.com
Por: okiloco_blog
mira cuidate mucho para `no tepa como ami
Por: hola _blog
estoy pensando en hacer algo parecido pero con el mouse.... lo veo un poco mas complicado.
Por: katze
no lo e entendido
Por: piolin-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.