import java.awt.Color;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import sk.upjs.jpaz2.WinPane;
public class Ihrisko extends WinPane {
/**
* Instancna premenna referncujuca pole referencii na lopty, ktore su na
* ihrisku
*/
private Lopta[] lopty;
/**
* Referencia na aktualne tahanu loptu
*/
private Lopta tahanaLopta = null;
/**
* "Inicializacna metoda" pre ihriska
*/
public Ihrisko() {
this.setBackgroundColor(Color.green);
// Vyrobime pole na 10 referencii na objekty triedy Lopta a referenciu
// na toto pole ulozime do premennej lopty
this.lopty = new Lopta[10];
// Vyrobime jednotlive lopty
for (int i = 0; i < this.lopty.length; i++) {
// Vyrobime jednu loptu a umiestnime ju na nahodnu poziciu
Lopta jednaLopta = new Lopta();
this.add(jednaLopta);
jednaLopta.setPosition(Math.random() * this.getWidth(),
Math.random() * this.getHeight());
// Referenciu na loptu, ktoru sme teraz vyrobili ulozime do policka
// s indexom i pola lopty
this.lopty[i] = jednaLopta;
}
}
@Override
protected void onMouseClicked(int x, int y, MouseEvent detail) {
// Kandidat na loptu, ktora je najblizsie k miestu kliknutia
Lopta najLopta = this.lopty[0];
// Hladame loptu, ktora je najblizsie k miestu kliknutia...
for (int i = 1; i < this.lopty.length; i++) {
// Overime, ci i-ta lopta nie je blizsie, ako lopta, ktora je
// referencovana z premennej najLopta
if (najLopta.distanceTo(x, y) > this.lopty[i].distanceTo(x, y)) {
// Ak je podmienka splnena, mame blizsiu loptu - zapamatame si
// referenciu na tuto loptu
najLopta = this.lopty[i];
}
}
// Najblizsej lopte povieme, aby sa pohla
najLopta.pohniSaSmerom(x, y);
}
@Override
protected void onMousePressed(int x, int y, MouseEvent detail) {
// Najprv overime, ci sa zatlacilo lave tlacidlo mysky
if (detail.getButton() == MouseEvent.BUTTON1) {
// Hladame, ci bod na suradniciach [x, y] patri nejakej lopte
for (int i = 0; i < this.lopty.length; i++) {
if (this.lopty[i].klikloSaNaMna(x, y)) {
this.tahanaLopta = this.lopty[i];
}
}
}
}
@Override
protected void onMouseDragged(int x, int y, MouseEvent detail) {
// Ak nejaku loptu tahame, tak ju presunieme
if (this.tahanaLopta != null) {
this.tahanaLopta.setPosition(x, y);
}
}
@Override
protected void onMouseReleased(int x, int y, MouseEvent detail) {
// Ak sa uvolnilo lave tlacidlo mysky, tak prestaneme tahanim presuvat
// loptu
if (detail.getButton() == MouseEvent.BUTTON1) {
this.tahanaLopta = null;
}
}
}