Kleinere Bugfixes

This commit is contained in:
ngb
2022-01-02 22:15:31 +01:00
parent 6275593eb3
commit 0a23851ce1

View File

@@ -4,12 +4,11 @@ import schule.ngb.zm.Color;
import schule.ngb.zm.Layer; import schule.ngb.zm.Layer;
import schule.ngb.zm.Options; import schule.ngb.zm.Options;
import schule.ngb.zm.Vector; import schule.ngb.zm.Vector;
import schule.ngb.zm.formen.FilledShape; import schule.ngb.zm.shapes.FilledShape;
import java.awt.*; import java.awt.*;
import java.awt.geom.AffineTransform; import java.awt.geom.AffineTransform;
import java.awt.geom.Path2D; import java.awt.geom.Path2D;
import java.awt.geom.RoundRectangle2D;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Stack; import java.util.Stack;
@@ -69,8 +68,8 @@ public class TurtleLayer extends Layer {
public Turtle newTurtle() { public Turtle newTurtle() {
Turtle newTurtle = new Turtle(); Turtle newTurtle = new Turtle();
newTurtle.position.x = getWidth() / 2; newTurtle.position.x = getWidth() / 2.0;
newTurtle.position.y = getHeight() / 2; newTurtle.position.y = getHeight() / 2.0;
newTurtle.direction.x = 0.0; newTurtle.direction.x = 0.0;
newTurtle.direction.y = -1.0; newTurtle.direction.y = -1.0;
synchronized( turtles ) { synchronized( turtles ) {
@@ -90,6 +89,13 @@ public class TurtleLayer extends Layer {
return turtles.get(i); return turtles.get(i);
} }
@Override
public void setSize( int width, int height ) {
super.setSize(width, height);
mainTurtle.position.x = getWidth() / 2.0;
mainTurtle.position.y = getHeight() / 2.0;
}
/* /*
@Override @Override
public void clear() { public void clear() {
@@ -221,17 +227,26 @@ public class TurtleLayer extends Layer {
@Override @Override
public void draw( Graphics2D graphics ) { public void draw( Graphics2D graphics ) {
Shape shape = new RoundRectangle2D.Double( /*Shape shape = new RoundRectangle2D.Double(
-12, -5, 16, 10, 5, 3 -12, -5, 16, 10, 5, 3
); );*/
Path2D path = new Path2D.Double();
path.moveTo(STD_SIZE, 0);
path.lineTo(-STD_SIZE, -STD_SIZE/2);
path.lineTo(-STD_SIZE, STD_SIZE/2);
path.lineTo(STD_SIZE, 0);
AffineTransform verzerrung = new AffineTransform(); AffineTransform verzerrung = new AffineTransform();
verzerrung.translate(position.x, position.y); verzerrung.translate(position.x, position.y);
verzerrung.rotate(-1 * direction.angle()); verzerrung.rotate(Math.toRadians(direction.angle()));
shape = verzerrung.createTransformedShape(shape); Shape shape = verzerrung.createTransformedShape(path);
graphics.setColor(strokeColor.getColor()); if( strokeColor != null ) {
graphics.setColor(strokeColor.getColor());
} else {
graphics.setColor(STD_STROKECOLOR.getColor());
}
graphics.fill(shape); graphics.fill(shape);
graphics.setColor(Color.BLACK.getColor()); graphics.setColor(Color.BLACK.getColor());
graphics.setStroke(createStroke()); graphics.setStroke(createStroke());
@@ -248,7 +263,7 @@ public class TurtleLayer extends Layer {
Vector positionStart = position.copy(); Vector positionStart = position.copy();
position.add(Vector.setLength(direction, dist)); position.add(Vector.setLength(direction, dist));
if( penDown ) { if( penDown && strokeColor != null ) {
drawing.setColor(strokeColor.getColor()); drawing.setColor(strokeColor.getColor());
drawing.setStroke(createStroke()); drawing.setStroke(createStroke());
drawing.drawLine((int) positionStart.x, (int) positionStart.y, (int) position.x, (int) position.y); drawing.drawLine((int) positionStart.x, (int) positionStart.y, (int) position.x, (int) position.y);
@@ -268,7 +283,7 @@ public class TurtleLayer extends Layer {
} }
public void lt( double angle ) { public void lt( double angle ) {
this.left(-angle); this.left(angle);
} }
public void left( double angle ) { public void left( double angle ) {
@@ -301,7 +316,7 @@ public class TurtleLayer extends Layer {
position.x = x; position.x = x;
position.y = y; position.y = y;
if( penDown ) { if( penDown && strokeColor != null ) {
drawing.setColor(strokeColor.getColor()); drawing.setColor(strokeColor.getColor());
drawing.setStroke(createStroke()); drawing.setStroke(createStroke());
drawing.drawLine((int) x, (int) y, (int) position.x, (int) position.y); drawing.drawLine((int) x, (int) y, (int) position.x, (int) position.y);