//Realizado por:
// Jose Gonzalez
c.i. 14351122
// Hector Sevilla c.i. 12984956
// parque infantil
import
java.awt.*;
import
java.applet.*;
import
java.lang.Math.*;
class nino
implements Runnable{
Thread runner;
Image
imagen;
// Posicion en el EJE DE LAS X
protected int x;
// Posicion en el EJE DE LAS Y
protected int y;
// LARGO
protected int x2;
// ANCHO
protected
int y2;
// TIPO DE niño
protected int tipo;
//Componente X de la
VELOCIDAD
protected int velX;
//Componente en Y de
la VELOCIDAD
protected int velY;
//Componente X de la
VELOCIDAD CONTRARIA
protected int velXcon;
//Componente X de la
VELOCIDAD CONTRARIA
protected int velYcont;
public nino (int pox,int poy,int
tx,int ty,int velocidadX,int velocidadY, int type, Image
foto)
{//constructor
x = pox;
y = poy;
x2 = tx;
y2 = ty;
velX = velocidadX;
velY = velocidadY;
tipo = type;
imagen = foto;
}
public void start()
{
if
(runner == null){
runner
= new Thread(this);
runner.start();
}
}
public void run ()
{
for (i=1;i<=900;i++){
mover(velX,velY);
movercontrario(velXcont,velYcont);
try {
Thread.sleep(1000);
}
catch
(InterruptedException e){
}
}
}
public Image imagennino()
{
return
imagen;
}
public int poX()
//DEVUELVE L
POSICION EN EL EJE DE LAS X
{
return
x;
}
public int poY()
//DEVUELVE L POSICION EN EL EJE DE LAS
y
{
return
y;
}
public int derX()
//DEVUELVE EL ANCHO DEL NIÑO
{
return
x + x2;
}
public int abaY()
//DEVUELVE EL ANCHO DEL NIÑO
{
return
y + y2;
}
public int VX()
//DEVUELVE LA COMPONENTE X DE LA
VELOCIDAD
{
return
velX;
}
public int VY()
//DEVUELVE LA COMPONENTE y DE LA
VELOCIDAD
{
return
velY;
}
public int VXcont()
//DEVUELVE LA COMPONENTE X DE LA
VELOCIDAD CONTRARIA
{
return
velXcont;
}
public int VYcont()
//DEVUELVE LA COMPONENTE Y DE LA
VELOCIDAD
{
return
velYcont;
}
public void mover(int veloX, int veloY)
//MUEVE AL NIÑO
{
if
(this.tipo==1){
x = x + veloX;
y = y + veloY;}
else if (this.tipo == 2){
x
= x + veloX;
y
= y + ((int)((Math.random()*3)+1))-2;}
else
if (this.tipo == 3){
x
= x + veloX;
y = y + (((int)((Math.random()*3)+1))-2)
* veloY;}
//(int) Math.sin((double)x) * 2000;
}
public void movercontrario(int veloXcont, int
veloYcont)
{
if
(this.tipo==1){
x
= x + veloXcont;
y
= y + veloYcont;
x=x*(-1);
y=y*(-1);}
else if (this.tipo == 2){
x
= x + veloXcont;
y = y + ((int)((Math.random()*3)+1))-2;
x=x*(-1);
y=y*(-1);}
else if (this.tipo == 3){
x
= x + veloXcont;
y
= y + (((int)((Math.random()*3)+1))-2) * veloYcont;
x=x*(-1);
y=y*(-1);}
//(int) Math.sin((double)x) * 200000;
}
}
public class
parque extends Applet implements MousemotionListener{
int pox
int poy
//Posicion en el eje de las X donde
ocurrio un CLICK
int clickX;
//Posicion en el eje de las X donde ocurrio
un CLICK
int clickY;
//Posicion en el eje de las X donde se encuentra el mouse, no lo estamos usando para nada...
pox;
//Posicion en el eje de las y donde se encuentra el mouse, no lo estamos usando para nada...
poy;
//IMAGEN DE FONDO
Image fondo;
//IMAGENES DE
LOS NIÑOS
Image imagen1, imagen2, imagen3;
// UNA
'VARIABLE' AUXILIAR DE LA CLASE NINO, QUE NO ESTAMOS USANDO
nino ninoActual;
//UN
ARREGLO DE 2 NIÑOS, AQUI SE GUARDAN TODOS LOS NIÑOS
nino ninos[]
= new nino[2];
//INDICE DE
LOS 'FOR' EJEMPLO: for (i=1;1<=15;i++)
int i;
//... ANCHO
DEL NIÑO... SE NECESITA PARA SABER
//HASTA
DONDE PUEDE LLEGAR EL NIÑO CUANDO SE MUEVE HACIA LA DERECHA.....
//HACIA LA
IZQUIERDA, ES 0 (CERO)....
ancho=800;
//... ANCHO
DEL NIÑO... SE NECESITA PARA SABER
//HASTA
DONDE PUEDE LLEGAR EL NIÑO CUANDO SE MUEVE HACIA LA DERECHA.....
//HACIA LA
IZQUIERDA, ES 0 (CERO)....
alto=600;
public void init()
//inicializar
ambiente:
//obtener las imagenes, instanciar los niños
{
fondo
= getImage(getDocumentBase(),getParameter("fondo"));
imagen1 = getImage(getDocumentBase(),getParameter("imagen1"));
imagen2 = getImage(getDocumentBase(),getParameter("imagen2"));
imagen3 = getImage(getDocumentBase(),getParameter("imagen3"));
ninos[1]
= new nino(30,200,251,106,1,2,1,imagen1);
ninos[2]
= new nino(200,150,125,115,2,1,2,imagen2);
ninos[3] = new
nino(/*800*/600,300,100,66,-1,2,3,imagen3);
}
public void
mouseMoved(MouseEvent me)
{
px = me.getX();
py = me.getY();
repaint ()
}
public boolean mouseDown(Event e, int x, int
y) {
setBackground(Color.red);
botnmouse=true;
muevemouse=false;
clickX = x;
clickY = y;
for (i=1;i<=3;i++){
if
((ninos[i].posX() < clickX) && (ninos[i].derX() > clickX)
&& (ninos[i].posY() < clickY) && (ninos[i].abaY() >
clickY)){
ninos[i].asustar();
}
}
return true;
}
// public void update(Graphics g)
// {
// g.clipRect
(ninoActual.posicionX()-1,ninoActual.posicionY()-1,ninoActual.TX()+1,ninoActual.TY()+1);
//paint(g);
// }
public void dibujarnino (nino p, Graphics g)
{
g.drawImage(p.imagennino(),
p.posX(), p.posY(), this);
// if
(p.tipo == 2){
// g.setColor(Color.magenta);
// g.drawString("el
buey esta en "+p.posicionX()+", "+p.posicionY(),10,20);
// }
// Preguntar si la posicion del nino mas su tamanio < tamanio de la
parque
//esto
controla que el nino no se salga de la derecha ni de
la izquierda
if
((p.posX()>800-30)||(p.posX()<800-770)){
p.movercontrario
(p.VXcont(),p.VYcont());}
//if
((p.derX()<600-30)||(p.derX()600>ancho-570)){
// p.mover(p.VY()*(-1), p.VX());}
//if (ninos[1].derX()
< ninos[2].posX()){
// ninos[1]
= new nino(30,200,251,106,1,-2,1,imagen1);
//Para evitar q1ue choque con otro nino,
igual.
p.mover(p.VX(), p.VY());
ninoActual
= p;
//repaint();
//update(g);
//--
paint(g);
}
public void dibujarninos (Graphics g){
for
(i=1; i<=3; i++){
dibujarnino(ninos[i],
g);
//repaint();
}
//paint(g);
}
public void paint (Graphics g)
{
g.drawImage(fondo,0,0,this);
dibujarninos(g);
}
}
T.D.A.
El programa consta de un parque infantil, estilo los de la cadena de comida rápida McDonalds con un tobogán, una escalera para llegar hasta el tobogán y una piscina de pelotas, en este parque hay 4 niños, en edades comprendidas desde 1 hasta los 12 años, uno gordo y tres de contextura normal, el niño gordo sube la escalera mas lento que los otros tres, si al final del tobogán hay un niño obstruyendo en paso el niño que esta arriba le gritara al de abajo que se quite para poder lanzarse, el niño gordo se desliza a mayor velocidad que los demás niños del parque.
Clases
Clase niño: esta clase es la que va a crear a los niños
Clase parque: esta clase es lugar donde los niños van a jugar, aquí se encuentra el tobogán y la piscina de pelotas.
La herencia se ve en la clase parque para que los niños interactúen con el tobogán y la piscina de pelotas.

Dificultades encontradas
No se logro que el niño que esta arriba del tobogán le avise al que esta abajo a que se aparte para lanzarse. No se pudo manejar bien los applets y al momento de correr el programa hace lo que quiere, no se consiguió que el niño lanzara las pelotas de la piscina.
Conclusión
Este proyecto no se pudo desarrollar según las exigencias requeridas debido al poco entrenamiento impartido en clases, la programación sea cual sea debe ser practica, no teórica, solo se recibieron las aproximadamente 5 clases donde se trabajaron códigos orientados a objetos, a nuestro criterio personal, son insuficientes los ejemplos prácticos mostrados en clase; los ejemplos de applets que funcionaban para lograr manejar imagen y audio no corrieron, se tuvo que recurrir a tutórales del la pagina del grupo Sun para poder desarrollar el proyecto, y a pesar del esfuerzo no se logro que el proyecto corriera, por ello se presento solo el código orientado a objetos, con especificaciones de lo que realizan algunas líneas de código, para finalizar, se debe realizar secciones practicas ya que solo se aprende a programar programando, mostrando los codigos, y explicando sus funciones, solo la teoría da una idea de lo que es un programa pero solo el trato directo con el código da la destreza suficiente para poder realizar un proyecto de alta calidad y un optimo desempeño.