Kreis soll eine Raupe darstellen

Nachdem ich mit Kreisen verschiedene Figuren konstruieren sollte, soll ich nun mit einem sich bewegenden Kreis eine Raupe darstellen.
Wenn ich nun aber auf die Methode move() zugreifen will kriege ich beim kompilieren eine Fehlermeldung("cannot find symbol")
Für diese Aufgabe wurde mir die Klasse circle.java(im Anhang als Textdokument da die java datei nicht hochgeladen werden kann) bereitgestellt.
Die Raupe komplett zu bilden wäre kein Problem aber iwie komme ich nicht dahinter wie ich die move Methode anwenden soll.
hoffe ihr könnt mir hier helfen

public class MainCaterpillar {

/**
* Creates and draws five custom designed circles,
*
*
* For this, the parameterized constructor of class
* Circle is used. It expects four parameters
* (in given order):
* radius, x coordinate, y coordinate (of type int)
* colour (of enumeration type Colour)
*
* @param args
*/
public static void main(String[] args) {

Circle circleFace = new Circle(10, 450, 300, Colour.YELLOW);
circleFace.draw();
CircleFace.move(35, 15);
}

}












In der vorherigen Aufgabe hat zumindest das zeichnen der Kreise funktioniert:
public class MainSmiley {

/**
* Creates and draws five custom designed circles,
*
*
* For this, the parameterized constructor of class
* Circle is used. It expects four parameters
* (in given order):
* radius, x coordinate, y coordinate (of type int)
* colour (of enumeration type Colour)
*
* @param args
*/
public static void main(String[] args) {

// Create circles Face,Mouth,Mouth2,LeftEye, RightEye
Circle circleFace = new Circle(250, 0, 0, Colour.YELLOW);
circleFace.draw();
Circle circleMouth = new Circle(150, 100, 100, Colour.BLACK);
circleMouth.draw();
Circle circleMouth2 = new Circle(150, 100, 80, Colour.YELLOW);
circleMouth2.draw();
Circle circleLeftEye = new Circle(50, 100, 75, Colour.BLACK);
circleLeftEye.draw();
Circle circleRightEye = new Circle(50, 300, 75, Colour.BLACK);
circleRightEye.draw();
}

}
Anhang1: Klasse Circle
Anhang2 vorherige Aufgabe in der man Kreise zeichnen sollte die einen Smiley bilden
 

Anhänge

Zuletzt bearbeitet:
Groß-/Kleinschreibung musst du beachten. Deine Variable heist circleFace. Daher kennt er CircleFace nicht.

Und bitte gib die exakte Fehlermeldung an, dann ist es für uns noch etwas leichter, die Ursache zu sehen....
 
Ich habe nun den Fehler mit der Groß/Kleinschreibung korrigiert.
Ich kriege nun zwar keine Fehlermeldung mehr aber der Kreis wird auch nach dem zeichnen nicht bewegt
 
Dann mal eine Gegenfrage: Warum sollte der Keis sich bewegen? Hast Du Dir die Klasse Circle einmal angesehen? Was macht die Methode move?
 
* Moves the circle by resetting its coordinates.
*
* @param xDelta Denotes horizontal movement
* @param yDelta Denotes vertical movement
*/
void move(int xDelta, int yDelta) {
xPos = xPos + xDelta;
yPos = yPos + yDelta;
}

wie ich das verstehe soll sich der Kreis anhand von 2 Werten entlang von X und Y verschieben
 
Also alles was diese Methode macht, ist das Verändern von 2 Integer Werten. Dadurch verändert sich aber doch nichts an der Darstellung.

Code:
Circle circleFace = new Circle(10, 450, 300, Colour.YELLOW);
Da erstellst Du eine Instanz von Circle. Da wird auch xPos und yPos gesetzt. Aber passiert da sonst schon irgendwas?
Nimm doch einfach mal den anderen Code kurz raus. Was siehst du dann?

Die Existenz einer Variable bringt in der Regel erst einmal nichts an Ausgabe. Ausnahme ist nur, wenn da im Konstruktor etwas gemacht wird, das eine Ausgabe erzeugt. So wird der Circle erst beim Aufruf von draw() gemalt.

Aber das ist dann auch nur eine einmalige Sache. Wenn Du nun move aufrufst, dann ändert das erst einmal nur die Instanzvariablen und sonst nichts. (Das muss nicht so sein, aber hier ist es so. Wenn man bei Circle generell sagt; Der wird immer dargestellt, dann könnte so eine Veränderung auch noch etwas mehr bewirken. Aber das ist hier nicht der Fall.
 
Ich hab aber auch schon versucht nach dem ändern der variablen nochmal die methode draw aufzurufen aber dass hat auch nicht den Kreis neu gezeichnet.
 
Also ich habe jetzt nicht die Ganzen Klassen, die Du hast. Daher musst Du genauer erläutern, was Du erhälst! Oder Du musst mal alle Klassen, die notwendig sind, weiter geben.

Ich habe mir die Klasse Circle einmal angepasst:
- Colour habe ich zu Color gemacht, dadurch konnte beim Setzen das switch raus.
- main Methode habe ich dazu gepackt.
Wenn ich das aufrufe, erhalte ich zwei Kreise gemalt. Und das wäre auch erst einmal meine Erwartungshaltung, denn wenn ich auf ein Papier einen Kreis male und dann erneut einen Kreis male, dann habe ich danach zwei Kreise auf dem Blatt.
 
ich erhalte einfach den gelben Ausgangskreis und danach passiert nichts weiter bzw es passiert was(sonst würde er es ja nicht kompilieren) aber es ist in der Ausgabe nichts sichtbar
 
Ok, jetzt zeichnet er bei mir den Kreis erneut, aber die Idee der Methode move ist doch dass er im Zuge dessen den alten Kreis löscht ohne dass ich ihn neu zeichne
 
Ja, das ist richtig. Also musst Du den Kreis erst löschen. Englisch für löschen: erase.

Vielleicht schaust Du einmal, ob Du diese Funktionalität schon hast?
 
also ist die einzige Möglichkeit für jeden schritt die methodenfolge move->setRadius->setcolour->draw->erase->move->setRadius->setcolour->draw zu verwenden? Dabei soll move doch gleichzeitig auch den Kreis löschen(zumindest laut Kommentar in der Klasse). Oder verstehe ich die Aufgabe falsch und es soll am ende dochdie ganze Raupe zu sehen sein. Ist nämlich in der Aufgabenstellung nicht eindeutig rauszulesen(siehe Anhang originalpost)
 
Die Aufgabenstellung ist leider nicht vollständig. Von einem "bewegenden Kreis" ist im PNG nichts zu lesen :-(
 
Also was Du brauchst ist erase + draw.

Aber das funktioniert nicht, denn im Canvas.redraw ist das erase auskommentiert. Dadurch blieb zumindest bei mir der alte Kreis bestehen.

Wenn man möchte, dass das move auch neu zeichnet (Was Sinn machen kann), dann muss man dem Canvas das natürlich sagen. Das wäre dann also ein Canvas.getCanvas().redraw() Aufruf.
 
das ist die komplette Aufgabenstellung. Danach kommt nur noch die Auflistung der Eigenschaften der einzelnen Kreisatribute der Raupenteile. Die bewegung des Kreises war meine Interpretation der Aussage dass es sich um EINEN Kreis handeln soll der das darstellen soll, wenn ich mir jetzt aber das bild anschaue denke ich dass ich da einfach was falsch interpretiert habe. Über die move,set radius,set colour kombi kann ich jetzt zumindest die ganze raupe zeichnen mit einer variablen
 
Die Aufgabenstellung ist leider nicht vollständig. Von einem "bewegenden Kreis" ist im PNG nichts zu lesen :-(
Sehr guter Hinweis! Vergiss meinen Kommentar! Das erase bleibt auskommentiert!

Du sollst eine Raupe zeichnen. Diese bewegt sich nicht! Und Du sollst nur ein Objekt nutzen, d.h. eine Circle-Instanz und damit malst Du diese immer wieder mit Veränderungen!

Ich hatte mich immer nur auf Deine Aussagen konzentriert und mir nicht die Aufgabe selbst durchgelesen (bis eben!)
 
ich habe es eben auch kapiert. Es geht einfach darum nur eine Variable zu verwenden im Gegensatz zu einer für jeden Teil der Raupe. Somit ist es praktisch nur ein Kreis der die Raupe zeichnet ohne dass sich der Kreis bewegt!
 
Genau, Dein Circle-Objekt funktioniert ähnlich wie ein Stempel. Den kannst Du konfigurieren (Farbe etc.) und über dem Papier bewegen (move) und auf das Papier drücken (draw).
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben