Codigo del Applet
import java.awt.*;
import java.applet.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Laberinto3 extends Applet implements MouseListener,ActionListener
{
int x=15,y=425,Azar=1,Encontrado=0;
int v[][]=new int[19][20];
int h[][]=new int[20][19];
int L[][]=new int[20][20];
Button N,S;
TextField T;
long t=200;
public void init()
{
setBackground(Color.gray);
addMouseListener(this);
N=new Button("Nuevo");
N.addActionListener(this);
S=new Button("Salir 1x1");
S.addActionListener(this);
T=new TextField(14);
add(N);
add(S);
add(T);
T.setText("Bienvenido");
}
/* parte de los botones */
public void actionPerformed(ActionEvent event)
{
if(event.getSource()==N)
{
Azar=1;
L[19][0]=1;
repaint();
T.setText("Nuevo");
}
if(event.getSource()==S)
{
Encontrado=0;
for(int i=0;i<20;i++)
for(int j=0;j<20;j++)
if(L[i][j]>0)
L[i][j]=1;
L[19][0]=2;
if(L[(x-15)/20][(y-45)/20]>0)
{
salir(19,0,19,0);
if(x!=395||y!=45)
T.setText("กก Sigue !!");
else
T.setText("กก Listo !!");
}
else
{
T.setText("กก Imposible Salir !!");
}
repaint();
}
}
/* parte del Mouse */
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseReleased(MouseEvent e){}
public void mousePressed(MouseEvent e)
{
if(e.getY()>=35&&e.getY()<435&&e.getX()>=5&&e.getX()<405)
{
x=e.getX();
y=e.getY();
y=y-35;y=(int)y/20;y=(y*20)+45;
x=x-5;x=(int)x/20;x=(x*20)+15;
repaint();
}
}
/*Parte de Dibujo*/
public void paint(Graphics g)
{
g.setColor(Color.white);
Polygon p= new Polygon();
p.addPoint(5,35);p.addPoint(425,35);p.addPoint(425,55);p.addPoint(405,55);p.addPoint(405,435);p.addPoint(5,435);
g.fillPolygon(p);
laberintoazar();
dibujalaberinto(g);
g.setColor(Color.red);
g.fillOval(x-4,y-4,8,8);
}
/*Calculos*/
public void laberintoazar()
{
int i,j;
if(Azar==1)
{
for(i=0;i<19;i++)
for(j=0;j<20;j++)
v[i][j]=(int)(2*Math.random());
for(i=0;i<20;i++)
for(j=0;j<19;j++)
h[i][j]=(int)(2*Math.random());
}
Azar=0;
if(L[19][0]!=2)
{
for (i=0;i<20;i++)
for(j=0;j<20;j++)
L[i][j]=0;
L[19][0]=1;
rellenaL(19,0);
}
}
public void dibujalaberinto(Graphics g)
{
int i,j;
g.setColor(Color.black);
for(i=0;i<19;i++)
for(j=0;j<20;j++)
{
if(v[i][j]==1)
g.drawLine((i*20)+25,(j*20)+35,(i*20)+25,(j+1)*20+35);
}
for(i=0;i<20;i++)
for(j=0;j<19;j++)
{
if(h[i][j]==1)
g.drawLine((i*20)+5,(j*20)+55,(i+1)*20+5,(j*20)+55);
}
}
public void rellenaL(int a, int b)
{
int X=a,Y=b;
if(X-1>=0&&L[X-1][Y]==0&&v[X-1][Y]==0)
{
L[X-1][Y]=1;
rellenaL(X-1,Y);
}
if(X+1<=19&&L[X+1][Y]==0&&v[X][Y]==0)
{
L[X+1][Y]=1;
rellenaL(X+1,Y);
}
if(Y-1>=0&&L[X][Y-1]==0&&h[X][Y-1]==0)
{
L[X][Y-1]=1;
rellenaL(X,Y-1);
}
if(Y+1<=19&&L[X][Y+1]==0&&h[X][Y]==0)
{
L[X][Y+1]=1;
rellenaL(X,Y+1);
}
}
/*salir*/
public void salir(int A,int B,int a,int b)
{
if(A!=(x-15)/20||B!=(y-45)/20)
{
a=A;b=B;
if(a-1>=0&& Encontrado==0&& L[a-1][b]==1&& v[a-1][b]==0)
{
L[a-1][b]=2;
salir(a-1,b,A,B);
}
if(a+1<=19&& Encontrado==0&& L[a+1][b]==1&& v[a][b]==0)
{
L[a+1][b]=2;
salir(a+1,b,A,B);
}
if(b-1>=0&& Encontrado==0&& L[a][b-1]==1&& h[a][b-1]==0)
{
L[a][b-1]=2;
salir(a,b-1,A,B);
}
if(b+1<=19&& Encontrado==0&& L[a][b+1]==1&& h[a][b]==0)
{
L[a][b+1]=2;
salir(a,b+1,A,B);
}
}
if(A==(x-15)/20&&B==(y-45)/20)
{
Encontrado=Encontrado+1;
if(x!=395||y!=45){x=(a*20)+15;y=(b*20)+45;}
repaint();
}
}
}