Foros del Web » Creando para Internet » Flash y Actionscript »

Juego de cartas > ayuda

Estas en el tema de Juego de cartas > ayuda en el foro de Flash y Actionscript en Foros del Web. Estoy intentando hacer una especie de juego con cartas. Comento brevemente los puntos basicos que me gustaria conseguir, el punto 1 referente a conectar con ...
  #1 (permalink)  
Antiguo 08/02/2009, 16:37
 
Fecha de Ingreso: febrero-2009
Mensajes: 12
Antigüedad: 8 años, 10 meses
Puntos: 0
Juego de cartas > ayuda

Estoy intentando hacer una especie de juego con cartas. Comento brevemente los puntos basicos que me gustaria conseguir, el punto 1 referente a conectar con una base de datos puede esperar porque no me hace mucha falta para lo que es el desarrollo del resto, pero los demas me urgen mas y no se como meterles mano.


PUNTOS:

1 ) Quiero conectar a una base de datos para traerme los datos de cada carta, que sea necesaria y guardarlos en una matriz. Ya lo tengo programado en php con llamadas al servidor mysql, en flash no se si sera posible... pero bueno partamos de la idea de que tengo un array con los datos de las cartas ya averiguare como conectar en un futuro.

2.1) Crear las cartas, segun el codigo de cada carta (guardado en la matriz) cargar la imagen que corresponda con la misma cuando esta tenga que entrar en juego.

2.2) por otra parte, quiero conseguir una animacion de volteado de carta, he intentado con la herramienta de giro en 3d pero por asi decirlo las dos caras de lo que seria la carta son la misma imagen, no se como crear el amberso y el reverso de la carta.

3) (este paso lo tengo basicamente dominado) quisiera sacar cartas de lo que seria un mazo, y moverlas a diferentes zonas de la mesa cuando se cumplieran ciertas condiciones que iria validando el codigo automaticamente.

4) conseguir que una carta interacione con otra. ejemplo si A tiene mas numero que B, A permanece en juego y B es eliminada.


Me estoy imaginando que en lugar de guardar los datos de las cartas en matrices deberia usar objetos... de todas formas si me podeis ayudar con el punto 2.1 y 2.2 es lo que menos idea tengo...

Gracias de antemano, si algo no queda claro lo explico mejor pero de principio no quiero cansar, saludos.
  #2 (permalink)  
Antiguo 08/02/2009, 20:47
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 13 años
Puntos: 43
Respuesta: Juego de cartas > ayuda

Hola Balkar !

Con respecto al punto 2.1:

Si, lo mejor sería que utilizaras objetos, tendrás que abstraer el concepto de carta y implementarlo en actionscript.

No conozco las reglas del juego, pero por lo que has comentado, la carta tendría atributos como valor y imagen, comportamientos como conocer si una carta es mayor a la actual, etc...

Por ejemplo:
Código actionscript:
Ver original
  1. public class Carta
  2. {
  3.     private _valor:int;
  4.     private _imagen:String;
  5.  
  6.     public function Carta(valor:int, imagen:String)
  7.     {
  8.         _valor = valor;
  9.         _imagen = imagen;
  10.     }
  11.    
  12.     public function esMayor(carta:Carta):Boolean
  13.     {
  14.         if(carta.valor > _valor) {
  15.             return true;
  16.         }
  17.         return false;
  18.     }
  19.  
  20.     public function get valor():int
  21.     {
  22.         return _valor;
  23.     }
  24. }

De esta forma crearías instancias de la clase Carta y las almacenarías en alguna colección (ArrayCollection), es un pequeño ejemplo que te puede servir de punto de partida.

Un saludote !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #3 (permalink)  
Antiguo 09/02/2009, 10:08
 
Fecha de Ingreso: febrero-2009
Mensajes: 12
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Juego de cartas > ayuda

hmm gracias amigo me has clarificado un tanto las cosas, ya pensare que métodos concretos me harían falta.

Posteriormente tendria un array de objetos carta, o seria mejor hacer otra clase mazo por ejemplo que contuviera cartas? creo que igual era mejor usar el array para poder usar las funciones propias de arrays.



Sobre la imagen y su relacion:

Cuando defines imagen de tipo string, que se supone que debe ir ahi la ruta a la imagen? un codigo identificativo? una asociacion con otra instancia de tipo imagen? cual seria la mejor forma de relacionar las imagenes con los objetos carta?
  #4 (permalink)  
Antiguo 09/02/2009, 16:56
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 13 años
Puntos: 43
Respuesta: Juego de cartas > ayuda

Hola Balkar !

Los códigos que te voy a mostrar son en Actionscript 3.0, espero que sigas esa línea porque te va a facilitar el desarrollo del juego.

Puedes utilizar un vector de objetos definiendo una variable del tipo Array, en As3.0 tienes algunas clases para manejar colecciones de objetos como ArrayCollection.

En cuando al atributo depende mucho de los requerimientos, si quieres que la imagen guarde un estado y comportamiento, en este caso si definiría una clase Imagen y la asociaría con la clase Carta, yo utilicé una cadena para el atributo imagen, solamente quería que almacenara la ruta y en base a eso, por ejemplo cargarla en un movieclip.

Ahora va lo bueno, te va a facilitar muchísimo el cómo trabajarás con flash.
A los movieclips les puedes vincular una clase definida por el usuario (por ti), en este caso puedes definir una clase Carta y vincularla con algún movieclip de la librería.

Creas un movieclip para que sea la carta, ya la tienes bien decoradita y toda la cosa, ahora a ese movieclip lo vinculas con una clase donde definiste comportamientos específicos:

Carta.as
Código actionscript:
Ver original
  1. package
  2. {
  3.     import flash.display.MovieClip;
  4.     import flash.display.Loader;
  5.     import flash.events.Event;
  6.     import flash.events.MouseEvent;
  7.     import flash.net.URLRequest;
  8.    
  9.     public class Carta extends MovieClip
  10.     {
  11.         private var _valor:int;
  12.         private var _imagen:String;
  13.         private var _loader:Loader;
  14.    
  15.         public function Carta(valor:int, imagen:String)
  16.         {
  17.             _valor = valor;
  18.             _imagen = imagen;
  19.                         //Objeto que se encarga de cargar la imagen.
  20.             _loader = new Loader();
  21.             _loader.visible = false;
  22.             loadImage();
  23.             addChild(_loader);
  24.             addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
  25.             addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
  26.         }
  27.        
  28.         private function onMouseDown(evt:MouseEvent):void
  29.         {
  30.             _loader.visible = true;
  31.         }
  32.        
  33.         private function onMouseUp(evt:MouseEvent):void
  34.         {
  35.             _loader.visible = false;
  36.         }
  37.        
  38.         public function esMayor(carta:Carta):Boolean
  39.         {
  40.             if(carta.valor > _valor) {
  41.                 return true;
  42.             }
  43.             return false;
  44.         }
  45.        
  46.         private function loadImage():void
  47.         {
  48.             var request:URLRequest = new URLRequest(_imagen);
  49.             _loader.load(request)
  50.         }
  51.    
  52.         public function get valor():int
  53.         {
  54.             return _valor;
  55.         }
  56.     }
  57. }

Debes de heredar de la clase MovieClip porque es una vinculación con un movieclip de la librería, ahora buscas en la librería el movieclip carta, das click derecho -> vincular y en el campo clase escribes el nombre de la clase que definiste, que es Carta.

Ahora en la raiz de ru proyecto coloca el siguiente código:
Código actionscript:
Ver original
  1. var carta1:Carta = new Carta(5, "carta1.jpg");
  2. carta1.x = 100;
  3. carta1.y = 100;
  4.  
  5. var carta2:Carta = new Carta(10, "carta2.jpg");
  6. carta2.x = 400;
  7. carta2.y = 100;
  8.  
  9. trace(carta2.esMayor(carta1));
  10.  
  11. addChild(carta1);
  12. addChild(carta2);

Ahora te daras cuenta cuando compiles el proyecto que se han añadido 2 movieclip carta, cuando le doy click a una, me muestra la imagen de la carta y cuando suelto el click del mouse la oculta, todos esos comportamientos los definí en la clase que coloqué arriba.

Ahora ya nada mas es cosa que experimentes y practiques.

Te voy a dejar el fla del ejemplo por si han quedado algunas dudas.

Un saludote !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.

Última edición por cvander; 06/09/2010 a las 10:58
  #5 (permalink)  
Antiguo 10/02/2009, 11:37
 
Fecha de Ingreso: febrero-2009
Mensajes: 12
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Juego de cartas > ayuda

Que grande eres jahepi !!!

Pero no ha ido todo bien...
Estoy esperando a ver si me puedo bajar el adjunto que has subido, que aun no me deja dice que esta pendiente de validadcion, igual lo podias subir a otro sitio y pasarme el link... a mediafire por ejemplo.

Yo he intentado pegar el codigo y vincular las cosas pero con poco exito, vamos que no salia la imagen de la carta y errores algun viaje daba error de tipo:

1037: Los paquetes no se pueden anidar.

Seguramente será mi culpa que soy muy novato en esto, ya seguire intentandolo que tampoco quiero abusar de todas formas te detallo lo que he hecho por si ves algun fallo y me puedes explicar mas en detalle...


Pegar el codigo del package en el fotograma 1, y lo siguiente en el 2.

Meter una imagen de mi disco duro a la libreria, "carta1.jpg" convertirla en simbolo> movieclip
boton derecho / propiedades --- vinculación
en clase escribo Carta, y clase base la que aparece: flash.display.MovieClip

aqui me dice no se pudo encontrar la definicion de esa clase en la ruta de clases que mal.... Ya siento tener que molestarte de nuevo....

he probado cambiando el nombre de los objetos en el constructor y diversas formas hasta que me he vuelto loco jeje, bueno pues eso, gracias nuevamente ;)
  #6 (permalink)  
Antiguo 10/02/2009, 19:36
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 13 años
Puntos: 43
Respuesta: Juego de cartas > ayuda

Hola Balkar !

No es ninguna molestia, al contrario, es un gusto poder ayudarte.

Subí el archivo a mediafire.
http://www.mediafire.com/?k14ozdldwtj

Como es la primera vez que adjunto material desde los foros, no sabía hasta ahora que lo tiene que validar por lo que veo un moderador.

Un saludo !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #7 (permalink)  
Antiguo 12/02/2009, 12:34
 
Fecha de Ingreso: febrero-2009
Mensajes: 12
Antigüedad: 8 años, 10 meses
Puntos: 0
De acuerdo Respuesta: Juego de cartas > ayuda

Muchas gracias jahepi!! ya he conseguido avanzar bastante con el jueguito XD y me voy aclarando con el funcionamientod e flash.

Me han surgido nuevas dudas que seguro que tu conoces,

1) sobretodo me urge ahora, una forma de hacer un digamos... "press any key to continue" supongo que ya me entenderas, pq en el escenario van pasando cosas pero no se ven y solo se queda la ultima accion.

2) Es posible sacar la salida, en el escenario?

3) las cartas aparecen en pantalla cuando quiero, pero como habria que hacer para que en vez de aparecer instantaneamente ocurriera una animacion? crear otro movieclip que cargue la imagen? cualquier idea sera bien recivida.

;) Saludillos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:51.