Comunidad de diseño web y desarrollo en internet online

Numeros al azar

Citar            
MensajeEscrito el 03 Sep 2008 03:32 pm
Hola compañeros de critaLab, tengo una duda que tal vez puedan ayyudarme a solucionar, tal vez no sea tan complicada como yo creo. :? :( :shock:

He creado una pelicula y en el primer fotograma puse la siguiente linea de codigo:

Código :

numeroAnterior=Math.round(Math.random()*300);
var sw=0;//variable de tipo flag 0 y 1 para salir
while(sw==0){
numero=random(299)+1;
if(numero!=numeroAnterior){//en caso de que coincidan entrara de nuevo en el bucle 
//y generara otro numero
sw=1;//asi salgo del bucle
trace (numeroAnterior)
}
}


Luego de esto cree un boton en otra capa, aun inservible y es mi actual dolor de cabeza. Quiero que cuando le de click a este botoncillo me carge en alguna parte del escenario este número que se esta generando al azar y que solo puedo ver con el trace que le he puesto.

Y pues tengo otro problema, creo que eso ya tiene que ver con el codigo que tome, necesito que me bote 10 numeros al azar sin repetirse y que cada vez que de click que bote otros nuevos, pero siempre teniendo en cuenta que no pueden repetirse con los que ya han salido.

Hey muchas gracias si me pueden ayudar, les estaré eternamente agradecido. :lol:

Nota: El código lo tome de un foro aqui en cristaLab

Por d2

10 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 03 Sep 2008 05:29 pm
para controlar la repeticion tienes que almacenar en un arreglo cada numero generado al azar y cuando deseas obtener un nuevo numero debes consultar si en el arreglo se encuentra si es asi vuelves a generar otro numero....

para hacerle click al boton y ejecute la funcion intenta esto:
//esta linea la pones por el principio del codigo
btnObteneNumero.onRelease = funcionObtenerNumeroRandom;

Por riback

49 de clabLevel



 

Quito - Ecuador

msie
Citar            
MensajeEscrito el 03 Sep 2008 06:50 pm
Hola compañero no me ha quedado del todo claro, perdona mi ignorancia, pero soy nuevo en este mundo y ahi cosas que me dan dura a pesar de ser tan sencillas.

¿como es eso de los arreglos, no entendi esa parte?

y pues cuando pongo la linea que vos me das, no pasa nada y ahora me sale el siguiente error:

Código :

**Error** Escena=Escena 1, capa=Capa 1, fotograma=1:Línea 1: Error de sintaxis.
     onPress (){

Total de errores de ActionScript: 1     Errores comunicados: 1


Lo único uqe le cambie al codigo fue vuestra linea.

Por d2

10 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 03 Sep 2008 07:45 pm
El código que te dio @riback era un ejemplo, no era para que lo utilizaras y además no era para poner encima de un clip, sino para ponerlo en el frame, en cuanto a lo que preguntas, deseas que los números nunca se repitan desde 0 hasta 299?

Porque matemáticamente esto tiene un límite cuando presiones el botón 10 veces, no hay forma que te busque nuevos números que no se hayan repetido.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 03 Sep 2008 07:55 pm
lo del error ya lo corregi, pero basicamente necesito lo que se ve en esta page: http://www.random.org/lists/ creo que ahi esta un poco mas claro lo que busco :oops:

Por d2

10 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 03 Sep 2008 10:08 pm
Eso que está en la page no es lo que estabas pidiendo, pero bueno aquí tienes una función que al enviarle un arreglo te lo devuelve desordenado:

Código ActionScript :

//---Prototype de indexOf 
Array.prototype.indexOf = function(search):Number  {

   var total:Number = this.length;
   var index:Number = -1;
   var item:Number = 0;
   var finded:Boolean = false;

   while (item<total && !finded) {

      if (this[item] == search) {
         index = item;
         finded = true;
      } else {
         item++;
      }
   }
   return index;

};

//---Función de desordenar un arreglo
function randomArray(arreglo:Array):Array {
   //---Declaramos las variables locales
   var returnArray:Array = new Array();
   var total:Number = arreglo.length;

   var rand:Number;
   var item:Number;
   var sum:Number = 0;

   while (sum<total) {

      //---Creamos un número aleatorio entre el rango de la cantidad de imagenes
      rand = Math.floor(Math.random() * total);
      //---Buscamos el número correspondiente a este número en el arreglo
      item = arreglo[rand];
      //---Comprobamos si el número no se encuentra en el arreglo y de ser así lo añadimos
      if (returnArray.indexOf(item)<0) {
         returnArray.push(item);
         sum++;
      }
   }
   return returnArray;
}

//---Ejemplo
var myArray:Array = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

trace(randomArray(myArray)); //Te devolverá el arreglo desordenado aleatoriamente

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 04 Sep 2008 12:42 am
ejejejej... ahora siiiiiiiiiiiiiiiiiiii.. ya entendi.. muchas gracias grandes sabios

Por d2

10 de clabLevel



 

Colombia

chrome

 

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