Ich habe Probleme beim Festlegen einer anfänglichen Position für eine "Schildkröte" (eigentlich ein Dreieck) auf dem Bildschirm mit Method Overloading. Ich soll die Turtle im neuen Dynamicturtle-Konstruktor mit dem Schlüsselwort super aufrufen, dann die Position der Turtle von den neuen Argumenten des neuen dynamischen Turtle-Konstruktors festlegen und dann die Turtle zeichnen. Ein Hinweis wurde gegeben, die Move-Methoden zu verwenden, um dies zu erreichen?Festlegen eines Anfangsverzeichnisses für JFrame unter Verwendung des Schlüsselworts "super"
Es wird dann eine neue Dynamicturtle-Variable erstellen und in der Hauptklasse instanziieren, und es wird die Turtle auf den JFrame zeichnen. Ich bin völlig darauf fixiert, wie das zu erreichen ist - was ein einfaches Problem scheint. Jede Hilfe würde sehr geschätzt werden.
Die Hauptklasse.
import javax.swing.*;
class Lab5
{
\t public static void main(String [ ] args)
\t {
\t \t JFrame frame = new JFrame();
\t \t Canvas canvas = new Canvas();
\t \t frame.setTitle("Hello Frame");
\t \t frame.setSize(800, 600);
\t \t frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
\t \t frame.setVisible(true);
\t \t frame.add(canvas);
\t \t int deltaTime = 20; // milliseconds
\t \t // game loop
\t \t
\t \t Dyanmicturtle jig = new Dyanmicturtle(canvas, 400, 300);
\t \t jig.drawTurtle();
\t \t while(true)
\t \t {
\t \t Utils.pause(deltaTime);
\t \t }
\t }
}
DynamicTurtle Klasse:
class DynamicTurle extends Turtle
{
\t private int speed = 100;
\t private int time;
\t private double xPos, yPos;
\t private CartesianCoordinate myLocation;
\t private int Angle = 0;
\t DynamicTurle(Canvas canvas, CartesianCoordinate initLocation)
\t {
\t \t super(canvas, initLocation);
\t \t this.drawTurtle();
\t }
\t DynamicTurle(Canvas canvas, double xPosition, double yPosition) //THE PROBLEM CONSTRUCTOR
\t {
\t \t super(canvas, newPosition);
\t \t CartesianCoordinate newPosition = new CartesianCoordinate (this.xPosition, this.yPosition); \t \t \t
\t \t this.drawTurtle();
\t }
\t public int getSpeed()
\t {
\t \t return this.speed;
\t }
\t public void setSpeed(int speed)
\t {
\t \t this.speed = speed;
\t }
\t public void update(int time)
\t {
\t \t this.unDrawTurtle();
\t \t this.move((speed*100/time)); \t
\t \t this.drawTurtle();
\t }
}
Die Schildkröte Klasse:
class Turtle
{
private Canvas canvas; // private field reference to a canvas private
private CartesianCoordinate myLocation, oldLocation;
private boolean penDown = true;
private double Angle;
public Turtle kieranMullen;
public Turtle(Canvas canvas, CartesianCoordinate initLocation)
{
this.canvas = canvas;
this.myLocation = new CartesianCoordinate(0,0);
Angle = 0;
penDown = true;
myLocation = initLocation.copy();
}
public void putPenUp()
{
this.penDown = false;
}
public void putPenDown()
{
this.penDown = true;
}
public void turn(double amount)
{
Angle = Angle + amount;
}
public void move(int pixels)
{
double radians = Math.toRadians(Angle);
double dx = pixels * Math.sin(radians);
double dy = pixels * Math.cos(radians);
CartesianCoordinate oldLocation = myLocation.copy();
myLocation.add(dx,dy);
if(penDown)
{
canvas.drawLineBetweenPoints(myLocation, oldLocation);
}
}
public void drawTurtle()
{
this.putPenDown();
this.turn(90);
this.move(10);
this.putPenDown();
this.turn(240);
this.move(20);
this.putPenDown();
this.turn(240);
this.move(20);
this.putPenDown();
this.turn(240);
this.move(10);
this.turn(270);
}
public void unDrawTurtle()
{
canvas.removeMostRecentLine();
canvas.removeMostRecentLine();
canvas.removeMostRecentLine();
canvas.removeMostRecentLine();
}
public void showSquare()
{
this.unDrawTurtle();
Utils.pause(1000);
this.drawTurtle();
Utils.pause(1000);
this.unDrawTurtle();
this.move(100);
this.drawTurtle();
Utils.pause(1000);
this.unDrawTurtle();
this.turn(90);
this.drawTurtle();
Utils.pause(1000);
this.unDrawTurtle();
this.move(100);
this.drawTurtle();
Utils.pause(1000);
this.unDrawTurtle();
this.turn(90);
this.drawTurtle();
Utils.pause(1000);
this.unDrawTurtle();
this.move(100);
this.drawTurtle();
Utils.pause(1000);
this.unDrawTurtle();
this.turn(90);
this.drawTurtle();
Utils.pause(1000);
this.unDrawTurtle();
this.move(100);
this.drawTurtle();
Utils.pause(1000);
this.unDrawTurtle();
this.turn(90);
this.drawTurtle();
Utils.pause(1000);
this.unDrawTurtle();
}
}
Vielen Dank für jede Hilfe im Voraus gegeben.
Thankyou vermeidet! das ohne Fehler oder Laufzeitfehler kompiliert wurde, zeichnet die Turtle jedoch nicht im Erstellungsbereich. Danke für Ihre Hilfe! sehr geschätzt! – jHornsby
Mein schlechtes! Ich habe die Hauptklasse vor dem Kompilieren nicht gespeichert, vielen Dank Jorn! – jHornsby