Página inicial

Unidad 23. Juegos (VII).


Funciones Avanzadas

 

También veremos otras opciones que nos ayudarán mucho a la hora de crear juegos. Una de ellas es la de la posibilidad de darle aleatoriedad a los componentes.



Podemos utilizar la función que incorpora Flash Math.random() que devuelve un número pseudo-aleatorio entre 1 y 0.

Su uso es simple sólo deberás escribir:

var miNumero:Number = Math.random();

Su uso es tan útil que a raíz de esta función se ha creado este trozo de código que casi utilizarás en la mayoría de tus películas que contengan componentes aleatorios:

function randRange(minNum:Number, maxNum:Number):Number {

	return (Math.floor(Math.random()*(maxNum-minNum+1))+minNum);

}

Esta función te devuelve un número aleatorio entre dos números:

var miNumero:Number = randRange(1, 100);

En este ejemplo se almacenará un número de 1 a 100 en la variable miNumero.

En el juego de ejemplo que estamos viendo hemos utilizado esta función para generar la caída de proyectiles:

var randomProyectil:Number = randRange(1, 3);

var miProyectil:MovieClip = this.attachMovie("proyectil"+randomProyectil, "proyectil"+profundidad, profundidad);

profundidad++;

		

miProyectil._y = -miProyectil._width;



var scale:Number = randRange(80, 100);

		

miProyectil._xscale = scale;

miProyectil._yscale = scale;

miProyectil._alpha = scale;

miProyectil.speed = velocidad+randRange(0, 3)+level;

		

miProyectil._x = randRange(10, 540);

Como ves tenemos randomizados muchos de los procesos. El primer randRange decide qué tipo de proyectil se lanzará. El segundo nos da el tamaño (_xscale e _yscale) y la transparencia que tendrá. El trecer número aleatorio se lo asignaremos a la velocidad. Y por ultimo utilizamos un cuarto randRange para posicionar el proyectil en una coordenada x de la pantalla.

De esta forma hemos logrado un abanico de posibilidades muy amplio en posibilidades de proyectiles.



Otra de las funciones que te vendrán muy bien es la de dotar de velocidad a los movimientos de los objetos.

Observa el código que hemos introducido en el juego:

miProyectil.speed = velocidad+randRange(0, 3)+level;

Hemos creado una velocidad inicial y le hemos sumado una aleatoria para cada elemento, luego lo hemos asociado a una propiedad speed que hemos añadido al elemento. De hecho, a esa velocidad se le suma la que tiene el nivel del juego que va aumentando a medida que se van eliminando proyectiles.

De ahí que cuando asignamos el movimiento del elemento:

this._y += this.speed;

Lo hacemos refiriéndonos a la velocidad, así podemos variarla en cualquier momento aumentándola o reduciéndola según nuestros propósitos.



Por último veremos algo que nos permitirá mostrar información a los usuarios para que ellos tengan conocimiento de cómo se está desarrollando la partida. Esto lo haremos con los textFields. Los textFields pueden ser elementos que hayamos creado antes de publicar la película, así que no tendremos problemas con ellos.

Simplemente los declararemos como texto dinámico e iremos modificando su contenido. Pero, ¿Y si queremos crear un campo de texto mediante ActionScript?

Muy sencillo, te bastarán unas pocas líneas para conseguirlo:

var miFormato:TextFormat = new TextFormat();

miFormato.bold = true;

miFormato.font = "Arial";

miFormato.size = 12;

miFormato.color = 0xFFFFFF;

miFormato.align = "left";



this.createTextField("estadisticas_txt", 5000, 10, 0, 530, 22);

estadisticas_txt.setNewTextFormat(miFormato);

estadisticas_txt.selectable = false;

estadisticas_txt.tabStops = [100, 200, 300, 400];

Este es el código que hemos utilizado en el juego.

Puedes ver que hemos creado un objeto llamado miFormato con unas características básicas que podremos aplicar sobre cualquier texto de nuestra película. Luego mediante la función createTextField hemos creado el campo.

Veamos cual es su sintaxis:

createTextField(nombreInstancia, profundidad, coordenadaX, coordenadaY, anchura, altura);

Como puedes ver, otra vez nos encontramos con los niveles que utilizábamos con la función attahMovie. Simplemente asegúrate de que no repites el nivel y todo irá bien.

Ahora sólo hará falta remitirse a la propiedad text del texto que hemos creado para darle un valor, y el texto se mostrará en pantalla:

estadisticas_txt.text = "Estas son las estadísticas del juego";

Las propiedades de formato de texto que hemos utilizado son las más comunes, si necesitas un listado completo de ellas puedes visitar nuestra sección avanzada. tema avanzado



  Ejercicios del Tema 23

  Prueba evaluativa del Tema 23.




 


© aulaClic. Todos los derechos reservados. Free Computer tutorials. Prohibida la reproducción por cualquier medio.
Septiembre - 2007.