Comunidad de diseño web y desarrollo en internet online

Creacion de una matriz sin mas de 2 repetidos juntos ( puzzle Bubble )

Citar            
MensajeEscrito el 28 Feb 2011 04:16 am
Buenas noches,

estoy intentando crear la pantalla principal de las bolas, he creado 4 clases, main, caja, matrix y logic.

En matrix intento que cuando se inicializa la pantalla sortee, pero sin más de 2 bolas juntas, siempre acaban apareciendome 3 o 4 . adjunto la función Scramble, para si alguien puede orientarme ,muchas gracias.

Código ActionScript :

private function scramble():void {
         var point:Point;
         var box:Box;
         var tmpBox:Box;
         var tmpBox2:Box;

         var rnd:uint;
         var indTablero:uint=0;
         var max:uint=_boxes.length-1;
         var triod:uint;
         var trioi:uint;
         var idviejo:uint=0;


         for (var i:uint=1; i<max; i++) {
            box=_boxes[i];
            point=new Point(box.x,box.y);
            rnd=(Math.random()*max)+1;
            tmpBox=_boxes[rnd];
            trioi=tmpBox.idBox-1;
            triod=tmpBox.idBox+1;

            while (tmpBox.colorCode==box.colorCode) {
               trace( tmpBox.colorCode );
               trace( "box:"+box.colorCode );
               rnd=(Math.random()*max)+1;

               tmpBox=_boxes[rnd];

            }

            if (tmpBox.colorCode!=box.colorCode) {
               switchPlaces(box,tmpBox);




            }
         }

         for (var j:uint=0; j<max; j++) {
            trace( "El color al entrar es : " + _boxes[j].colorCode );
            if ((_boxes[j].colorCode == _boxes[j+1].colorCode ) && (_boxes[j].colorCode == _boxes[j+1].colorCode) && (_boxes[j].colorCode == _boxes[j+2].colorCode )) {
               trace("Entro??");
               idviejo=_boxes[j+1].colorCode;
               if (idviejo>4) {
                  _boxes[j+1]=new Box(rnd,false);
                  trace( "MA 4El color al cambiarlo en recto es : " + _boxes[j].colorCode );
               } else {
                  rnd=(Math.random()*4)+1;
                  _boxes[j+1]=new Box(rnd,false);
                  trace( "ME 4 El color al cambiarlo en recto es : " + _boxes[j].colorCode );


               }


            }
            if ((j>7)&&(j<55)) {
               if ((_boxes[j].colorCode == _boxes[j-8].colorCode ) && (_boxes[j].colorCode == _boxes[j+8].colorCode) ) {
                  trace("Entro???????");
                  idviejo=_boxes[j+1].colorCode;
                  trace( "El color al cambiarlo en perpendicular es : " + _boxes[j+1].colorCode );

                  if (idviejo>4)  {

                     _boxes[j+1]=new Box(idviejo-2);
                     trace( "MAyor de 4 El color al cambiarlo en perpendicular es : " + _boxes[j+1].colorCode );

                  } else {
                     _boxes[j+1]=new Box(rnd,false);
                     trace( "Menor de 4 El color al cambiarlo en perpendicular es : " + _boxes[j+i].colorCode );


                  }
               }
            }



         }

      }





Hay 2 for , he puesto los 2 para mostraros 2 pruebas que he intentado, pero con ninguno de los for logro que no se repita más de 2 bolas , en dirección derecha izquierda arriba o abajo.


Como siempre mil gracias, por todo.

Por erone

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 13 Mar 2011 04:42 pm
Buentas tardes,

No he conseguido ayuda, es por el mal planteo de la pregunta o por algún otro motivo ? si es así reescribo la pregunta.

He probado diferentes maneras y siempre acaba apareciendo bolas repetidas

Sigo esperando vuestros comentarios, muchas gracias

Por erone

16 de clabLevel



 

msie8

 

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