package org.teachingextensions.logo.utils.InterfaceUtils; import org.teachingextensions.logo.Turtle; import org.teachingextensions.logo.utils.LineAndShapeUtils.Paintable; import javax.swing.*; import java.awt.*; import java.awt.geom.AffineTransform; import java.util.List; public class MultiTurtlePainter implements Paintable { private final List<Turtle> turtles; private final Image image; public MultiTurtlePainter(List<Turtle> turtles, Image image) { this.turtles = turtles; this.image = image; } @Override public void paint(Graphics2D g, JPanel caller) { if (this.turtles == null){ return; } for (Turtle turtle : turtles) { if (turtle.isHidden()) { continue; } Image image = getImage(); int xCenter = image.getWidth(null) / 2; int yCenter = image.getHeight(null) / 2; int x = turtle.getX() - xCenter; int y = turtle.getY() - yCenter; AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(turtle.getHeadingInDegrees()), xCenter, yCenter); AffineTransform move = AffineTransform.getTranslateInstance(x, y); move.concatenate(rotate); g.drawImage(image, move, null); } } public Image getImage() { return image; } }