Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/05/2013, 07:23
phyronx
 
Fecha de Ingreso: mayo-2009
Mensajes: 232
Antigüedad: 15 años
Puntos: 3
Porque pasa esto?

Buenas estoy creando un juego simple para practicar. Se trata que en un canvas creo 12 cuadrados, de varios colores, aleatorios cogidos de un array, pero siempre debe haber uno rojo, el cual es elque debes clickar.

Ahora pondre el codigo, pero basicamente lo k hago es un for, k de 12 vueltas, y creando un numero aleatorio con Math.random(), si la 'i' del for coincide con el aleatorio, pues el cuadrado es rojo, sino pasa a ser uno del array.

El problema es, que si haces F5 repetidas veces, para ver como o va creando aleatoriamente, alguna vez me salen 2 cuadrados rojos, y segun el codigo eso es imposible..

Hos dejo el codigo, espero lo proveis vosotros y comproveis k crea hasta 3 cuadrados rojos (siempre seguidos).

Ademas, lo avance mas y puse que si pulsavas en el rojo saliera un alert, y cuando salen 2 o 3 rojos solo sale el alert en el primero, los otros me dice que no es rojo -_-.


El codigo:

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3.   <title></title>
  4. </head>
  5. <body>
  6.  
  7.  
  8.   <div align='center'>
  9.  
  10. <canvas id="myCanvas" width="600" height="600" align='center'/></canvas>
  11.  
  12. </div>
  13. <script type="text/javascript">
  14.  
  15. var level = parseInt(localStorage.level);
  16.  
  17.  
  18. var size = 40;
  19. var numxfila = 3;
  20. var cont = 0;
  21.  
  22. var colors=new Array("yellow","green","blue","black");
  23.  
  24.  
  25. var elem = document.getElementById('myCanvas'),
  26.     elemLeft = elem.offsetLeft,
  27.     elemTop = elem.offsetTop,
  28.     context = elem.getContext('2d'),
  29.     elements = [];
  30.  
  31. // Add element.
  32.  
  33. var posx = 10;
  34. var posy = 10;
  35.  
  36. var aleat2 = Math.random() * 11;
  37.     aleat2 = Math.round(aleat2);
  38.  
  39.  
  40. if (aleat2 == 0){aleat2 = 1;}
  41.  
  42. for (var i = 0 ; i <= 11; i++) {
  43.  
  44.   var aleat = Math.random() * 4;
  45.     aleat = Math.round(aleat);
  46.  
  47.  
  48.   if (cont == numxfila) {
  49.  
  50.     cont = 0;
  51.     posy += 50;
  52.     posx = 10;
  53.   };
  54.  
  55.  
  56.  
  57. if (i == aleat2) {
  58.  
  59.   elements.push({
  60.     colour: 'red',
  61.     width: size,
  62.     height: size,
  63.     top: posy,
  64.     left: posx
  65. });
  66.  
  67. }else {
  68.  
  69.   elements.push({
  70.     colour: colors[aleat],
  71.     width: size,
  72.     height: size,
  73.     top: posy,
  74.     left: posx
  75. });
  76. }
  77.  
  78.  
  79. posx +=50;
  80. cont +=1;
  81.  
  82. };
  83.  
  84.  
  85.  
  86. // Render elements.
  87. elements.forEach(function(element) {
  88.     context.fillStyle = element.colour;
  89.     context.fillRect(element.left, element.top, element.width, element.height);
  90. });
  91.  
  92. </script>
  93. </body>
  94. </html>