import java.awt.*; /* Täiendused tunni lõpuks (soovitavalt koos paarilisega) * Jalgpallur jääb seisma, kui on platsi servani jõudnud * Pall jääb seisma, kui on platsi servani jõudnud * Jalgpalluritel on erinevad (maksimum)kiirused */ public class Jalgpallur{ double x, y; double sammX, sammY; //liikumine kaadri jooksul double maxSamm=5+5*Math.random(); String silt; int r=8; Meeskond meeskond; boolean m2rgitud=false; public Jalgpallur(int ux, int uy, String uSilt, Meeskond uMeeskond){ x=ux; y=uy; silt=uSilt; meeskond=uMeeskond; } public Jalgpallur(int ux, int uy, String uSilt){ this(ux, uy, uSilt, null); } public Jalgpallur(int ux, int uy){ this(ux, uy, "x"); } public boolean kasM2rgitud(){return m2rgitud;} public void muudaM2rkimine(boolean uusSeisund){m2rgitud=uusSeisund;} public Meeskond kysiMeeskond(){return meeskond;} public void paiguta(int ux, int uy){ //Tõstab palluri soovitud kohale x=ux; y=uy; sammX=sammY=0; } public int kysiX(){return (int)x;} public int kysiY(){return (int)y;} public double kaugusPallist(){ Pall p=kysiMeeskond().kysiM2ng().kysiPall(); int dx=p.kysiX()-kysiX(); int dy=p.kysiY()-kysiY(); return Math.sqrt(dx*dx+dy*dy); //Pange funktsioon kaugust arvutama //Jalgpalluri joonistamisel näidake tema juures arvuna kaugust pallist } public void liigu(){ if(kaugusPallist()<2*maxSamm){ Pall p=kysiMeeskond().kysiM2ng().kysiPall(); if(p.kasM2ngus() || p.kysiViimanePuudutaja()!=kysiMeeskond()){ p.uusKiirus( (kysiMeeskond().kysiRyndamiseSuund()) ? maxSamm*5*Math.random() : -maxSamm*5*Math.random(), maxSamm*5*(Math.random()-0.5), kysiMeeskond() ); } } if(kysiMeeskond().kasAutomaatneArvutus() && kaugusPallist()>50 && this!=kysiMeeskond().leiaPallileL2himPallur()){ sammX=sammY=0; } if(kysiMeeskond().kysiM2ng().kysiStaadion().kasSees(x+sammX, y+sammY)){ x+=sammX; y+=sammY; } else { sammX=sammY=0; } } public void uusKiirus(double dx, double dy){ sammX=dx; sammY=dy; } public void arvutaLiikumine(int kohtx, int kohty){ double kaugusx=kohtx-x; double kaugusy=kohty-y; double kaugus=Math.sqrt(kaugusx*kaugusx+kaugusy*kaugusy); double suhe=kaugus/maxSamm; uusKiirus(kaugusx/suhe, kaugusy/suhe); } public void joonista(Graphics g){ g.drawOval(kysiX()-r, kysiY()-r, 2*r, 2*r); g.drawString(silt, kysiX()-4, kysiY()+4); if(m2rgitud){ g.drawRect(kysiX()-r, kysiY()-r, 2*r, 2*r); } } public boolean kasPihtas(int hx, int hy){ double dx=hx-x; double dy=hy-y; return Math.sqrt(dx*dx+dy*dy)