Diapositiva 1
Transcripción
Diapositiva 1
Lenguaje de Programación I ActionScript y FlashPunk Nota: Mucho del código que se verá aquí corresponde a los tutoriales de FlashPunk, debido a que aquí se mostrarán las bases del lenguaje y el engine. Entity Métodos: •CollideWith(Entity) •DistanceFrom(Entity) •MoveBy(velX, vely) •MoveTo(x , y) •MoveTowards(x, y, vel) •Update() ** Atributos: •x •y •visible •Sprite •width •height World Métodos: •Add( Entity ) •Remove( Entity ) •RemoveAll() •Update() ** Atributos: Pseudo-código Clase Ball extiende de Entity inicio velocidadX = (aleatorio entre 10 y 20 / -10 y -20) velocidadY = (aleatorio entre 10 y 20 / -10 y -20) estado = HONDA; (HONDA, MIENDOSE) Update() inicio MoveBy( velocidadX, velocidadY). si y <= 0 o y >= 600 velocidadY = -velocidadY si CollideWith( Player1 ) o CollideWith( Player2 ) velocidadX = -velocidadX fin fin Código Class Ball extends Entity { velocidadX = (aleatorio entre 10 y 20 / -10 y -20); velocidadY = (aleatorio entre 10 y 20 / -10 y -20); Update() { MoveBy( velocidadX, velocidadY); if (y <= 0 || y >= 600) velocidadY = -velocidadY; if (CollideWith( Player1 ) || CollideWith( Player2 )) velocidadX = -velocidadX; } } Primeros Pasos Main package { import flash.display.Sprite; public class Main extends Sprite { public function Main() { trace("Hola Mundo"); } } } Package Se utilizan para organizar código, el cual puede tener un nombre para diferenciar distintos códigos. package MiJuego { … } Import Indica el código que puede ser utilizado en una clase import flash.display.Sprite; Indica que es utilizado el código de flash.display.Sprite. Extends Sprite Indica que se ejecutará como un archivo swf. Método Main Todo programa necesita una entrada por donde comenzar a ejecutar. Main es el primer código que se ejecuta, y hace todas las llamadas para que el programa se ejecute. Método Trace trace("Hola Mundo"); Muestra un texto en consola. Flash Punk Clase Main package { import net.flashpunk.Engine; public class Main extends Engine { public function Main() : void { super(800, 600, 60, false); } } } FlashPunk super(width, height, framerate, fixed-framerate) Le indica al engine la configuración inicial del juego, en cuanto al tamaño de la pantalla y el framerate. World Métodos: •Add( Entity ) •Remove( Entity ) •RemoveAll() •Init() ** •Update() ** Atributos: World package { import net.flashpunk.World; public class MyWorld extends World { public function MyWorld() { } } } World package { import net.flashpunk.Engine; import net.flashpunk.FP; public class Main extends Engine { public function Main() { super(800, 600, 60, false); FP.world = new MyWorld(); } } } World En esta clase se debiesen crear todos los elementos del juego. Player. Escenario. Enemigos. … Se debe agregar en el main, al engine como el mundo actual del juego. FP Clase de configuración de FlashPunk. Contiene las variables principales del juego, tales como la cámara, el mundo, la pantalla, etc. Se pueden acceder a dichas variables desde cualquier punto del juego. Entity Métodos: •CollideWith(Entity) •DistanceFrom(Entity) •MoveBy(velX, vely) •MoveTo(x , y) •MoveTowards(x, y, vel) •Update() ** Atributos: •x •y •Visible •width •height Entity package { import net.flashpunk.Entity; public class Player extends Entity { public function Player () { } override public function update():void { trace(“El player se esta actualizando..."); } } } Entity package { import net.flashpunk.World; public class MyWorld extends World { public function MyWorld() { add(new Player() ); } } } Entity Representa a una entidad del juego. Para que esta se integre al juego, la clase del mundo debe agregarla. Introducción a ActionScript Variables Representan a los atributos de las clases. Pueden ser de diferentes tipos de datos: int, float, bool, string. var velocidad:int = 0; Clases y Objetos Para crear instancias en el juego se deben crear objetos. Se utiliza el operador “new” para crear una nueva instancia de una clase en el juego. var player:Player; player = new Player(); Más Sprite package { import net.flashpunk.Entity; import net.flashpunk.graphics.Image; public class MyEntity extends Entity { [Embed(source = 'assets/player.png')] private const PlayerSprite:Class; public function MyEntity() { graphic = new Image(PLAYER); } } } Movimiento Variables: x, y. Métodos: moveBy(velX, velY); moveTo(x, y); Teclado override public function update():void { if (Input.check(Key.SPACE)) { // si tecla SPACE está siendo presionada } } if (Input.check(Key.RIGHT)) { // si tecla RIGHT está siendo presionada } if (Input.check(Key.W)) { // si tecla W está siendo presionada } Teclado if (Input.pressed(Key.SPACE)) { // indica el momento en que es presionada la tecla } if (Input.released(Key.SPACE)) { // indica el momento en que es soltada la tecla. }