ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Empleados


Enviado por   •  21 de Octubre de 2014  •  4.322 Palabras (18 Páginas)  •  152 Visitas

Página 1 de 18

Packages empleados

Empieza con estas tres lineas:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

que indican los packages en los cuales se encuentran las clases e interfaces que vamos a usar.

En Java las clases se pueden agrupar dentro de packages. Dentro de un package el nombre de una clase debe ser único, no puede existir otra clase en ese package con el mismo nombre. No hay ningún problema si tenemos dos o más clases con el mismo nombre siempre y cuando estén dentro de packages diferentes. Esto es para que sea más sencillo seleccionar el nombre para una clase sin tener que preocuparse de si otro programador ya empleó ese mismo nombre para otra clase.

Cuando deseamos emplear clases de otro package es necesario indicarselo al compilador, por medio de un import, para que sepa donde buscarlas. En este caso le estamos indicando que las busque en los packages java.awt, java.awt.event yjavax.swing.

Nombre de la clase, constantes y variables de instancia

La linea siguiente:

public class Demo1 extends JComponent {

indica el inicio de la definición de la clase Demo1. Dice que Demo1 extiende JComponent, eso indica que hereda de la claseJComponent. Un JComponent es un componente gráfico de Swing que se puede incluir dentro de una ventana, sabe cómo desplegarse y cómo interactuar con el jugador. En este caso el componente gráfico es el area de la ventana en donde vamos a mostrar la animación y no tiene ninguna interacción con el "jugador".

Las lineas siguientes declaran algunas constantes:

private final static int ANCHO = 512;

private final static int ALTO = 384;

private final static int DIAMETRO = 20;

Las constantes ANCHO y ALTO indican el ancho y alto del componente, mientras que DIAMETRO es el diametro de la bola que vamos a dibujar. Todas estas dimensiones están en unidades de pixeles.

Después vienen las declaraciones de la variables de instancia empleadas para almacenar la posición y velocidad de la bola:

private float x, y;

private float vx, vy;

Las variables x y y son para almacenar la coordenadas de la esquina superior izquierda de la bola. Sí, ya sé que una bola no tiene esquinas. Imagínate que la bola está dentro de un cuadrado; estamos hablando de la esquina superior izquierda de ese cuadrado:

Al dibujar dentro de un componente de Swing, el origen del sistema de coordenadas está en la esquina superior izquierda del componente (en este caso es el componente Demo1); los valores en el eje x se incrementan hacia la derecha y los valores en el eje y se incrementan hacia abajo:

Las coordenadas se miden en pixeles y deben ser números enteros. Si estás leyendo esta explicación cuidadosamente, seguramente te preguntas en este momento: ¿Si las coordenadas tienen que ser números enteros, entonces porqué estamos usando variables de tipo float para almacenarlas? La respuesta es simple, las almacenamos como floatporque así es más sencillo hacer los cálculos para el movimiento de la bola y basta con redondear los valores a enteros cuando queremos dibujarla.

La velocidad de la bola es un vector. Tiene una magnitud --qué tán rápido va la bola-- y una dirección --hacia donde va la bola. Podríamos almacenar esta información en dos variables, una llamada magnitud y otra llamada dirección, pero resulta más práctico para los cálculos de movimiento representar el vector velocidad separado en sus componentes horizontal y vertical dentro de las variables vx y vy respectivamente:

En otras palabras, vx y vy representan la velocidad horizontal y la velocidad vertical de la bola. Si vx es positivo la bola se está moviendo hacia la derecha, y si es negativo se está moviendo hacia la izquierda. De la misma manera, si vy es positivo la bola se esta moviendo hacia abajo, y si es negativo se está moviendo hacia arriba. El movimiento exacto de la bola es la suma de su movimiento horizontal y su movimiento vertical.

El constructor

La parte siguiente del programa:

public Demo1() {

setPreferredSize(new Dimension(ANCHO, ALTO));

x = 10;

y = 20;

vx = 300;

vy = 400;

}

Es el constructor que se ejecuta cuando creamos la instancia de la clase Demo1 (el componente) donde se muestra la animación de la bola.

Lo primero que hace es llamar al método setPreferredSize() para definir de que tamaño debe ser el componente al desplegarse en la pantalla. Los componentes de Swing tienen un tamaño máximo, un tamaño mínimo y un tamaño preferido. Swing emplea esta información para acomodar los componentes dentro de una ventana y asignarles su tamaño. En este programa, el único componente que contiene la ventana es una instancia de Demo1 y, por lo tanto, basta con definir su tamaño preferido ya que no tiene que compartir la ventana con ningún otro componente. Este método espera como argumento un objeto de tipo Dimension, así que creamos uno con el ancho y alto que debe tener el componente y se lo pasamos a setPreferredSize().

Después, le damos una posición inicial a la bola --en las variables x y y--, y también una velocidad inicial --en las variables vx y vy. Las velocidades están en unidades de pixeles/segundo, es decir que empieza con una velocidad horizontal de 300 pixeles/segundo y una velocidad vertical de 400 pixeles/segundo.

La física: movimiento y colisiones

Después viene la definición del método física():

private void fisica(float dt) {

x += vx * dt;

y += vy * dt;

if (vx < 0 && x <= 0 || vx > 0 && x + DIAMETRO >= ANCHO)

vx = -vx;

if (vy < 0 && y < 0 || vy > 0 && y + DIAMETRO >= ALTO)

vy = -vy;

}

En este método es donde se calcula la nueva posición de la bola y si es que hay que modificar su velocidad porque chocó contra alguno de los bordes. Nota: cuando hablamos aquí de modificar su velocidad hay que recordar que estamos tratando con un vector y hay dos cosas que se pueden modificar: su magnitud y su dirección. En este caso, cuando la bola choca contra un borde, no modificamos su magnitud, la bola sigue yendo igual de rápido; lo que modificamos es su dirección, ahora va hacia otro lado.

El método fisica() recibe un parámetro dt que le indica el tiempo transcurrido, en segundos, desde la última vez que se movió la bola. Usamos ese tiempo transcurrido para calcular cual debe ser su nueva posición en las dos lineas siguientes:

x += vx * dt;

y

...

Descargar como (para miembros actualizados) txt (25 Kb)
Leer 17 páginas más »
Disponible sólo en Clubensayos.com