/*Keskkonna simuleerimisel tuleb ette jooni, mille täpset kuju ei õnnestu kirja panna. Tüüpiliseks näiteks on oja: mida lähemalt vaadata, seda käänulisema või sakilisema kujundiga on tegemist. */ import java.applet.Applet; import java.awt.*; import java.awt.Color; import java.awt.event.*; //nupu sündmuste püüdmiseks import java.util.*; public class Kodu2 extends Applet implements ActionListener{ //mõistab kuulata sündmusi int inimesex=300, inimesey=300, kaugus=5000, ekraanikeskx=300, ekraanikesky=300; Button nupp1=new Button("Lähemale"); Button nupp2=new Button("Kaugemale"); Button nupp3=new Button("Paremale"); Button nupp4=new Button("Vasakule"); Button nupp5=new Button("Alla"); Button nupp6=new Button("Üles"); LinkedList hoidla=new LinkedList();//vajalik et jätaks joone punktid meelde double vahimpikkus=25; public Kodu2(){ setLayout(new FlowLayout());//määrab paigutuse kus elemendid saab üksteise taha järjestada add(nupp1); nupp1.addActionListener(this); add(nupp2); nupp2.addActionListener(this); add(nupp3); nupp3.addActionListener(this); add(nupp4); nupp4.addActionListener(this); add(nupp5); nupp5.addActionListener(this); add(nupp6); nupp6.addActionListener(this); setVisible(true);//* hoidla.add(new Punkt(50, 0)); hoidla.add(new Punkt(600, 600)); arvutaJoon((Punkt)(hoidla.get(0)),(Punkt)(hoidla.get(1)) ); } void arvutaJoon(Punkt p1, Punkt p2){ double joonepikkus=Math.sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y)); if(joonepikkus>vahimpikkus){ double x3=(p1.x+p2.x)/2;//esialgse joone keskpunkt double y3=(p1.y+p2.y)/2;//esialgse joone keskpunkt double x4=x3+(joonepikkus*Math.random()*0.5);//uus keskpunkt double y4=y3+(joonepikkus*Math.random()*0.5); Punkt p4=new Punkt(x4, y4); int koht=hoidla.indexOf(p1); hoidla.add(koht+1, p4); arvutaJoon(p1, p4);//arvutab uue joone arvutaJoon(p4, p2); } } int ekraaniX(double punktix){ return (int)((punktix-inimesex)*5000/kaugus+ekraanikeskx); } int ekraaniY(double punktiy){ return (int)((punktiy-inimesey)*5000/kaugus+ekraanikesky); } public void paint(Graphics g){ Punkt ep=(Punkt)hoidla.get(0);//eelmine punkt-see millest hakatakse joont tõmbama for(int i=1; i