Comunidad de diseño web y desarrollo en internet online

Duda en uso de doble Bucle "for".

Citar            
MensajeEscrito el 26 Jul 2012 06:27 pm
Buenas, estoy tratando de hacer un mapa isonometrico para un juego. Para ello utilizo solo AS3 y un movie clip en forma de rombo de 100 de ancho por 50 de alto al que he llamado celda. Mi problema es que el doble bucle que he hecho para poder crear el mapa isonometrico (de 13 celdas) no me lee determinadas lineas de codigo, crucial para que las celdas queden correctamente puestas 3-2-3-2-3 de arriba abajo, y quedan 3-3-3-3-3. Ahí dejo el código, ¡si alguien es tan amable de solucionarme el cómo hacerlo se lo agradecería de por vida! Muchas gracias de antemano.

CÓDIGO:
-----------------------------

Código ActionScript :

import flash.display.Sprite;
var n:int=3;
var e:Boolean =true;
for(var i:int=0; i< 5; i++){
   for(var j:int=0; j<n; j++){
         var cell:Sprite =new celda();
         addChild(cell);
      if(j==n){
         if (e==true){
            cell.x=100* j;
            cell.y=50* i;
            e=false;
            n=2;
         }else if(e==false){
            cell.x=100* j+ 50;
            cell.y=50* i+ 25;
            e=true;
            n=3;
         }
      }else if(j!=n){
         if(e==true){
            cell.x=100* j;
            cell.y=50* i;
         }else if(e==false){
            cell.x=100* j+ 50;
            cell.y=50* i+ 25;
         }
      }
}
}


~Liourk~

Por liourk

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Jul 2012 09:00 pm
Usualmente los mapas que usan tiles se basan en un string que indica que tipo de pieza va en cada celda y el típico doble buble para crear una cuadrícula. Tu bucle tiene muchos condicionantes raros, lo que indica un fallo de estructura. Mira en cualquier tuto de juegos basado en tiles como se crea el mapa

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Jul 2012 07:10 am
La verdad, llevo mese buscando y ninguna solución me satisface, puesto que por ncesidad las celdas internas y las externas deben ser el mismo objeto. Dejando eso aparte, lo que me interesa a mi es solucionarlo, obviamente, pero también querría saber dónde hay el error y porqué sucede. Al fin y al cabo tengo la verdadera intención de dedicarme a la programación (en un año empiezo la carrera, pero dudo sinceramente que AS3 entre) y me gustaría aprender cuanto más mejor, tengo varios manuales y me los he leído de arriba a abajo, pero hay cosas que allí no se explican. Si pudieran solucionarme la duda por aquí estaria sinceramente agradecido. He tratado de arreglarlo sustituyendo la linea:

Código ActionScript :

for(var j:int=0; j<n; j++)


por

Código ActionScript :

for(var j:int=0; j<=n;j++)


y luego haber reducido el valor de n en -1 en ambos casos, pero sigue sin funcionar. ¿Alguna idea de qué ebo hacer? (Buscar manuales de juegos hechos asi no me interesa porque usan dos childs distintos, y no es esta mi intencion, puesto que hacerlo con 2 childs distintos ya lo habia conseguido a la primera y sin manuales, pero no es una solución que me sirva, porque luego tengo que definir las profundidades de cada celda).

Muchas gracias,

Liourk

Por liourk

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Jul 2012 07:40 am
Bueno, la verdad, me sabe un poco mal no haber recibido ayuda, despues de estudiar el codigo a fondo (y sin ningun turorial, ya que no hay ninguno decente) me he dado cuenta de qué errores habia y lo he solucionado, así que tema resuelto. Subo el código por si nunca nadie necesita algo similar, y por cierto, los condicionales NO eran raros y SI eran necesarios e.e:

CÓDIGO:
--------------------------------------------------------------------------

Código ActionScript :

import flash.display.Sprite;
var n:int=2;
var e:Boolean =true;
var f:int=0;
for(var i:int=0; i< 5; i++){
   for(var j:int=0; j<=n; j++){
         var cell:Sprite =new celda();
         addChild(cell);
      if(e==true){
         cell.x=100* j;
         cell.y=50* i-f;
      }else if(e==false){
         cell.x=100* j+ 50;
         cell.y=50* i-f;
      }
      if(j==n){
         if (e==true){
            n=1;
            e=false;
         }else if(e==false){            
            n=1;
            e=true;
            n=2;
            j=3;
         }
      }
   }
   f=(f+25);
}


~Liourk~

Por liourk

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Jul 2012 11:02 am
Ya que no hay tutos decentes nada mejor que escribirlos tu mismo, especialmente con tu proba habilidad para resolver problemas sin ayuda

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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