Comunidad de diseño web y desarrollo en internet online

Problemas con un FOR

Citar            
MensajeEscrito el 31 Jul 2007 01:55 am
Hola amigos de Clab... :D
Estaba creando un juego..pero... me vino una consulta... :o
Es que miren...Una parte de mi juego.. Uno debe hacer Click en un panel de 20*20
La idea es que al hacer click en uno si es que el cuadro del lado es del mismo color... haga la misma accion y haci los del lado de el y asi continuamente hasta que no halla mas...
Miren..Tengo el codigo.. Y sale todo bien..esepto por que ..para que siguiente cuadro haga la accion debo crear un for Igual... Es bastante molestoso y el Script se alarga mucho.. Para pero llevo el Sexto for y aun no rellena el cuadrado entero en el caso de que todos los cuadrados sean de un color... :P :shock:
Este es el Codigo
Antes esplico que:
es en As3 pero igual los de As2 deben saber que hacer ya que es casi lo mismo..
El sensor y el sensor2 es un movieClip que dentro contiene 4 movieclips como "Solapas" estas son las que verifican los cuadros de los lados..
Aqui no hay problema..el pobrema es que luego yo asigno al cuadro la misma funcion...
que se llama Ver y dentro del parentesis va un numero que lo identifica...Entonces vuelve a correr.. Es simple en si eso..Pero no me deja asignarle el mismo for al cuadro nuevo..si no que otro entonces...tengo que agregar muchos For para que la extension de los cuadros sea mas larga.. Hasta ahora los cuadros solo pueden buscar hasta 6 cuadros de distancia ya que solo hay 6 for
EN FIN!! Diganme como ahorrarme este engorroso trabajo porfavor: :D

Código :

function ver(o:Number){
for(var P:Number=0;P<clip.length;P++)
{
sensor.x=clip[o].x // Pocisiono el Censor
sensor.y=clip[o].y
if(clip[P].hitTestObject(sensor) && colorA[P]==colorA[o]){ // Verifico que este en contacto con el Sensor
for(var s:Number=0;s<4;s++){
sensorA=sensor.getChildAt(s);
if(sensorA.hitTestObject(clip[P])){ //Si es que lo esta recoremos las 3 solapas del sensor y verificamos cuales cuadros estan junto...
clip[P].play();
ver2(P); // Le asginamos la misma Funcion..pero debe ser otra xD!!!
clip[P].removeEventListener(MouseEvent.CLICK, dal);
}
}
}
}
}
function ver2(o:Number){
for(var P:Number=0;P<clip.length;P++)
{
sensor2.x=clip[o].x
sensor2.y=clip[o].y
if(clip[P].hitTestObject(sensor2) && colorA[P]==colorA[o]){
for(var s:Number=0;s<4;s++){
sensorA=sensor2.getChildAt(s);
if(sensorA.hitTestObject(clip[P])){
clip[P].play();
ver3(P);
clip[P].removeEventListener(MouseEvent.CLICK, dal);
}
}
}
}
}
function ver3(o:Number){
for(var P:Number=0;P<clip.length;P++)
{
sensor2.x=clip[o].x
sensor2.y=clip[o].y
if(clip[P].hitTestObject(sensor2) && colorA[P]==colorA[o]){
for(var s:Number=0;s<4;s++){
sensorA=sensor2.getChildAt(s);
if(sensorA.hitTestObject(clip[P])){
clip[P].play();
ver4(P);
clip[P].removeEventListener(MouseEvent.CLICK, dal);
}
}
}
}
}
function ver4(o:Number){
for(var P:Number=0;P<clip.length;P++)
{
sensor.x=clip[o].x
sensor.y=clip[o].y
if(clip[P].hitTestObject(sensor) && colorA[P]==colorA[o]){
for(var s:Number=0;s<4;s++){
sensorA=sensor.getChildAt(s);
if(sensorA.hitTestObject(clip[P])){
clip[P].play();
ver5(P);
clip[P].removeEventListener(MouseEvent.CLICK, dal);
}
}
}
}
}
function ver5(o:Number){
for(var P:Number=0;P<clip.length;P++)
{
sensor.x=clip[o].x
sensor.y=clip[o].y
if(clip[P].hitTestObject(sensor) && colorA[P]==colorA[o]){
for(var s:Number=0;s<4;s++){
sensorA=sensor.getChildAt(s);
if(sensorA.hitTestObject(clip[P])){
clip[P].play();
clip[P].removeEventListener(MouseEvent.CLICK, dal);
}
}
}
}
}

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 31 Jul 2007 02:00 am
hola que tal jaleru!!! bueno mira tengo estas sugerencias para ti:

1)Almacenar los cuadros que tienen mismo color en una array

2) cuando des click sobre tu panel, checar en cual de las cadenas esta, es decir checar en cual color esta, una vez encontrado entonces irte con el resto de los elementos contenidos en la misma cadena

para buscar puedes usar indexOf() que ya es parte tmb de AS3 en cadenas


saludos!!!!

Por andres_santos

236 de clabLevel



 

opera
Citar            
MensajeEscrito el 31 Jul 2007 02:32 am
Es que siempre los colores son aleatorios..Y no entendi que quisiste decir..ademas..No quiero modificar mi codigo entero........
¿No hay forma'?

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 31 Jul 2007 02:39 am
hola jaleru!! la sugerencia era para que pudieras reducir el código a mas de la mitad, las cadenas las puedes crear dinamicamente de eso no hay problema, yo sugeriria:

1)crear cadenas dinamicamente con el nombre de los colores, y almacenar el nombre de las cadenas recien creadas

2)añadir el nombre o numero de Sprite o MC dentro de la cadena dinamica del color correspondiente

3)cuando lo necesites buscar el sprite usando indexOf()

4)como has insertado los nombres en su cadena-color correspondiente entonces puedes facilmente conocer el resto de los elementos por cambiar

saludos!!

Por andres_santos

236 de clabLevel



 

opera
Citar            
MensajeEscrito el 31 Jul 2007 02:13 pm

jaleru escribió:

..ademas..No quiero modificar mi codigo entero........
¿No hay forma'?
U_U

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 31 Jul 2007 08:57 pm
hola.. Se me ocurrio..Lo estube pensado toda la aburrida clase de Ingles..
Crear un Array donde guardo el nombre del Mc que fue tocado..
Autamaticamente un if(array.length>0) va estar verificando que este array este basio..
HAciendo la misma funcion con cada Cuadro....
LO probare...
Respececto al IndexOf() ?¿Que es?

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 31 Jul 2007 09:13 pm
hola jaleru!! recuerdas el indexOf() de los Strings? bueno ahora hay uno en AS3 que te permite buscar un elemente en una cadena si lo encuerntra te devuelve el indice si no te devuelve -1

saludos!!

Por andres_santos

236 de clabLevel



 

opera
Citar            
MensajeEscrito el 31 Jul 2007 10:11 pm
:o Haber...No entender completamente lo que tu estar decir. :bate: ..xD
No entiendo bien lo que estas diciendo...
El indexOff de los String... buscaba una palabra....
ok...
Pero...
Ahora sirve para cadenas...
¿? Que son cadenas..
String? (seria lo mismo Asique no)
No se bien..de que hablas..

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 31 Jul 2007 10:17 pm
Solo por Copushaaa Shikillos XD...
Me quedo muy bien mi juego...
Disminui el codigo notablemente ademas me quedo un efecto muy interesante cuando se abren las cajas..pues ya no se abren todas de una sino que se abren en orden dando un efecto muy entretenido...
Hice una funciona llamada "ver" se le entrega como valor el Mc seleccionado, esta ve con el Sensor y sus cuatro solapas los Mc que tiene a su lado les da un play, los marca como ocupados, Luego estos Mc los agrega a un Array que esta esta en constante vigilancia de un if..que si es que le encuentra algun valor en el Array lo vuelve a basiar aplicando la funcion ver a cada valor que tenga dentro..
Asi un circulo visioso hasta que no encuentre nada más....

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox

 

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