Foros del Web » Programando para Internet » Javascript »

Rotar imagenes aleatoriamente sin repetir!

Estas en el tema de Rotar imagenes aleatoriamente sin repetir! en el foro de Javascript en Foros del Web. Hola, quisieran que porfavor me ayudaran con un problema, debo hacer un juego con rotacion de imagenes, estas imagenes cada determinado tiempo cambian de posicion, ...
  #1 (permalink)  
Antiguo 07/10/2010, 09:41
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 14 años, 10 meses
Puntos: 1
Información Rotar imagenes aleatoriamente sin repetir!

Hola, quisieran que porfavor me ayudaran con un problema, debo hacer un juego con rotacion de imagenes, estas imagenes cada determinado tiempo cambian de posicion, el codigo que tengo actualmente rota las imagenes cada determinado tiempo lo unico que me falta es que las imagenes no se repitan!, llevo horas tratando de resolver esto y la verdad no he podido, agradeceria cualquier ayuda, de antemano muchas gracias,
este es el codigo que tengo

Código HTML:
<html>
  <head>
    <title>
      Prueba de rotaci&oacute;n aleatoria de im&aacute;genes
    </title>

    <script type="text/javascript">
      <!--

// Conjunto de nombres de las imagenes a rotar
imagenes = new Array (
    'imagenes/Albania.png',
	'imagenes/Andorra.png',
	'imagenes/Algeria.png',
	'imagenes/Argentina.png',
	'imagenes/Aruba.png',
	'imagenes/Brazil.png',
	'imagenes/Cameroon.png',
	'imagenes/China.png',
	'imagenes/Colombia.png');

espera = 3;
imagen_actual = 0;



function cambio ()
{	var i=0;
  	for(i=0;i<imagenes.length;i++)
	{
		ima = Math.floor (Math.random () * imagenes.length);
		var uti= new Array;
		uti[i]=ima;

				
			
		
		document.getElementById('div'+i).innerHTML="<img src='"+imagenes[ima]+"' />";
		
	}

    if (imagen_actual >= imagenes.length)
        imagen_actual = 0;

    self.setTimeout ('cambio()', espera * 1000);
}


function rotar ()
{
    var aux, i, pos;


    for (i = 0; i < imagenes.length; i++) {
        pos = Math.floor (Math.random () * imagenes.length);

        if (pos != i) {
            aux = imagenes[i];
            imagenes[i] = imagenes[pos];
            imagenes[pos] = aux;
        }
    }

    cambio ();
}

      -->
    </script>
  </head>
  <body onLoad="rotar()">
  <div id="div0" style="float:left"></div>
  <div id="div1" style="float:left"></div>
  <div id="div2" style="float:left"></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  <div id="div3" style="float:left"></div>
  <div id="div4" style="float:left"></div>
  <div id="div5" style="float:left"></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  <div id="div6" style="float:left"></div>
  <div id="div7" style="float:left"></div>
  <div id="div8" style="float:left"></div>
    
  </body>
</html> 

Última edición por hernandavidgomez; 07/10/2010 a las 09:45 Razón: arreglo de titulo
  #2 (permalink)  
Antiguo 07/10/2010, 11:23
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: Rotar imagenes aleatoriamente sin repetir!

Eeehhmm, en cuanto muestres la imagen puedes eliminar del Array el string de la imagen que mostraste.

El problema estará es que en cuanto te quedes con el Array vacio no va a haber que mostrar.

Puedes también más ineficientemente ir almacenando en otro array los indices ya mostrados y cuando ya los hayas almacenado todos los borras y empiezas sde cero

acá hay un tema donde te enseñan a borrar elementos de array

http://www.forosdelweb.com/f13/borrar-elemento-array-514581/
  #3 (permalink)  
Antiguo 07/10/2010, 16:13
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Rotar imagenes aleatoriamente sin repetir!

gracias por el aporte, ya lo pude solucionar por si a alguien le interesa
saludos, y no se repite!

Código HTML:
Ver original
  1.   <head>
  2.     <title>
  3.       Prueba de rotaci&oacute;n aleatoria de im&aacute;genes
  4.     </title>
  5.  
  6.     <script type="text/javascript">
  7.       <!--
  8.  
  9. // Conjunto de nombres de las imagenes a rotar
  10. imagenes = new Array (
  11.    'imagenes/Albania.png',
  12.     'imagenes/Andorra.png',
  13.     'imagenes/Algeria.png',
  14.     'imagenes/Argentina.png',
  15.     'imagenes/Aruba.png',
  16.     'imagenes/Brazil.png',
  17.     'imagenes/Cameroon.png',
  18.     'imagenes/China.png',
  19.     'imagenes/Chile.png',
  20.     'imagenes/Congo.png',
  21.     'imagenes/Canada.png',
  22.     'imagenes/Afghanistan.png',
  23.     'imagenes/Angola.png',
  24.     'imagenes/Bosnian.png',
  25.     'imagenes/Cambodia.png',
  26.     'imagenes/Colombia.png');
  27.  
  28.  
  29. // Tiempo de espera entre imagenes (en segundos)
  30. espera = 3;
  31.  
  32. // Referencia a la imagen actual
  33. imagen_actual = 0;
  34.  
  35.  
  36.  
  37. function cambiar_imagen ()
  38. {   var i=0;
  39.     var uti= new Array;
  40.     for(i=0;i<imagenes.length;i++)
  41.     {
  42.         ima = Math.floor (Math.random () * imagenes.length);
  43.         uti[i]=ima;
  44.         //alert(uti[0]);
  45.         var j = 0;
  46.             for( j=0; j<i; j++)
  47.             {
  48.             //alert(uti[j]);
  49.             if(i != j)
  50.            
  51.                 {
  52.                 //alert(uti[i]);
  53.                 //alert(uti[0]);
  54.                     if(uti[i] == uti[j])
  55.                         {
  56.                             while(uti[i] == uti[j])
  57.                                 {
  58.                                     ima = Math.floor (Math.random () * imagenes.length);
  59.                                     uti[i]=ima;
  60.                                     //alert('hola');
  61.                                     for(k=0; k<i; k++)
  62.                                         {
  63.                                             if(uti[i] == uti[k])
  64.                                                 {
  65.                                                     while(uti[i] == uti[k])
  66.                                                     {
  67.                                                     ima = Math.floor (Math.random () * imagenes.length);
  68.                                                     uti[i]=ima;
  69.                                                     }
  70.                                                 }
  71.                                         }
  72.                                 }
  73.                         }
  74.                
  75.                 }
  76.            
  77.             }
  78.                
  79.            
  80.        
  81.         document.getElementById('div'+i).innerHTML="<img src='"+imagenes[ima]+"' style='heigth:128px; width:128px; cursor:pointer;' />";
  82.     }
  83.  
  84.    if (imagen_actual >= imagenes.length)
  85.        imagen_actual = 0;
  86.  
  87.    // Llamar esta misma funcion cada cierto tiempo
  88.    self.setTimeout ('cambiar_imagen()', espera * 1000);
  89. }
  90.  
  91.    </script>
  92.  </head>
  93.  <body onLoad="cambiar_imagen()">
  94.  <div id="div0" style="float:left"></div>
  95.  <div id="div1" style="float:left"></div>
  96.  <div id="div2" style="float:left"></div>
  97.  <div id="div3" style="float:left"></div><br /><br /><br /><br /><br /><br /><br />
  98.  <div id="div4" style="float:left"></div>
  99.  <div id="div5" style="float:left"></div>
  100.  <div id="div6" style="float:left"></div>
  101.  <div id="div7" style="float:left"></div><br /><br /><br /><br /><br /><br /><br />
  102.  <div id="div8" style="float:left"></div>
  103.  <div id="div9" style="float:left"></div>
  104.  <div id="div10" style="float:left"></div>
  105.  <div id="div11" style="float:left"></div><br /><br /><br /><br /><br /><br /><br />
  106.  <div id="div12" style="float:left"></div>
  107.  <div id="div13" style="float:left"></div>
  108.  <div id="div14" style="float:left"></div>
  109.  <div id="div15" style="float:left"></div><br /><br /><br /><br /><br /><br /><br />
  110.    
  111.  </body>
  112. </html>

Etiquetas: galeria, imagenes, rotar, aleatoria
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 13:29.