Este applet simula la creacion de una espacio, que contiene insectos virtuales
o bichos. Cada uno de estos bichos pertenece a una especie diferente.
Las diferentes especies pueden distinguirse en pantalla por su forma y color,
aunque internamente, existan otras características que los distinguen, como
tiempo de vida y fuerza de ataque
public class generamapa extends Applet{
int Dx;
int Dy;
//Estructura logica del bicho
int IdEspecie; //identificador de la especie
int TiempoVidaMax;//Tiempo maximo de vida del bicho
int MadurezRep; //Tiempo que debe esperar el bicho para poder reproducirse
int IngestaMax; //Cantidad maxima de alimento que puede ingerir el bicho
int Fuerza; //Fuerza de ataque del bicho
//Estructura fisica del bicho
int Npuntos; //Numero de puntos que forman el cuerpo
int []px; //puntos que forman el cuerpo
int []py;
int Npatas; //numero de patas del insecto
Color color; //color del bicho
public void paint(Graphics g){
//Dibuja distintos insectos virtuales en pantalla, dividiendo esta ultima
//en una cuadricula
double aux;
aux=size().width/10; Dx=(int)aux;
aux=size().height/10; Dy=(int)aux;
g.setColor(Color.white);
g.fillRect(0,0,size().width,size().height);
for(int i=0,x=0,y=0; i<100; i++,x++){
if(random(2)==1){
if(x>=9){x=0;y++;}
g.setColor(Color.white);
g.fillRect(x*Dx,y*Dy,Dx,Dy);
Crea(Dx,Dy);
Dibuja(g,x*Dx,y*Dy,Dx,Dy);}
else {g.setColor(Color.white); g.fillRect(x*Dx,y*Dy,Dx,Dy);}}
}
public void Crea(int Dx, int Dy){
//Cra un insecto virtual
random(1);
TiempoVidaMax=random(10000)+50;
MadurezRep=random(TiempoVidaMax);
IngestaMax=random(1000)+10;
Fuerza=random(100);
Npuntos=random(6)+3;
Npatas=2+random(8);
color=new Color(random(255),random(255),random(255));
px=new int[Npuntos]; py=new int[Npuntos];
px[0]=(int)(0.1875*Dx); py[0]=(int)(0.5*Dy); //primer punto
px[Npuntos-1]=(int)(0.9375*Dx); py[Npuntos-1]=(int)(0.5*Dy); //ultimo punto
for(int i=1; i<Npuntos-1; i++){
px[i]=(int)((0.6875*i*Dx/Npuntos)+(0.1875*Dx));
py[i]=random(0.25*Dy)+(int)(0.3125*Dy);
}
}
public void Dibuja(Graphics g,int h,int k,int Dx,int Dy){
//Dibuja un insecto virtual
int i,d;
d=random(10);
//Dibujando Antenas
g.setColor(Color.black);
g.drawLine ((int)(h+(0.125*Dx)) ,(int)(k+(0.5*Dy)) , h, (int)(k+(0.375*Dy)+d)
);
g.drawLine ((int)(h+(0.125*Dx)) ,(int)(k+(0.5*Dy)) , h, (int)(k+(0.625*Dy)-d)
);
//Dibujando la cabeza
g.drawOval((int)(h+(0.0625*Dx)) ,(int)(k+(0.375*Dy)) , (int)(0.125*Dx) , (int)(0.125*Dx)
);
g.setColor(color);
g.fillOval((int)(h+(0.0625*Dx)) ,(int)(k+(0.375*Dy)) , (int)(0.125*Dx) , (int)(0.125*Dx)
);
//Dibujando las patas
g.setColor(Color.black);
for(i=0; i<Npatas+1;i++){
g.drawLine ( (int)(h+(0.6875*i*Dx/Npatas)+(0.25*Dx)) , (int)(k+(0.5*Dy)) , (int)(h+(0.6875*i*Dx/Npatas)+(0.25*Dx)-(0.0625*Dx)-d)
, (int)(k+(0.25*Dy)) );
g.drawLine ( (int)(h+(0.6875*i*Dx/Npatas)+(0.25*Dx)-(0.0625*Dx)-d) , (int)(k+(0.25*Dy))
,(int)(h+(0.6875*i*Dx/Npatas)+(0.25*Dx)) , k);
g.drawLine ( (int)(h+(0.6875*i*Dx/Npatas)+(0.25*Dx)) , (int)(k+(0.5*Dy)) , (int)(h+(0.6875*i*Dx/Npatas)+(0.25*Dx)-(0.0625*Dx)-d)
, (int)(k+(0.75*Dy)) );
g.drawLine ( (int)(h+(0.6875*i*Dx/Npatas)+(0.25*Dx)-(0.0625*Dx)-d) , (int)(k+(0.75*Dy))
, (int)(h+(0.6875*i*Dx/Npatas)+(0.25*Dx)) , k+Dy);}
//Dibujando el cuerpo
double y1,y2,m,x,y,auxx,auxy;
int j,l;
for(i=0;i<Npuntos-1;i++){
y1=k+py[i]+(((0.5*Dy)-py[i])*2);
y2=k+py[i+1]+(((0.5*Dy)-py[i+1])*2);
g.drawLine( h+px[i] ,k+py[i] , h+px[i+1] , k+py[i+1] );
g.drawLine( h+px[i] ,(int)y1 , h+px[i+1] , (int)y2 );}
}
int random(double num){
int i; double aux;
if(num==0) return 0;
for(i=10; i<1000000; i+=10)if(num-i<=0){aux=(Math.random()*i) % num;
return (int)aux;}
return 0;
}
int random(int num){
int i; double aux;
if(num==0) return 0;
for(i=10; i<1000000; i+=10)if(num-i<=0){aux=(Math.random()*i) % num;
return (int)aux;}
return 0;
}
}