Comunidad de diseño web y desarrollo en internet online

uso de elementos de un array

Citar            
MensajeEscrito el 22 Ago 2011 11:24 pm
hola que tal

publico este tema con la esperanza de que me puedan ayudar con esto

la situacion es que estoy tratando de hacer un juego de cartas (como la lotería mexicana) en actionscript3

la situación es que tengo un array con varios movieclip de mi librería (las cartas del juego) y quiero que uno a uno vayan apareciendo en el escenario y el código que tengo es este:


Código ActionScript :


var cartasArray : Array = new Array (cart01,cart02,cart03,cart04,cart05,cart06,cart07,cart08);
var cartasStage:Array = new Array();


Código :
for(var j:int=0; j<8; j++){ 
   var carta = cartasArray[int(Math.random() * cartasArray.length)]; 
   var card:MovieClip = new carta(); 
   addChild(card); 
   card.x = Math.random() * stage.width; 
   card.y = 50; 
   card.speed = 10; 
   trace} 



el cual me pone 8 elementos del array sin ser necesario que aparezcan todos los elementos , pues no quiero que se repitan y tambien los agrega todos de una ves

ojala pueda tener respuesta de sus grandes conocimientos en esto

saludos

Por albertox

3 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 23 Ago 2011 12:20 pm
Por lo que entiendo, lo que te pasa es que te pone varias veces la misma carta y no entran todas verdad?
Para hacer que aparezcan todas lo que tienes que hacer es que cuando calculas el random ver si esa carta ya la has puesto.
Entonces cada vez que pones una carta guardate en otro array que número de carta has puesto y calcula la siguiente carta con un random de todas las cartas excepto las que ya has puesto.
Espero que te sirva

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Ago 2011 02:40 pm
si exactamente es lo que necesito, pero no se como hacer eso...

crees que podrías ayudarme un poco mas con algo de código? te lo agradecería mucho

Por albertox

3 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 24 Ago 2011 09:06 am
Hola albertox, te paso un trozo de código, quizás haya formas más eficientes de hacerlo pero no se me ocurre otra, espero que te sirva.

Código ActionScript :

private var a:Array = new Array(10);
private var b:Array = new Array(10);

for(var i:Number = 0; i < 10;i++)
{
   a[i] = i;//asigno valores para el 1r array()serian tus cartas
   b[i] = -1;//el 2o array le doy valor de -1 para saber que no ha sido asignada esa casilla
}
for(var i:Number = 0; i < 10;i++)
{
   trace(i + "= " + Randomize(i));
}

private function Randomize(actualPosition:Number):Number
{
   var max:Number = a.length;
   var min:Number = 0;
   var num:Number = Math.floor(Math.random() * (a.length - min + 1)) + min;
   var flag:Boolean = false;
   var flag2:Boolean = false;
   var i:Number = 0;
         
   while(flag == false)
   {
      num = Math.floor(Math.random() * (a.length - min + 1)) + min;
      while(i < max && flag2 == false)
      {
         if(num == b[i])
         {
            flag2 = true;//numero repetido-->salgo del bucle y calculo otro numero
         }
         i++;
      }
      i = 0;
      if(flag2 == false)//si entro en el if es porque no "num" no ha sido asignado
      {
         b[actualPosition] = num;//actualizo el 2o array conforme he asignado ese numero
         flag = true;//flag=true para salir del bucle
      }
   }
   return num;//devuelvo el numero
}


Ya me dirás que tal, pero como te he dicho, seguro que hay formas más eficientes
Un saludo

Por Palacio

Claber

198 de clabLevel



 

firefox

 

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