Java:
package gif;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
public class MyPanel extends JPanel implements ActionListener {
final int PANEL_WIDTH = 500;
final int PANEL_HEIGHT = 500;
Image enemy;
Image backgroundImage;
Timer timer;
int xVelocity = 1;
int yVelocity = 1;
int x = 0;
int y = 0;
Graphics2D graphics2D;
AffineTransform at;
MyPanel() {
this.setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
this.setBackground(Color.black);
enemy = new ImageIcon(getClass().getResource("../image/raumShiff.png")).getImage();
backgroundImage = new ImageIcon(getClass().getResource("../image/kos.jpg")).getImage();
timer = new Timer(10, this);
timer.start();
}
public void paint(Graphics g) {
super.paint(g);
//BufferedImage Image = LoadImage(getClass().getResource("../image/raumShiff.png"));
/* if (x >= PANEL_WIDTH - enemy.getWidth(null) || x < 0) {
at = AffineTransform.getTranslateInstance(100, 100);
at.rotate(Math.toRadians(180));
graphics2D.setTransform(at);
}*/
graphics2D = (Graphics2D) g;
graphics2D.drawImage(backgroundImage, 0, 0, null);
graphics2D.drawImage(enemy, x, y, null);
}
private BufferedImage LoadImage(URL Filename) {
BufferedImage image = null;
try {
image = ImageIO.read(new File(Filename.toURI()));
}catch (IOException | URISyntaxException e){
}
return image;
}
@Override
public void actionPerformed(ActionEvent e) {
if (x >= PANEL_WIDTH - enemy.getWidth(null) || x < 0) {
xVelocity = xVelocity * (-1);
y += 10;
at = AffineTransform.getTranslateInstance(100, 100);
at.rotate(Math.toRadians(180));
graphics2D.transform(at);
}
x = x + xVelocity;
repaint();
}
}
Kann jemand mir bitte sagen, wie kann ich den Raumschiff um 180 Grad drehen, wenn in der Zeile 64 die Bedingung erfüllt ist.
Vielen Dank im Voraus