import java.awt.Color;
import java.awt.event.MouseEvent;
import sk.upjs.jpaz2.JPAZUtilities;
import sk.upjs.jpaz2.Turtle;
import sk.upjs.jpaz2.WinPane;
public class Korytnackovo extends WinPane {
private Turtle[] korytnacky;
public Korytnackovo() {
this.korytnacky = new Turtle[10];
for (int i = 0; i < this.korytnacky.length; i++) {
this.korytnacky[i] = new Turtle();
this.add(this.korytnacky[i]);
this.korytnacky[i].setPosition(Math.random() * this.getWidth(),
Math.random() * this.getHeight());
}
}
public void posunITu(int idx, double dlzka) {
this.korytnacky[idx].step(dlzka);
}
public void nahodneFarby() {
for (int i = 0; i < this.korytnacky.length; i++) {
int r = (int) (Math.random() * 256);
int g = (int) (Math.random() * 256);
int b = (int) (Math.random() * 256);
this.korytnacky[i].setPenColor(new Color(r, g, b));
}
}
public Color sFarbouVon(int index) {
return this.korytnacky[index].getPenColor();
}
@Override
protected void onMousePressed(int x, int y, MouseEvent detail) {
int nahodnyIndex = (int) (Math.random() * this.korytnacky.length);
this.korytnacky[nahodnyIndex].setPosition(x, y);
}
public void krok() {
for (int i = 0; i < this.korytnacky.length; i++) {
int dalsia = (i + 1) % this.korytnacky.length;
this.korytnacky[i].turnTowards(this.korytnacky[dalsia].getX(),
this.korytnacky[dalsia].getY());
double vzd = this.korytnacky[i].distanceTo(
this.korytnacky[dalsia].getX(),
this.korytnacky[dalsia].getY());
this.korytnacky[i].step(vzd / 10);
}
}
public void kroky(int pocetKrokov) {
for (int i = 0; i < pocetKrokov; i++) {
this.krok();
JPAZUtilities.delay(50);
}
}
public void doKruhu(double polomer) {
for (int i = 0; i < this.korytnacky.length; i++) {
this.korytnacky[i].center();
this.korytnacky[i].setDirection(i * 360.0 / this.korytnacky.length);
this.korytnacky[i].penUp();
this.korytnacky[i].step(polomer);
this.korytnacky[i].penDown();
}
}
public int pocetTopKorytnaciek(double zhora) {
int pocet = 0;
for (int i = 0; i < this.korytnacky.length; i++) {
if (this.korytnacky[i].getY() < zhora) {
pocet++;
}
}
return pocet;
}
public void bezpecnyKruh(int idx) {
double najVzd = Double.POSITIVE_INFINITY;
for (int i = 0; i < this.korytnacky.length; i++) {
double aktualnaVzd = this.korytnacky[idx]
.distanceTo(this.korytnacky[i].getPosition());
if ((i != idx) && (aktualnaVzd < najVzd)) {
najVzd = aktualnaVzd;
}
}
this.korytnacky[idx].dot(najVzd);
}
}