
Estoy haciendo un videojuego como práctica final en una asignatura de mi escuela. Tengo el código más o menos acabado, pero estoy convencido que habrá maneras de mejorarlo y dejarlo más breve y elegante. He investigado pero no consigo abreviarlo; creo que se podría hacer con “for”, con algún array, etc….pero no consigo hacerlo.
Al grano. El video juego consiste en lo siguiente:
· El juego se juega con una cuenta atrás. Tengo varios movieclips (fichas de diferentes colores) en la librería. Creo instancias de cada uno de ellos con attachmovie. Tiene que aparecer una instancia cada 3 seg.
Las instancias aparecen en el escenario siempre en el mismo punto.
· Una vez en el escenario, las instancias se mueven por una cadena de montaje. El objetivo del juego es llevar a cada ficha a su destino (hay diferentes posibles finales de la cadena de montaje, con un color asignado a cada uno; tantos como colores tienen las diferetes fichas).
Para conseguir esto, hay botones que cambian el recorrido de la cadena de montaje
Aquí está el código resumido:
Código ActionScript :
var sa:Number=121; // Segundo Actual. El reloj arranca en el segundo 121 //y esta variable se va actualizando. var sinicioficha:Number=120; //Segundo en el que empiezan a salir las // fichas. var dif:Number=0;//Diferencia entre sa y sinicioficha para que se cumpla // la condición "*1" .Se actualiza luego a 3, 6,... var vb1:Boolean=false; //variable del botón 1 que indicará si // la ficha cambia su dirección al pasar por el cruce o no. var i:Number=0; //variable para renombrar la ficha e indicar el nivel //de cada una cuando hago attachmovie. var DireccionXficha1:Boolean = false;//tengo q hacer 2 var DireccionYficha1:Boolean = false;//variables de dirección //para cada ficha?? Es necesario??... ... var DireccionXficha10:Boolean = false; //esto se puede... var DireccionYficha10:Boolean = false; //..hacer de otra manera?? temporizador = setInterval (this, "ticktack", 1000); //la función ticktack se ejecuta cada segundo. function ticktack(){ //esta función cada segundo... sa--; //resta un segundo a la variable sa if (sa==sinicioficha-dif) { //*1 // CADA VEZ QUE SE CUMPLE LA PROPIEDAD *1 i+=1;// saca una ficha dif+=3; //aumento la var dif a 3, que son el numero de seg que a partir //de ahora tardara cada ficha en aparecer this.attachMovie ("pelota", "bola"+i,i); //saco una instancia a la que llamo bola+"i" if (i==1){ bola1._x=250; bola1._y=100; }; //La misma pos inicial para todas las instancias. //..¿esto se puede hacer de otra manera?? if (i==10){ bola10._x=250; bola10._y=100; }; } }; avanza = setInterval (this, "actualiza", 15); //"actualiza" detectará qué dirección tiene que llevar cada ficha al pasar por una zona donde haya un botón de cambio de dirección. function actualiza(){ if (DireccionXbola1==false){ bola1._x+=1; } if (DireccionXbola1==true){ bola1._x-=1; } if (DireccionYbola1==false){ bola1._y+=1; } if (DireccionYbola1==true){ bola1._y-=1; } ... if (DireccionXbola10==false){ bola10._x+=1; } if (DireccionXbola10==true){ bola10._x-=1; } if (DireccionYbola10==false){ bola10._y+=1; } if (DireccionYbola10==true){ bola10._y-=1; } } //lo mismo de siempre: "esto lo puedo hacer más breve? this.onEnterFrame = function (){ //esta función detecta cuando una bola toca con una zona donde puede // tomar dos direcciones; y dependiendo del valor de la variable vb1 // (que cambiamos con un botón), cambiará de dirección o no if (this.bola1.hitTest(this.cambio) == true && (vb1==false)){ DireccionXbola1=false; } if (this.bola1.hitTest(this.cambio) == true && (vb1==true)){ DireccionXbola1=true; } // if (this.bola10.hitTest(this.cambio) == true && (vb1==false)){ DireccionXbola10=false; } if (this.bola10.hitTest(this.cambio) == true && (vb1==true)){ DireccionXbola10=true; } }
Pues eso, a ver si alguien me ilumina el caminoooooorrrr

Gracias de antemano
