jueves, 25 de noviembre de 2010

VECTORES Y MATRICES

ANTES QUE NADA LES DEJO UN VIDEO BÁSICO DE ARREGLOS PARA ENTENDERLO






ARREGLOS


Un arreglo, en el argot informático "array", es una matriz de 1xn elementos. En java los Arrays deben inicializarse con un tamaño concreto, y debes controlar si en la posicion del array existe un elemento o está vacío para evitar nullpointers.


Si el array tiene n elementos que lo llenan completamente, las posiciones de los mismos van desde 0 (1º elemento) hasta n-1 (último elemento).


Se pueden declarar arreglos de clases, no solamente de tipos primitivos:

Punto [ ] polígono;
Persona [ ] familia;

Cuando creamos su contenido:

Familia = new Persona[5];


Sólo se crean las referencias a cinco futuros objetos del tipo Persona, pero no esta creando esos objetos. Es como haber declarado cinco variables de ese tipo, aunque todas agrupadas bajo la forma de un vector. En algún momento esos lugares del arreglo, se poblarán con referencias a objetos del tipo Persona, pero en este momento, sólo se declaro el arreglo, y no se crearon sus valores.


Luego tendremos que crear los objetos de uno, por ejemplo:

Familia[0] = new Persona("Adan");

Observamos que el primer elemento del arreglo se referencia con el índice 0, entre corchetes [ ].


Una de las características que acercan a los arreglos a las clases, es que tiene un atributo, length, que devuelve la cantidad de sus elementos. Es típico usar:

for (int k=0; k
En Java se controlan los valores correctos de los índices. Si en el arreglo familia definido arriba, se accede a un elemento no definido, como familia [20], se produce una excepción IndexOutOfBoundsException. Como siempre, Java nos protege de los habituales errores de programación. Esta excepción permite detectar accesos inválidos en ejecución, que en otro caso, podrían provocar acceso a memoria no asignada, o peor aún, a memoria asignada a otros objetos de nuestro proceso.


Un arreglo es un valor como cualquier otro, en Java, y puede enviarse como argumento a un método. En ese caso, el método no recibe un duplicado del arreglo, sino simplemente una referencia.
Un caso que apareció desde los primeros ejemplos, se encuentra en el método main() de varias clases con punto de entrada:

public static void main(String [] args)

En estos casos, args recibe un arreglo de objetos String, que son los parámetros recibidos por el programa.


MATRICES EN JAVA



Se podría decir que es la unión de dos vectores por eso se le conoce como bidimensional, o arreglo de arreglo, aquí uno ejemplo bajado de internet.



Existen los arreglos de múltiples dimensiones, por ejemplo, podemos declarar:

double [ ][ ] matriz;

En estos casos, creamos primero un vector de filas, por ejemplo:

matriz = new double[10][ ];

¿Qué significa esta notación? Estamos creando un vector de 10 elementos, cada uno de los cuales será a su vez un arreglo de reales. Esos diez elementos todavía no están inicializados.

Podemos luego crear:

matriz[0] = new double[10];
matriz[1] = new double[7];
...

Notamos que no necesariamente es una matriz rectangular. Más bien, es un vector de vectores. La primer "fila" contendrá 10 elementos reales, mientras que la segunda apenas 7.

No podemos cambiar el tamaño de un vector, una vez creado. Pero podemos tranquilamente asignar un nuevo valor de vector a una variable de ese tipo:

puntos = new Punto[10];
...
puntos = new Punto[20]; // Nuevo vector






El anterior objeto referenciado por puntos, en caso de no estar referenciando en ninguna otra parte del sistema, será liberado por el proceso de recolección de basura, como cualquier otro objeto inalcanzable por nuestro programa.
Aplicándolo a un ejemplo. Seguimos con los ejemplos simples de consola, escrito en un archivo Argumentos.java:


// Clase Argumentos

public class Argumentos {

// Método de entrada

public static void main(String [] args) {
int k; // variable índice

for (k=0; k System.out.println("Argumento " + k
+ ": " + args[k];
}
}


Compilamos el programa y lo ejecutamos.

Al principio, no sucede nada, no produce salida. Claro, el programa toma los argumentos que le pasamos, y los recibe como parámetros en el main. Esta forma de tomar los parámetros de la línea de comando, es lo normal en Java. El método main() que venimos usando desde hace un tiempo en los ejemplos, siempre tiene un arreglo de String como parámetro.

En ese argumento, Java coloca las palabras que se le pasaron al programa en la línea de comando, cuando se le invocó. Si ejecutamos:

produce como salida:

Argumento 0: alfa
Argumento 1: beta
Argumento 2: gamma

Vemos que en la declaración del argumento, no viene el tamaño del arreglo: se desconoce ese dato hasta la ejecución. Por eso, en el ciclo for usamos la expresión

k < args.length para conseguir la cantidad de elementos recibidos.

Aqui un ejercicio básico para ingresar el dato de la matriz y luego imprimirlo


import java.io.*;
public class matrices {

public static void main(String[] args)throws IOException {
//introducimos el numero de filas y columnas de la matriz
BufferedReader lee=new BufferedReader (new InputStreamReader (System.in));
int nfilas,ncols;
//numero de columnas
System.out.println("introduzca el numero de columnas de la matriz");
ncols=Integer.parseInt(lee.readLine());
//numero de filas
System.out.println("introduzca el numero de filas de la matriz");
nfilas=Integer.parseInt(lee.readLine());
float[][]m=new float[nfilas][ncols];
int i=0;
int j=0;
System.out.println("digite los valores de la matriz");//con for anidados

for(i=0;i {
for (j=0;j {
System.out.println("m[" +i+"]["+j+"]=");

m[i][j]=Integer.parseInt(lee.readLine());
}
}

//suma de las filas
for(i=0;i {
float sumafila=0;
for (j=0;j {
sumafila+=m[i][j];
}
System.out.println("suma de la fila"+nfilas+"="+sumafila);
}
}}




Método que muestra los elementos de una matriz multidimensional
public static void mostrarmatriz(double matriz[][]){
int i,j;int filas=matriz.length;int columnas=matriz[0].length;//recorrido de las filas de una matrizfor(i=0;i //recorrido de los elementos de una filafor(j=0;j }}

SWING

El paquete SWING en java o modo grafico en java es de fácil manejo para las personas que quieran programar GUIS (Interfaces Graficas de Usuario).
SWING es muy cómodo abarcando botones paneles y marcos, a difererncia de AWT y APPLETS; este paquete gráfico no necesita muchos arreglos en cuestion de lineas de código.

todos sus componentes se identifican con el paquete import javax.swing.*, esta es la forma como importamos nuestro SWING. todos los componentes de SWING lo componemos al iniciar con J. Eje: Los componentes de AWT son diferentes. La clase Frame en AWT es remplazada en SWING por JFrame.
El manejo de eventos que maneja el paquete SWING importa esto manejos por medio de AWT
por lo que este (SWING) hereda del otro(AWT); los eventos suelen ser eventos efectuados por el Mause, pero también hay diferente como por teclado etc...

La clase JFrame es la mas importante a la hora de hacer una interfaz gráfica porque es la que predomina una ventana; si no tuviéramos un JFrame como clase al hacer una ventana, no se podría mostrar el programa ya hecho. cada acción que el usuario hace atraves de un equipo programando en java esta haciendo o ejecutándose a en si mismo un evento.
objetos importantes en SWING:
JFrame= clase principal o independiente.
JPanel= panel dentro de una ventana o un marco
JButton= Clase Botton ( botón de escritura o mensaje)
JLabel = Etiqueta (dialogo dentro de un JFrame)
JTextArea= lineas de texto con sus coordenadas.

Intenta hacer este pequeño ejercicio, sencillo para aprender un poco sobre SWING en java.
crearemos una interfaz gráfica con los objetos o clases mencionados anteriormente.

import javax.swing.*; // con importar solo javax.swing.*; tomara todas las clases del mismo.
//import javax.swing.JFrame puede también ser importada si no le agregamos .*, a swing.


public class (nombre de la clase) {

public static void main(string [] args) {

JFrame miFrame = new JFrame(¨bloggre.com¨) ;// estamos creando una ventana o un Frame.
JButton miBotton = new JButton(¨comentarios¨); // construimos un Botton de texto
JPanel miPanel = new JPanel();
JTexArea miText = new JTextArea(8,6); // construimos un texto en cual podemos escribir cualquier cosa

//después añadimos unos elementos en otros utilizamos el método add.

miPanel.add (miText);
miPanel.add(miBotton);
miFrame.add(miPanel);

// hacemos visible nuestro elemento con mayor nivel utilizando el método true.

miFrame.setVisible(true);

// finalizamos nuestra creación de nuestros objetos
//esperamos que esta ayuda les sirva mucho

}
}















martes, 23 de noviembre de 2010

APPLETS

APPLETS

Que es un applet ?

Un applet es una miniaplicacion, escrita en java que se ejecuta en un browser(navegador) al cargar una pagina HTML que incluye información sobre el applet a ejecutar por medio de las tags .

Implementar Métodos applet

El applet Hola Mundo sólo implementa un método, el método paint.

Cada applet debe implementar, al menos, uno de los siguientes métodos:

public class Simple extends Applet {

. . .

public void init() { . . . }

public void start() { . . . }

public void stop() { . . . }

public void destroy() { . . . }

. . .

}

Métodos

init() :

Para inicializar el applet cada vez que se carga.

start() :

Para iniciar la ejecución del applet, una vez cargado el applet o cuando el

usuario vuelve a visitar la página que contiene el applet.

stop() :

Para parar la ejecución del applet, cuando el usuario abandona la página o

sale del navegador.

destroy() :

Realiza una limpieza final para preparar la descarga.

Threads o hilos de ejecucion

Es una característica que permite a una aplicación realizar varias tareas a la vez Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente.

Un hilo es básicamente una tarea que puede ser ejecutada en paralelo con otra tarea.

La principal utilización de thread en un programa es para el aislamiento y sincronización de tareas.

Clase thread

La forma más directa para hacer un programa multi-thread es extender la clase Thread, y redefinir el método run(). Este método es invocado cuando se inicia el thread

LA INTERFACE RUNNABLE

La interface Runnable proporciona un método alternativo a la utilización de la clase Thread, para los casos en los que no es posible hacer que nuestra clase extienda la clase Thread. Esto ocurre cuando nuestra clase, que deseamos correr en un thread independiente deba extender alguna otra clase. Dado que no existe herencia múltiple, nuestra clase no puede extender a la vez la clase Thread y otra más. En este caso nuestra clase debe implantar la interface Runnable, variando ligeramente la forma en que se crean e inician los nuevos threads.

Ejemplo:

Ciclo de vida del thread

Componentes de los applet

TETXT FIELD:

ESTA CLASE ENCAPSULA LAS VARIABLES Y LOS METODOS UTILIZADOS PARA LA INTERFACE CON EL USUARIO.

UTILIZADO PARA CAPTURAR UN DATO EN CASO DE QUE EL USUARIO LO REQUIERA .

EJEMPLO DEL TEXT FIELD:

Public void init()

{

TextField t = new TextField (20);

Add(t);

}

TextField

resultado

TextField t ;

Public void init()

{

T = new TextField (“escriba su nombre”,40);

}

LA CLaSE LABEL

Se utiliza para escribir los nombres de los controles indicando al usuario que tipo de dato se debe insertar en el control.

Funcion del label()

Esta rutina es del constructor de la clase y tiene 3 prototipos:

Label()

Label(strnig n)

Label(string,int a)

Donde:

n=nombre del label

a=modo de alineamiento

Ejemplo:

l=new label(“codigo;”,label.left);

Ejemplo en java

La clase button

Esta clase se utiliza para dibujar el botón en la ventana principal del applet , un botón se pude asociar con una acción del mouse o una acción del usuario a través de una tecla .

Métodos:

Button() , getlabel();, paramstring(); setlabel();

La clase checkbox

Esta clase se utiliza para conformar un grupo de botones de chequeo.

La funcion checkbox

Este método corresponde al constructor de la clase .existen 3 cpnstructores:

Checkbox()

Checkbox(string s,checkboxGroup g ,bolean b)

Checkbox(String s)

Donde:

s=Indica el nombre que identifica el botón de chequeo.

g=Indica a que grupo de chequeo pertenece este botón de chequeo.

b=Determina si el botón queda activo(true) o queda desactivo(false).

La clase checkboxGroup

Esta clase se utiliza para conformar un grupo de botones de chequeo , existen grupos de botones no encapsulados donde pueden estar activos mas de uno , o grupos de botones encapsulados donde puede existir solo uno activo.

La clase choice

Esta clase se utiliza para manejar una lista de opciones:

FUNCION CHOICE()

Este método se utiliza para crear un objeto de tipo choice:

Choice c =new Choice();

Función void addItem(String)

Este método se utiliza para sumar una nueva opción a la lista de opciones:

La clase list

Esta clase encapsula un conjunto de métodos para manejar un menú de opciones con o sin barra de crol.

list ():esta rutina es el constructor de la clase , existen dos constructores list(), list(int,boolean).

El entero me permite determinar cuantas opciones pueden estar visibles , el segundo para un true permite escoger mas de una opción, para el false solo una.

Texto en html

html

head

title=Texto=/title

/head

body

Texto


applet codebase="." applet code="Texto.class" width=400 height=400

/applet

hr

a href="Texto.java">Codigo fuente /a

/body

/html

Texto en java

import java.awt.Graphics;

import java.awt.Font;

import java.awt.Color;

public class Texto extends java.applet.Applet implements Runnable

{

Font f = new Font ("Verdana",Font.BOLD,42);

Color colores [] = new Color[50];

Thread ejecutar;

public void start ()

{

if (ejecutar == null){

ejecutar = new Thread (this); //instanciar es poner en memoria luego hilarlo

ejecutar.start();

}

}

public void stop ()

{

if (ejecutar != null)

ejecutar = null;

}

public void run () {

float c=0;

for(int i=0; i

{

colores[i]=Color.getHSBColor(c,(float)5.0,(float)154.0);//argumentos de colores de HSB son flotantes

c+=0.2;

}

int i=0;

Thread ese = Thread.currentThread();

while(ejecutar==ese){

setForeground(colores[i]);

repaint();

i++;

try{

Thread.sleep(150);//milisegundos controla la ocurrencia (repeticiones) de la animación

}

catch (InterruptedException e){}

if(i==colores.length)

i=0;}

}//fin run

public void paint (Graphics var)

{

var.setFont(f);

var.drawString("HOLA",55,155);

}

}//fin programa

Reloj java

import java.awt.Graphics;

import java.awt.Font;

import java.util.Date;

import java.awt.Color;

public class Anireloj extends java.applet.Applet implements Runnable

{

Font f = new Font ("Verdana",Font.BOLD,42);

Date fecha;

Thread ejecutar; // generar hilos Thread pertenece a java lang ejecutar va acontener el objeto subproceso de la clase anireloj

public void start ()

{

if (ejecutar == null){

ejecutar = new Thread (this); //instanciar es poner en memoria luego hilarlo

ejecutar.start(); }

}

public void stop ()

{

if (ejecutar != null)

ejecutar = null;

}

public void run () {

Thread ese = Thread.currentThread();//current actuar

while (ese==ejecutar) {

repaint();

try{

Thread.sleep(1000);//milisegundos controla la ocurrencia (repeticiones) de la animación

}

catch (InterruptedException e){}

}

}//fin run

public void paint (Graphics var) {

fecha = new Date ();

var.setFont(f);

var.setColor(Color.green);

var.drawString(" "+fecha.toString(),55,155);

}//fin paint

}//fin programa

/**/

Florida en java

import java.awt.Graphics;

import java.awt.Polygon;

import java.awt.Color;

public class Florida extends java.applet.Applet {

public void paint (Graphics var) {

var.setColor(Color.cyan);

var.drawString("Florida",185,75);/*Mensaje*/

var.setColor(Color.green);

var.drawLine(185,80,222,80); /*dibuja linea*/

var.setColor(Color.orange);

var.drawRect(2,2,345,345); /*dibuja rectangulo 2,2(punto inicial)345 ancho, 345alto*/

var.setColor(Color.pink);

var.drawRoundRect(182,61,43,24,10,8); /*dibuja un rectangulo cuyos vertices van redondeado 182,61 punto superior izquierdo 43 ancho del rectangulo 24 alto (10,8)vertices de 10 de

ancho y 10 de largo*/

int x [] ={10,234,253,261,344,336,295,259,205,211,195,191,120,94,81,12,10};

int y [] ={12,15,25,71,209,278,310,274,188,171,174,118,56,68,49,37,12};

int pts = x.length;/*controlar los puntos length longitud*/

Polygon poli = new Polygon(x,y,pts); //se genera un objeto poli de la clase Poly

var.setColor(Color.magenta);

var.drawPolygon(poli);

/*dibujar mickey mouse*/

var.setColor(Color.black);

var.fillOval(235,140,15,15); /*dibuja ovalo(235,140)vertice superior (15,15)sobre el area dibuja el ovalo*/

var.fillOval(225,130,15,15);

var.fillOval(245,130,15,15);

/*dibujar el mar*/

for(int ax=4; ax<150;>

{

for (int ay = 70; ay<320;>

{

var.setColor(Color.blue);

var.drawArc(ax,ay,10,10,0,-180);//dibuja arco (ax,ay)punto vertice superior izquierdo

}

}

}

}

Archivo en java

import java.awt.*;

import java.applet.*;

class Cadena

{

String A[]={"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","novienbre","diciembre"};

public void llevar(StringBuffer s,int opc)

{

s.append(A[opc].toString());

}

}

public class archivos extends Applet

{

List l;

Button b;

int opc=-1;

StringBuffer s=new StringBuffer();

Cadena c=new Cadena();

TextArea T=new TextArea();

public void init()

{

b=new Button("Cargar");

add(b);

l = new List(6, false);

add(l);

add(T);

}

public void paint(Graphics g)

{

if(opc<0>=7)

showStatus("No se puede cargar dias");

else

{

T.appendText(s.toString());

l.addItem(s.toString());

s.setLength(0);

}

}

public boolean action(Event evt,Object obj)

{

if(evt.target==b)

{

opc++;

if(opc<7)

c.llevar(s,opc);

}

repaint();

return true;

}

}

Estrella en java

import java.applet.*;

import java.awt.*;

public class estrella extends Applet implements Runnable

{

int x =0;

int y =0;

boolean blink = true;

int valor_demora = 100;

public void init()

{

x = size().width /8;

y = size().height /8;

String parametro = getParameter("DEMORA");

if (parametro != null)

valor_demora = Integer.parseInt(parametro);

} //fin metodo init

public void start ()

{

(new Thread(this)).start();

}//fin start

public void run ()

{

while (true)

{

repaint();

demora();

}

}//fin metodo run

void demora()

{

try

{

Thread.sleep(valor_demora);

}

catch (InterruptedException e)

{

}

}//fin metodo demora

public void paint(Graphics _g)

{

Graphics g = _g.create();

if (blink)

{ g.setColor(Color.red);

blink=false;

}

else

{

g.setColor(Color.blue);

blink = true;

}

int ancho =( size().width *3)/4;

int alto =( size().height *3)/4;

g.translate(x,y);

Font fuente = new Font ("TimesRoman",Font.BOLD, alto/10);

g.setFont(fuente);

FontMetrics font_metrics = g.getFontMetrics();

g.drawString("JENNY'S",(ancho-font_metrics.stringWidth("JENNY'S")) /2, alto/2 + alto/20);

int puntos_x[] = new int [9];

int puntos_y[] = new int [9];

puntos_x[0] = ancho/2;

puntos_x[1] = (ancho*3)/8;

puntos_x[2] = ancho/10;

puntos_x[3] = (ancho*3)/8;

puntos_x[4] = ancho/2;

puntos_x[5] = (ancho*5)/8;

puntos_x[6] = (ancho*9)/10;

puntos_x[7] = (ancho*5)/8;

puntos_x[8] = ancho/2;

puntos_y[0] = (alto*9)/10;

puntos_y[1] = (alto*5)/8;

puntos_y[2] = (alto/2);

puntos_y[3] = (alto*3)/8;

puntos_y[4] = (alto/10);

puntos_y[5] = (alto*3)/8;

puntos_y[6] = (alto/2);

puntos_y[7] = (alto*5)/8;

puntos_y[8] = (alto*9)/10;

g.drawPolygon(puntos_x,puntos_y,9);

x+=(int) (Math.random()*10)-3;

y+=(int) (Math.random()*10)-3;

if (x<0)

x=0;

if (y<0)

y=0;

if(x>ancho/4)

x = ancho/4;

if (y > alto/4)

y= alto/4;

}

}/*fin de clase estrella*/

Calculadora en java

import java.applet.*;

import java.awt.*;

public class calculadora extends Applet

{

Label display;

float last_num=0;

char last_func=' ';

Panel bottom;

Panel num_panel;

Panel func_panel;

Button number []= new Button [10];

Button fuction []= new Button [6];

public boolean action (Event evt, Object what)

{

if (evt.target instanceof Button)

{

char but_val=((Button)evt.target).getLabel().charAt(0);

switch (but_val)

{

case '+':

case '*':

case '-':

case '/': last_num = Float.valueOf(display.getText()).floatValue();

last_func=but_val;

display.setText("");

break;

case '=': float curr_num =0;

float result=0;

curr_num=Float.valueOf(display.getText()).floatValue();

if(last_func!=' ')

{

switch(last_func)

{

case '+': result=last_num +curr_num;

break;

case '*': result = last_num * curr_num;

break;

case '-': result = last_num - curr_num;

break;

case '/': result = last_num / curr_num;

break;

}

last_num=result;

display.setText(String.valueOf(result));

}

break;

default:

if

(display.getText()=="0")

display.setText ("");

display.setText(display.getText()+but_val);

}

return true;

}

return false;

}

public void init()

{

setLayout (new BorderLayout ());

display = new Label ("0",Label.RIGHT);

add ("North",display);

bottom = new Panel ();

bottom.setLayout (new BorderLayout ());

num_panel = new Panel ();

num_panel.setLayout (new GridLayout (4,3));

for(int i=7;i>0;i=i-3)

for(int j=0;j<3;j++)

{

number [i+j]= new Button((new String ()).valueOf(i+j));

num_panel.add (number [i+j]);

}

number[0]=new Button ((new String()).valueOf(0));

num_panel.add (number[0]);

fuction [4]=new Button(".");

num_panel.add (fuction[4]);

fuction [5]= new Button ("=");

num_panel.add (fuction [5]);

bottom.add ("Center",num_panel);

func_panel=new Panel();

func_panel.setLayout (new GridLayout (4,1));

fuction [0]=new Button ("+");

fuction [1]=new Button ("-");

fuction [2]=new Button ("*");

fuction [3]=new Button ("/");

for (int x=0;x<4;x++)

func_panel.add (fuction [x]);

bottom.add("East", func_panel);

add ("Center", bottom);

}

}

Santafe en java

import java.awt.Graphics;

import java.awt.Polygon;

import java.awt.Color;

public class Santafe extends java.applet.Applet {

public void paint (Graphics var) {

var.setColor(Color.red);

var.drawLine(200,230,200,329); /*linea izquierda(100,80,100,179)*/

var.setColor(Color.red);

var.drawLine(350,230,350,329);/*linea derecha*/

var.setColor(Color.red);

var.fillRect(200,210,151,30); /*dibuja rectangulo 2,2(punto inicial)345 ancho, 345alto*/

var.setColor(Color.white);

var.drawString("SANTA FE",244,235);/*Mensaje*/

/*dibujar el ARCO*/

var.setColor(Color.red);

var.drawArc(200,250,150,150,1,-180);//dibuja arco (ax,ay)punto vertice superior izquierdo

/*CIRCULO*/

var.setColor(Color.red);

var.fillOval(292,305,45,45); /*dibuja ovalo(235,140)vertice superior (15,15)sobre el area dibuja el ovalo*/

/*ESTRELLA1*/

int x [] ={90,110,175,120,140,90 ,40 ,60, 5,70,90};

int y [] ={ 0, 65,65,105,165,130,165,105,65,65, 0};

int pts = x.length;

Polygon poli = new Polygon(x,y,pts);

var.setColor(Color.red);

var.fillPolygon(poli);

/*estrella 2*/

int x2 [] ={290,310,375,320,340,290 ,240 ,260, 205,270,290};

int y2 [] ={ 0, 65,65,105,165,130,165,105,65,65, 0};

int pts2 = x2.length;

Polygon poli2 = new Polygon(x2,y2,pts2);

var.setColor(Color.red);

var.fillPolygon(poli2);

/*estrella 3*/

int x3 [] ={490,510,575,520,540,490 ,440 ,460, 405,470,490};

int y3 [] ={ 0, 65,65,105,165,130,165,105,65,65, 0};

int pts3 = x3.length;

Polygon poli3 = new Polygon(x3,y3,pts3);

var.setColor(Color.red);

var.fillPolygon(poli3);

/*estrella4*/

int x4 [] ={90,110,175,120,140,90 ,40 ,60, 5,70,90};

int y4 [] ={ 200, 265,265,305,365,330,365,305,265,265, 200};

int pts4 = x4.length;

Polygon poli4 = new Polygon(x4,y4,pts4);

var.setColor(Color.red);

var.fillPolygon(poli4);

/*estrella5*/

int x5 [] ={490,510,575,520,540,490 ,440 ,460, 405,470,490};

int y5 [] ={ 200, 265,265,305,365,330,365,305,265,265, 200};

int pts5 = x5.length;

Polygon poli5 = new Polygon(x5,y5,pts5);

var.setColor(Color.red);

var.fillPolygon(poli5);

/*estrella 6*/

int x6 [] ={290,310,375,320,340,290 ,240 ,260, 205,270,290};

int y6 [] ={ 400, 465,465,505,565,530,565,505,465,465,400};

int pts6 = x6.length;

Polygon poli6 = new Polygon(x6,y6,pts6);

var.setColor(Color.red);

var.fillPolygon(poli6);

}

}

GATO JAVA

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Image;

public class Gato extends java.applet.Applet implements Runnable

{

Image [] movimiento = new Image [9];//en cada posicion de un vector se introduce una imagen de tamao 9

Image corre; //variable auxiliar que genera un comportamiento de la imagen

Thread ejecutar;

int x, y=50; //variables de recorridos

public void init (){

String mover [] = {"mov1.gif","mov2.gif","mov3.gif","mov4.gif","mov5.gif","mov6.gif","mov7.gif","mov8.gif","mov9.gif"};

for (int i=0; i

movimiento[i]=getImage(getCodeBase(),"Dibujos/"+mover[i]);//get image cargar imagen (metodo mutable)+ get code base enrutamiento de las imagenes

}//fin init

çnull){

ejecutar = new Thread (this); //instanciar es poner en memoria luego hilarlo

ejecutar.start(); }

}

public void stop ()

{

//if (ejecutar != null)

ejecutar = null;

} // fin stop

public void run () {

setBackground(Color.white);

moveje(0,size().width/2);// corre el gato fila (0,size)metodo de java lang que distribuye el tamao en pixeles (width/2) va hasta la mitad del tamao

corre = movimiento[2];

repaint();

pausa(1000);

corre = movimiento[3];//bostezo

repaint();

pausa(1000);

movparar(4);//rascarse 4 veces

movpausa(5);//dormir y respirar cinco veces

corre=movimiento[7];//despertar y correr

repaint();

pausa(500);

moveje(x,size().width-100);

}//fin run

void moveje(int inicio, int fin)

{

for(int i= inicio; i

{

x=i;

if(corre == movimiento[0])

{

corre = movimiento[1];

}

else

{

corre = movimiento[0];

}

repaint();

pausa(150);

}//fin for

}//fin moveje

void movparar(int tiempos )

{

for(int i= tiempos; i>0; i--)

{

corre= movimiento[4];

repaint();

pausa(150);

corre = movimiento[5];

repaint();

pausa(150);

}

}//fin movparar

void movpausa(int tiempos){

for(int i= tiempos; i>0; i--)

{

corre= movimiento[6];

repaint();

pausa(250);

corre = movimiento[7];

repaint();

pausa(250);

}

}//fin mov pausa

void pausa(int hora){

try {

Thread.sleep(hora);

}

catch (InterruptedException e){}

}//fin pausa

public void paint (Graphics ese) {

if (corre !=null)

ese.drawImage(corre,x,y,this);

}//fin de paint

} //fin programa