Comunidad de diseño web y desarrollo en internet online

AYUDA CON RANDOM POR FAVOR...

Citar            
MensajeEscrito el 05 May 2005 04:11 pm
Hola a todos

Mi problema es el siguiente, estoy empezando a usar flash y se muy poco (o casi nada) de ActionScript. Tengo 50 palabras y quiero que me muestre como elementos separados o clips solo 15 pero que las escoga al azar cada vez que corra mi fla. esto es para un juego de correcion de ortografia y necesito que sean diferentes cada vez que empieze el juego.

Y otra cosa si nos es mucho pedir como hago para que estas 50 palabras las lea de un archivo de texto externo para que puedan ser modificadas a manera de actualizacion posteriormente

Creo que hay que usar random o algo asi pero no tengo ni idea de como poner bien el codigo

Si alguien puede ayudarme por favor se lo agradecere...

Por snail

13 de clabLevel



 

msie
Citar            
MensajeEscrito el 05 May 2005 04:23 pm
Para el archivo externo yo usaría un archivo XML que es más útil aunque un poquitín más complejo que con loadVars.

Una vez cargado el XML haz un bucle for para poner todas las palabras en un array. Por ejemplo:

Código :

var mi_array:Array = new Array();
var mi_xml:XML = new XML();

mi_xml.ignoreWhite = true;
mi_xml.onLoad = function(cargado){
   if (cargado){
      for (i=0; i<mi_xml.firstChild.childNodes.length; i++){
         mi_array[i] = mi_xml.firstChild.childNodes.firstChild;
      }
   }
}
mi_xml.load("palabras.xml");


Sería algo muy similar a eso.

Luego ya sería mirarte en la ayuda de Flash como manejar los arrays y como usar el Math.random(), pero ya verás que no son demasiado difíciles.

Deu!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

clabbrowser
Citar            
MensajeEscrito el 05 May 2005 04:29 pm
Primero crea un Array:
elNombreQueQuieras = new Array

Y pon las palabras dentro asi:

elNombreQueQuieras[0] = palabra1
elNombreQueQuieras[1] = palabra2
elNombreQueQuieras[2] = palabra3
elNombreQueQuieras[3] = palabra4
....


Después usa:

numerodepalabra = random(49)
elLugarDondeQuierasPonerlas._txt = elNombreQueQuieras[numerodepalabra]


*donde dice: "elNombreQueQuieras" pon siempre lo mismo

*random(49) coge un numero al azar entre 0 y 49, tienes 50 palabras pero el array empieza por el cero por eso "49".



Lo de que las lea de un archivo externo se puede hacer con xml y loadVars, pero yo de eso no entindo mucho, puedes buscar en el buscador de la pagina como hacerlo o esperar a que te conteste alguien que sepa mas sobre este tema

Por Cagarnera

Claber

158 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 May 2005 04:29 pm
Vale, muchas gracias intentare aplicar esto a ver que pasa y sigo tu consejo de mirar la ayuda de flash..,

Gracias avisare si pude hacerlo.

Por snail

13 de clabLevel



 

msie
Citar            
MensajeEscrito el 29 May 2005 02:24 am
Carganera dijo:

*random(49) coge un numero al azar entre 0 y 49, tienes 50 palabras pero el array empieza por el cero por eso "49".


Sí quieres que el random te retorne valores de 0 a 49, entonces debes colocar random(50), sí lo haces random(49), entonces solo hará hasta el 48.

La función random retorna un valor entre 0 y n-1:
i= random(n);

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

msie
Citar            
MensajeEscrito el 30 May 2005 12:01 pm
Permiso...
Cambia Ramdom(49) por Math.random()*49
(tengo entendido que ramdom(49) en esa forma va a desaparecer del flash)

Por otra parte, coloca el listado de palabras en un archivo .txt asi:

&palabra1=lo que quieras&
&palabra2=loque quieras&
&fin=si&

La ultima linea es para comprobar que se ha cargado este archivo en el fla.

Luego coloca esto en 4 frames diferentes:

frame1: _root.loadVariables("nombre.txt");
frame2: if (fin=="si"){gotoAndPlay(4);}
frame3:gotoAndPlay(2);
frame4:stop();

En el frame 4 ya estan cargadas las palabras.

En el frame 4, sigues con esto:

luego le tiras el numero al azar, pero de 1 a 50, estom seria:

num=Math.Ramdom()*49+1;
Ahora lo redondeas:

num=Math.rounded(num);

ahora extraes la palabra asi:

PalabraEncontrada=eval("palabra"+num);

Espero te sirva.

Por La_Gata

123 de clabLevel



 

msie
Citar            
MensajeEscrito el 30 May 2005 01:57 pm
La Gata dijo:


Cambia Random(49) por Math.random()*


Math.random, retorna un número pseudo-aleatorio entre 0.1 y 0.9, es decir que cada vez que ejecutes la película se va a generar la misma secuencia de números.

En estos casos es mejor random(value), ya que retorna un numero aleatorio entre 0 y value-1.

Volvemos al tema, observa este código:

código actionscript:

Código :

var miXML = new XML();
miXML.ignoreWhite= true;
miXML.load("frases.xml");

miXML.onLoad = function (){
        longitud = miMXL.firstChild.childNodes.length; // Tomamos la cantidad de frases
        i= random (longitud); //escojemos una frase al azar
        frase.text= miXML.firstChild.childNodes[i].attributes.frase;// Al texto dinámico le asignamos el valor de la frase que escogimos aleatoriamente
}  


codigo XML de frases.xml:

Código :

<miXML>
< item frase= "Prueba1" />
 < item frase= "Prueba2" />
< item frase= "Prueba3" />
</miXML>


Fijate que el nombre de la variable de actionscript se llama igual al Nodo Padre del XML que es miXML. :wink:

Beneficio de este código no te limitarás a solo 50 sino a la cantidad de "frase" que tengas en el XML, por eso el i=random(longitud). 8)

Ahora como seleccionamos 15 en vez de 1 trata de tomar de los números aleatorios y asignárselo a un vector (array) y revisar que el valor que te genero en el random no se encuentre en el vector, asegurando así que no se repitan los números.

Por último el documento XML lo puede hacer en block de Notas, sí lo haces aquí asegurate de guardarlo con Codificación: Unicode, eso lo selecciona debajo de donde le pones el nombre al archivo, esto es para que te admita los acentos y las ñ.

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

msie
Citar            
MensajeEscrito el 30 May 2005 02:03 pm
Ah me olvidaba ese código lo hice aquí mientras publicaba la respuesta, puede tener errores de sintaxis y algo de eso, pero te sirve de guía.

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

msie
Citar            
MensajeEscrito el 30 May 2005 03:32 pm
a ver, es RANDOM, no RAMDOM.
los métodos en la mayoría de los lenguajes no desaparecen, random permanecerá a través de los siglos, pero es recomendable usar Math.random(), pero si sólo lo multiplicamos por el número que queremos vamos a obtener algo así
23.4633987154812

para hacer que ese número, que está más cerca a 23 que a 24 lo hacemos

Código :

Math.round(Math.random()*49);

que, comparado a random() es mucho más rápido y personalmente lo prefiero

ahora, lo de la función que va desde 0 hasta n-1 es porque la función devuelve uno de los n números al azar, es decir random(5) pedimos cinco números al azar, empezando desde cero

un saludo

Por fael

BOFH

2443 de clabLevel

3 tutoriales
2 articulos

 

firefox

 

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