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();
		}	
			
	}
	
	
	
}