Ich versuche gerade einen Moorhuhn-Klon zu erstellen und kann Hühner über den Bildschirm fliegen lassen.
Eine Zielfernrohr habe ich auch und hab nen Mouse-Listener verknüpft, der mir die Koordinate bei gedrückter-Mouse mitteilt.
Nur würde ich gerne die Hühner entfernen, wenn die Koordinate des Huhn mit der Mouse-Koordinate übereinstimmt.
Das ist erstmal deshalb schwierig, weil ich bräuchte ja eigentlich die Möglichkeit auszulesen, welche Koordinaten das gezeichnete Huhn hat und wenn die Zielfernrohr-Koordinate enthalten ist, sollte das Huhn verschwinden (Aktuell hat das Huhn ja nur eine Koordinate).
Zweitens: Ich habe gelernt, dass man besser nicht in der painComponent-Methode rumspielen soll und da irgendwelche if-Abfragen etc. einbaut. Ist das so richtig, dass man solche Sache besser außerhalb platziert.
Drittens: Macht es Sinn sich von Anfang an mit dem Programmieren verschiedener Threads zu beschäftigen und jedes Huhn in einem eigenen Thread zu programmieren?
Danke. Bleibt gesund und entschuldigt den Titel
Eine Zielfernrohr habe ich auch und hab nen Mouse-Listener verknüpft, der mir die Koordinate bei gedrückter-Mouse mitteilt.
Nur würde ich gerne die Hühner entfernen, wenn die Koordinate des Huhn mit der Mouse-Koordinate übereinstimmt.
Das ist erstmal deshalb schwierig, weil ich bräuchte ja eigentlich die Möglichkeit auszulesen, welche Koordinaten das gezeichnete Huhn hat und wenn die Zielfernrohr-Koordinate enthalten ist, sollte das Huhn verschwinden (Aktuell hat das Huhn ja nur eine Koordinate).
Zweitens: Ich habe gelernt, dass man besser nicht in der painComponent-Methode rumspielen soll und da irgendwelche if-Abfragen etc. einbaut. Ist das so richtig, dass man solche Sache besser außerhalb platziert.
Drittens: Macht es Sinn sich von Anfang an mit dem Programmieren verschiedener Threads zu beschäftigen und jedes Huhn in einem eigenen Thread zu programmieren?
Danke. Bleibt gesund und entschuldigt den Titel
Code:
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class EinfacheAnimation implements MouseListener {
int x = 0;
int y = 70;
int x1 = 200;
int y1 = 25;
int z;
Image image7;
ArrayList<Image> bilder = new ArrayList<>();
public EinfacheAnimation() {
Image image = new ImageIcon(
"C:\\Users\\Benedikt\\Documents\\Wuestenhuhn 0.7\\Wuestenhuhn\\data\\pictures\\animation\\chickenRight\\1.png")
.getImage();
Image image2 = new ImageIcon(
"C:\\Users\\Benedikt\\Documents\\Wuestenhuhn 0.7\\Wuestenhuhn\\data\\pictures\\animation\\chickenRight\\2.png")
.getImage();
Image image3 = new ImageIcon(
"C:\\Users\\Benedikt\\Documents\\Wuestenhuhn 0.7\\Wuestenhuhn\\data\\pictures\\animation\\chickenRight\\3.png")
.getImage();
Image image4 = new ImageIcon(
"C:\\Users\\Benedikt\\Documents\\Wuestenhuhn 0.7\\Wuestenhuhn\\data\\pictures\\animation\\chickenRight\\4.png")
.getImage();
Image image5 = new ImageIcon(
"C:\\Users\\Benedikt\\Documents\\Wuestenhuhn 0.7\\Wuestenhuhn\\data\\pictures\\animation\\chickenRight\\5.png")
.getImage();
Image image6 = new ImageIcon(
"C:\\Users\\Benedikt\\Documents\\Wuestenhuhn 0.7\\Wuestenhuhn\\data\\pictures\\animation\\chickenRight\\5.png")
.getImage();
image7 = new ImageIcon(
"C:\\Users\\Benedikt\\Documents\\Wuestenhuhn 0.7\\Wuestenhuhn\\data\\pictures\\crosshair.png")
.getImage();
bilder.add(image);
bilder.add(image2);
bilder.add(image3);
bilder.add(image4);
bilder.add(image5);
bilder.add(image6);
}
public static void main(String[] args) {
EinfacheAnimation gui = new EinfacheAnimation();
gui.los();
}
public void los() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MeinZeichenpanel zeichenpanel = new MeinZeichenpanel();
zeichenpanel.addMouseListener(this);
frame.getContentPane().add(zeichenpanel);
frame.setSize(400, 400);
frame.setVisible(true);
for (int i = 0; i < 1900; i++) {
x += 8;
switch (i % 6) {
case (0): {
z = 0;
}
case (1): {
z = 1;
}
break;
case (2): {
z = 2;
}
break;
case (3): {
z = 3;
}
break;
case (4): {
z = 4;
}
break;
case (5): {
z = 5;
}
break;
}
try {
Thread.sleep(50);
}
catch (Exception e) {
}
zeichenpanel.repaint();
}
}
@SuppressWarnings("serial")
class MeinZeichenpanel extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.white);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.drawImage(bilder.get(z), x, y, this);
g.drawImage(bilder.get(z), x / 2, y - 100, this);
g.drawImage(image7, x1, y1, this);
}
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
x1 = e.getX();
y1 = e.getY();
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}