import java.awt.*; import java.applet.*; /*Modified by Carlos E. Yaguna Dept. Fisica Universidad de Antioquia Medellin-COLOMBIA */ public class Dla2 extends Applet{ private Dla2Canva theCanvas; private Button b1,b2,b3,b4,b5,b6; private Panel p1,p2,p3,p4; private Scrollbar s1,s2; private TextField t1,t2; public void init() { theCanvas=new Dla2Canva(); theCanvas.resize(300,300); theCanvas.setBackground(Color.black); s1=new Scrollbar(Scrollbar.VERTICAL,20,0,0,100); s2=new Scrollbar(Scrollbar.HORIZONTAL,10,0,0,38); t1=new TextField(" Num = 4"); t1.setEditable(false); t2=new TextField(" m=1"); t2.setEditable(false); b1=new Button(" Start "); b2=new Button(" Pause "); b3=new Button(" Stop "); b6=new Button(" Reset "); b4=new Button( "Num +"); b5=new Button( "Num -"); p1=new Panel(); p2=new Panel(); p3=new Panel(); p4=new Panel(); p1.setLayout(new GridLayout(6,1)); p2.setLayout(new BorderLayout()); p4.setLayout(new GridLayout(3,1)); p3.setLayout(new BorderLayout()); p1.add(b1); p1.add(b2); p1.add(b3); p1.add(b6); p4.add(b4); p4.add(b5); p4.add(t1); p3.add("North",p1); p3.add("South",p4); p2.add("Center",theCanvas); p2.add("East",p3); add("Center",p2); theCanvas.bb=0; theCanvas.jj=0; theCanvas.init(); theCanvas.start(); } public boolean handleEvent(Event e) { if(e.target instanceof Scrollbar){ if(e.target==s1){ } if(e.target==s2){ } theCanvas.jj=1; theCanvas.repaint(); return true; } return super.handleEvent(e); } public boolean action(Event e, Object o) { if(e.target instanceof Button){ if(e.target==b1){theCanvas.bb=1;theCanvas.jj=1;} if(e.target==b2){theCanvas.bb=0;theCanvas.jj=0;} if(e.target==b3){theCanvas.bb=0;theCanvas.jj=0;theCanvas.Limpiar();theCanvas.Poner();} if(e.target==b6){theCanvas.bb=0;theCanvas.jj=0;theCanvas.pmax=1; theCanvas.Limpiar();theCanvas.Poner();} if(e.target==b4){ if(theCanvas.num<=20){theCanvas.num+=1;theCanvas.bb=0;theCanvas.jj=0; t1.setText(" Num = "+Integer.toString(theCanvas.num-1));}} if(e.target==b5){ if(theCanvas.num>1){theCanvas.num-=1;theCanvas.bb=0;theCanvas.jj=0; t1.setText(" Num = "+Integer.toString(theCanvas.num-1));}} theCanvas.repaint(); return true; } return true; } public boolean mouseDown(Event e,int x,int y){ theCanvas.Mouse(x,y); theCanvas.repaint(); //t2.setText(" num = "+Integer.toString(theCanvas.pmax)); return true; } } class Dla2Canva extends Canvas implements Runnable { Thread runstring; private Image offScreenImage; int max,size,seed,jj,num; double PI; double mxx,myy,bxx,byy; int grid[][], hit,mem,bb,pmax,px[],py[]; public void init() { int i,j; pmax=1; px=new int[10]; py=new int[10]; px[0]=150; py[0]=150; num=5; max= 40000; size= 101; /* size of grid array */ PI= 3.1415926535897932385; seed= 68111; /* seed for number generator */ offScreenImage=createImage(size().width,size().height); grid=new int[size][size]; offScreenImage=createImage(size().width,size().height); for(i=0; i=1)||(rr==0)); fac=Math.sqrt(-2*Math.log(rr)/rr); mem=(int)(5000*r1*fac); /* save for next call */ old=1; /* set flag */ return((int)(5000*r2*fac)); } else /* return second number */ { /* from last call */ old=0; /* unset flag */ return mem; /* return number from last call */ } } public void Dlaplot(Graphics g,int jj) { double angle, rad; int i,j, x, y, dist, dir, step, trav; int xol,yol; rad=45.0; g.setColor(Color.blue); g.drawOval(60,60,180,180); /* if(jj==1){ for(i=0; i1)&&(y<99)&&(y>1)&&(hit==0)&&(trav=1) { hit=1; /* one neighbor is occupied */ grid[x][y]=1; g.drawOval(2*x+50,2*y+50,1,1); /* particle sticks, walk is over */ //play(getCodeBase(),"9.au"); } else if(Math.random() < 0.5) x+=step; /* move horizontally */ else y+=step; /* move vertically */ g.drawLine(2*xol+50,2*yol+50,2*x+50,2*y+50); xol=x; yol=y; trav++; }//while //play(getCodeBase(),"drip.au"); } //for i } //rutine public void Limpiar() { int i,j; for(i=0;i60 && x<240 && y>60 && y<240) { px[pmax]=x;py[pmax]=y; pmax+=1; n=(int)((x-50)/2); m=(int)((y-50)/2); grid[n][m]=1; } } public void paint(Graphics g){ int i; Dlaplot(g,jj); if(bb==1) jj=10; g.setColor(Color.green); for(i=0;i<5;i++) g.drawRect(0+i,0+i,298-2*i,294-2*i); } }//class