2016-05-08 7 views
0

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.

Antwort

0

Ändern Sie den Konstruktor dieses:

DynamicTurle(Canvas canvas, double xPosition, double yPosition) { 
    super(canvas, new CartesianCoordinate (xPosition, yPosition)); 
    this.drawTurtle(); 
} 

Oder noch besser, rufen Sie Ihren anderen Konstruktor:

DynamicTurle(Canvas canvas, double xPosition, double yPosition) { 
    this(canvas, new CartesianCoordinate (xPosition, yPosition)); 
} 

, die die wiederholte Linie von this.drawTurtle();

+0

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

+0

Mein schlechtes! Ich habe die Hauptklasse vor dem Kompilieren nicht gespeichert, vielen Dank Jorn! – jHornsby

Verwandte Themen