Foros del Web » Programando para Internet » Javascript »

Creación código para poner 3 imágenes aleatoria

Estas en el tema de Creación código para poner 3 imágenes aleatoria en el foro de Javascript en Foros del Web. Muy buenas soy nuevo en el foro, y no sé si esta será la sección apropiada para poner esta duda que tengo, la verdad que ...
  #1 (permalink)  
Antiguo 05/06/2012, 13:03
 
Fecha de Ingreso: junio-2012
Mensajes: 3
Antigüedad: 11 años, 10 meses
Puntos: 0
Creación código para poner 3 imágenes aleatoria

Muy buenas soy nuevo en el foro, y no sé si esta será la sección apropiada para poner esta duda que tengo, la verdad que no es una duda, ya que no sé cómo hacerlo.

Necesito crear un código para ponerlo en una página de wordpress donde se generen 3 imágenes al azar de 3 cartas del tarot, del modo que aparece aquí en esta página (una vez se pincha en el recuadro, el idioma está en hebreo)

http://bendov.info/heb/tarot/prisa/

Les agradecería mucho que me indicaran o cómo hacerlo o cómo buscar la información para desarrollarlo.

Pd; Tengo las imágenes de todas las cartas de tarot que necesito.
pd2; sería bonito que dentro del código, hubiera un comando para que no se repitiera la misma foto.

Muchas gracias por adelantado,
Pablo.
  #2 (permalink)  
Antiguo 05/06/2012, 13:55
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Creación código para poner 3 imágenes aleatoria

Hola eraseunavezconvos, bienvenido.

Creo que algún conocimiento de javascript vas a tener que adquirir para hacer esto. No debe ser difícil, pero lo mínimo indispensable lo tienes que aprender. También puedes contratar a alguien que lo desarrolle por ti, o esperar a que un miembro de ésta comunidad que quiera practicar un poco lo tome como un desafío. Pero en ese caso será "gratis", hay que compartirlo con el Foro y no habrá reclamos por el funcionamiento.

Cuando hablaste de "cartas" recordé este tema

juego en JS

Puede ser un buen comienzo para destripar y entender cómo se "baraja" y "reparte".

Cualquier cosa que no entiendas, siempre puedes recurrir a Google, hasta que saques bien el funcionamiento.
Creo que lo tuyo es mucho más simple, de hecho, como tienes las imágenes, no hace falta "crear" las cartas.

Hay varios ejemplos más con imágenes aleatorias y que presenten un grupo de 3; 4 ó 5 que no se repitan. Sé que hice alguno, pero de momento no me acuerdo en dónde están.

Quizá si usas el buscador del Foro encuentres algo más ajustado a lo que necesitas.
  #3 (permalink)  
Antiguo 05/06/2012, 22:44
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Creación código para poner 3 imágenes aleatoria

En primer lugar, bienvenido a FDW @eraseunavezconvos

Te voy a tirar unas pistas a ver a dónde llegás, hace poco tiempo atrás (justamente mi colega @furoya tomo parte del experimento) hice esto, (que en realidad no sé bien para que sirve)
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Números aleatorios únicos en botones</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. input[type='button']{
  9. width: 50px;
  10. height: 50px;
  11. padding: 2px 4px 2px 2px;
  12. margin: 1px;
  13. border-radius: 5px;
  14. border: solid #4A2626 2px;
  15. background-color: #793E3E;
  16. font-style: italic;
  17. font-weight: bold;
  18. text-shadow: 1px 1px 0px #B2B2B2;
  19. cursor:pointer;
  20. font-size:14pt;
  21. outline:none;
  22. }
  23. input[type='button']:hover{
  24. color: #F27B24;
  25. text-shadow: 1px 1px 0px #000;
  26. padding: 0px;
  27. border: ridge #000 3px;
  28. }
  29. #visor {
  30. width: 152px;
  31. height: 40px;
  32. line-height: 40px;
  33. font-size: 26px;
  34. color:#5A2E2E;
  35. padding-left: 8px;
  36. font-family: arial, serif;
  37. border: dotted 1px #5A2E2E;
  38. cursor: none;
  39. }
  40. .botones{
  41. margin-top: 15px;
  42. cursor: default;
  43. display: inline-block;
  44. }
  45. /*  código para el Tooltip  */
  46. .tip {
  47. position: relative;
  48. border-bottom: dotted 1px #3E3E3E;
  49. cursor: default;
  50. }
  51. .tip span {
  52. display: none;
  53. position: absolute;
  54. top: 15px;
  55. left: 20px;
  56. width: 150px;
  57. padding: 5px;
  58. z-index: 100;
  59. background: #000;
  60. color: #fff;
  61. border-radius: 5px;
  62. -moz-border-radius: 5px; /* Firefox */
  63. -webkit-border-radius: 5px; /* Safari */
  64. font-family: arial, serif;
  65. font-size: 12px;
  66. text-align: center;
  67. }
  68. *:hover.tip {
  69. font-size: 99%; /* fix IE */
  70. }
  71. *:hover.tip span {
  72. display: block;
  73. margin-left: 0px;
  74. margin-top: 30px;
  75. }
  76. /*]]>*/
  77. <script type="text/javascript">
  78. //<![CDATA[
  79. //Método Fisher–Yates
  80. var mezclar = function(n){
  81. for(var j, x, i = n.length; i; j = parseInt(Math.random() * i), x = n[--i], n[i] = n[j], n[j] = x);
  82. return n;
  83. }
  84. //]]>
  85. <script type="text/javascript">
  86. //<![CDATA[
  87. function escribe_numeros(r){
  88. var sec = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
  89. var cadena = mezclar(sec).toString();
  90. var numeros = new Array();
  91. numeros=cadena.split(",");
  92. var f = 0;var m;
  93. for (m=0;m<numeros.length;m++){
  94. var campo = 'b_' + f;
  95. document.getElementById(campo).disabled = false;
  96. if(r != 'no'){document.getElementById(campo).value = numeros[m];}f++;}
  97. document.getElementById('visor').value = "";
  98. }
  99. function rellenar(v,idc){
  100. var c=document.getElementById("visor").value;
  101. c=c+v;
  102. document.getElementById("visor").value= c;
  103. document.getElementById(idc).disabled = true;
  104. }
  105. function reiniciar(r){
  106. document.getElementById("visor").value= '';
  107. r=(r=='si')?escribe_numeros():escribe_numeros('no');
  108. }
  109. //]]>
  110. </head>
  111. <body onload="escribe_numeros();">
  112. <div style="margin-top: 20px;">
  113. <form action="#">
  114. <div><input type="text" value="" readonly="readonly" id="visor" maxlength="10"
  115.     onmouseout="this.style.color='#5A2E2E'" onmouseover="this.style.color='#FFF'"/></div>
  116. <div class="botones">
  117. <input type="button" onclick="rellenar(this.value,this.id);" value="1" id="b_1" /> <input type="button" onclick="rellenar(this.value,this.id);" value="2" id="b_2" /> <input type="button" onclick="rellenar(this.value,this.id);" value="3" id="b_3" /> <br />
  118. <input type="button" onclick="rellenar(this.value,this.id);" value="4" id="b_4" /> <input type="button" onclick="rellenar(this.value,this.id);" value="5" id="b_5" /> <input type="button" onclick="rellenar(this.value,this.id);" value="6" id="b_6" /> <br />
  119. <input type="button" onclick="rellenar(this.value,this.id);" value="7" id="b_7" /> <input type="button" onclick="rellenar(this.value,this.id);" value="8" id="b_8" /> <input type="button" onclick="rellenar(this.value,this.id);" value="9" id="b_9" /> <br />
  120. <input type="button" onclick="rellenar(this.value,this.id);" value="0" id="b_0" /> <span class="tip"><input type="button" onclick="reiniciar();" value="C" /><span>Restablece a cero<br />y conserva los números actuales</span></span>
  121. <span class="tip" id="rei_si"><input type="button" onclick="reiniciar('si');" value="R" /><span>Restablece a cero<br />y genera una nueva secuencia</span></span>
  122. </div>
  123. </form>
  124. </div>
  125. </body>
  126. </html>

visto así seguramente te confunde más de lo que te aclara (si lo ejecutás te parecerá muy atractivo, pero no mucho más que eso)

Si te fijás al inicio hay una función llamada mezclar(), que es un poco el secreto del resto. Esa función es posteriormente invocada en la función escribe_numeros(); y lo que hace es 'mezclar' aleatoriamente los números del array sec.
Si mal no recuerdo el mazo de cartas de tarot tiene 78 cartas, con lo que deberías llamas a tus imágenes del 1 al 78 con la extensión jpg, por ejemplo. Como las funciones te muestran por resultados números, a la hora de mostrarlos, tu html generado tendrá que ser algo como

'<img src="' + variable_javascript + '.jpg" width="xxx" height="xxx" alt="" />

Bueno, investigá un poco más, desmenuzá la script y fijate a dónde llegás, después volvés a consultar, probablemente, terminemos haciendo tu código, no sin antes hacerte romper la cabeza un poquito y quitarte algunas horas de sueño...

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 06/06/2012, 06:23
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Creación código para poner 3 imágenes aleatoria

es algo más complejo y al mismo tiempo más sencillo. en lugar de usar solamente el método random(), también usamos floor(). de este modo nos aseguramos que el aleatorio nunca sea mayor que el largo de array. también usamos el método splice() para eliminar/retornar el elemento que se encuentra en la posición que equivale al aleatorio generado. de tal manera que al generar el segundo aleatorio, lo hará sobre el nuevo largo del array

Cita:
var arr = ['A','B','C','D','E','F','G', resto abecedário];

Array.prototype.aleatorio = function() {
console.log(this.splice(Math.floor(Math.random() * this.length), 1)[0], this.length);
console.log(this.splice(Math.floor(Math.random() * this.length), 1)[0], this.length);
console.log(this.splice(Math.floor(Math.random() * this.length), 1)[0], this.length);
}


window.onload = function() {arr.aleatorio();}
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 06/06/2012, 08:22
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Creación código para poner 3 imágenes aleatoria

Hola emprear, IsaBelM, los estaba extrañando.

No recuerdo cuándo

Cita:
justamente mi colega @furoya tomo parte del experimento
Creo que lo pusiste para amargarme, porque sabes soy de los que no se acuerda ni de lo que desayunó esta mañana, y por supuesto que me obligaste a buscar.

Aún no lo encontré, pero si reviví un montón de temas donde hablamos de mezclar, barajar y mostrar "algo" de manera aleatoria, sin repetir.

Cómo nos sobraba tiempo en algunas épocas!

Tu explicación me encantó, IsaBelM. Es justamente el punto del "reparto de baraja". Por supuesto, para "dar" de nuevo cuando se terminan las manos, hay que reconstruir el mazo. splice() lo destruye.

Aprovecho y dejo una lista de lo que fui encontrando. Por supuesto que son temas donde participé, ya que buscaba ése donde seguramente alguien se hizo pasar por mí. Hay más opciones para el efecto y más ideas para desarrollar.

Pensemos, por ejemplo, que aquí se usan nada más que 3 cartas. El método poco eficiente de elegir una y comparar que la segunda no sea igual a la primera y que la tercera no sea igual a las otras 2 ... tampoco estaría mal.

Transición de cinco imágenes.

Lista multiple javascript

Hacer un random con array sin que se repita.

galeria de imagenes aleatorias

Manipular array

frames aleatorios

Generar Codigo Aleatorio, pero que no se repita en el tiempo
  #6 (permalink)  
Antiguo 06/06/2012, 17:30
 
Fecha de Ingreso: junio-2012
Mensajes: 3
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Creación código para poner 3 imágenes aleatoria

Muy buenas,

antes de nada saludar y dar las gracias por vuestra rápida respuesta, @furoya, @emprear e @IsaBelM , la verdad que no me imaginaba una acogida así, es de mucho agradecer. :D

Por el tema del lenguaje Javascript parece que no comprendo mucho (o casi nada aún) ya que no tengo las nociones básicas de como para poder meterme a trabajar en casi nada... ya he comenzado a mirar un Manual de Javscript pero me queda bastante antes de poder pensar o comprender los consejos que me dais.

Yo imagino que el código que más se acerca a lo que buscamos es el que comenta @furoya
[URL="http://www.forosdelweb.com/f13/galeria-imagenes-aleatorias-855810/"]galeria de imagenes aleatorias [/URL]

he intentado copiarlo de la misma manera, modificando los enlaces de las fotos por las de las cartas de tarot que tengo ya subidas a ImageShack pero no parece que funcione de ninguna de las maneras que pruebo, y claramente, no sé el por qué.

También mirando en los temas que me pasaste, @zerokilled, pone uno bien corto, que quizás sirva para lo que necesitamos.
[URL="http://www.forosdelweb.com/f13/hacer-random-con-array-sin-que-repita-987584/"]hacer random con array sin que se repita [/URL]

La verdad me quedan las dudas sencillas de cómo comenzar el código y armar las posibilidades con las imágenes subidas... parece que sigo necesitando un apoyo ahí también.

Por otro lado, he probado varios códigos en el Httl de wordpress y no todos funcionan correctamente, ¿habrá ahí algún problema adicional aparte?

De nuevo muchas gracias por su ayuda.
  #7 (permalink)  
Antiguo 06/06/2012, 18:22
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Creación código para poner 3 imágenes aleatoria

Nunca usé Wordpress. Supongo que acepta HTML, CSS y JS.
Con eso sería suficiente.

La página que pusiste de ejemplo está solamente para las imágenes. Quiero decir, no es que en tu página hay un espacio en que aparecen 3 cartas al azar, sino que hay un botón que te envía a otra página que muestra 3 cartas, y cada vez que la recargas te muestra otras 3. En este caso sí puede que se repita alguna de las que ya mostró antes, porque el efecto es que no las muestre repetidas en el mismo grupo de 3.

Si es esto lo que estás buscando, primero concéntrate en esta última página. Haz un documento que tenga 3 imágenes transparentes con el mismo tamaño de las cartas, y las ubicas en la posición que quieres, a la distancia que te parece; eso es diseño y no te podemos ayudar, va en gustos.

Una vez que tengas el código hecho, lo posteas. Y si resulta que es muy grande, lo enlazas.

Como recomendación, las cartas se podrían llamar "tarot0.jpg", "tarot1.jpg", "tarot2.jpg" ... así va a ser más fácil buscarlas con el escript.

A partir de ahí te guiamos.
  #8 (permalink)  
Antiguo 07/06/2012, 16:02
 
Fecha de Ingreso: junio-2012
Mensajes: 3
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Creación código para poner 3 imágenes aleatoria

Ole gracias por estar por aquí.

Igual necesito ánimos para motivarme a aprender este lenguaje, del cual me siento un ignorante por ahora.

Entonces vamos con la creación de la tarea en estos días.

Un abrazo y muchas gracias de nuevo.

Etiquetas: imagen-aleatoria, tarot, wordpress
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 14:04.