Kreis soll eine Raupe darstellen

Erazo

Aktives Mitglied
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

  • circle.txt
    10,6 KB · Aufrufe: 4
  • AusgabeMainSmiley.png
    AusgabeMainSmiley.png
    54,8 KB · Aufrufe: 9
  • Aufgabe.png
    Aufgabe.png
    133,8 KB · Aufrufe: 9
Zuletzt bearbeitet:
K

kneitzel

Gast
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....
 

Erazo

Aktives Mitglied
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
 
K

kneitzel

Gast
Dann mal eine Gegenfrage: Warum sollte der Keis sich bewegen? Hast Du Dir die Klasse Circle einmal angesehen? Was macht die Methode move?
 

Erazo

Aktives Mitglied
* 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
 
K

kneitzel

Gast
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.
 

Erazo

Aktives Mitglied
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.
 
K

kneitzel

Gast
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.
 

Erazo

Aktives Mitglied
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
 

Erazo

Aktives Mitglied
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
 
K

kneitzel

Gast
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?
 

Erazo

Aktives Mitglied
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)
 
K

kneitzel

Gast
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.
 

Erazo

Aktives Mitglied
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
 
K

kneitzel

Gast
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!)
 

Erazo

Aktives Mitglied
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!
 

mihe7

Top Contributor
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).
 

Erazo

Aktives Mitglied
der letzte Teil der Aufgabe ist nun, dass ich erst das eine Auge zeichnen soll und dann das zweite Auge und dabei beide in der selben Variable speichern soll, wenn ich das aber nacheinander in die selbe variable speichere müsste die doch überschrieben werden?
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Eine Variable kann man nur einmal deklarieren. Also muss beim zweiten Mal nutzt Du die Variable nur ohne diese neu zu deklarieren!
 

mihe7

Top Contributor
Deklaration einer Variablen vom Typ Circle:
Java:
Circle kreis;
Die Variable ist zunächst nicht initialisiert.. Zwar initialisiert solche Referenzvariablen unter bestimmten Umständen automatisch mit null, bei lokalen Variablen (also solchen, die Du innerhalb einer Methode deklarierst) ist dies jedoch nicht der Fall

Erzeugung eines Objekts vom Typ Circle:
Java:
new Circle(250, 0, 0, Colour.YELLOW);

Das Objekt wird im Hauptspeicher erzeugt und eine Referenz darauf (die Adresse im Hauptspeicher) zurückgegeben. Wenn Du diese Referenz nirgends nutzt, gibt in Java der Garbage Collector irgendwann den Speicher wieder frei (sofern das Programm nicht sowieso vorher schon beendet wird).

Um ein Objekt zu nutzen, musst Du also die Referenz darauf abspeichern und zwar in einer Variablen:
Java:
kreis = null; // weist z. B. die null-Referenz zu 
kreis = new Circle(250, 0, 0, Colour.YELLOW); // weist die Referenz auf das neu erzeugte Circle-Objekt der Variablen kreis zu
kreis = new Circle(100, 0,0, Colour.GREEN); // wie vorhin: überschreibt den Wert von kreis mit der Referenz des neu erzeugten Circle-Objekts.
 

Erazo

Aktives Mitglied
Java:
        Circle eye = new Circle(15, 70, 250, Colour.BLACK);
                eye.draw();

        Circle eye = new Circle(15, 120, 250, Colour.BLACK);
                eye.draw();
aber genau das mache ich ja hiermit nur dass er es nicht überschreibt sondern die Fehlermeldung rausgibt,dass die variable schon definiert ist. Oder lass ich das Circle am anfang der zweiten zuweisung weg und schreibe nur eye=?
 

mihe7

Top Contributor
aber genau das mache ich ja hiermit
Nein. Du versuchst, zweimal die Variable eye vom Typ Circle zu deklarieren s. #35). Und das geht, wie @JustNobody in #33 schon geschrieben hat, nicht.

Du brauchst
Java:
        Circle eye = new Circle(15, 70, 250, Colour.BLACK); // Deklaration von eye, Objekterzeugung und Zuweisung an eye
                eye.draw();

        eye = new Circle(15, 120, 250, Colour.BLACK); // Objekterzeugung und Zuweisung an eye
                eye.draw();
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
YAZZ BlueJ Bewegung einer Figur im Kreis Java Basics - Anfänger-Themen 4
N Kreismuster auf Bestehendem Kreis erstellen Java Basics - Anfänger-Themen 10
C Kleinsten Kreis einer Punktmenge bestimmen Java Basics - Anfänger-Themen 4
CptK Interface Kleine Kreise in großem Kreis anordnen Java Basics - Anfänger-Themen 3
Y Kreis auf einer Kreisbahn bewegen Java Basics - Anfänger-Themen 5
P Erste Schritte Kreis animieren Java Basics - Anfänger-Themen 2
A Kreisumfang/-Fläche vom Kreis berechnen Java Basics - Anfänger-Themen 39
H Kreis verschieben Java Basics - Anfänger-Themen 10
Z Object Kreis am Frame abprallen lassen! Java Basics - Anfänger-Themen 12
X Kreis/Linie Programmieren Java Basics - Anfänger-Themen 1
D Algorithmus für Punkte auf einem Kreis Java Basics - Anfänger-Themen 0
L Dreieck Kreis Java Basics - Anfänger-Themen 12
A Kreis,Radius Programm Java Basics - Anfänger-Themen 3
N Per Button Kreis zeichnen Java Basics - Anfänger-Themen 8
C Kreis nach Mausklick zeichnen Java Basics - Anfänger-Themen 5
A wie Kreis mit Schleife versetzten? Java Basics - Anfänger-Themen 25
O Punkte auf einem Kreis "wandern" lassen Java Basics - Anfänger-Themen 3
U Kreis um Textfelder zeichnen Java Basics - Anfänger-Themen 4
D Kreis mit Pfeiltaste bewegen Java Basics - Anfänger-Themen 3
K Bild auf Kreis packen Java Basics - Anfänger-Themen 2
E Kreis erstellen Java Basics - Anfänger-Themen 10
B Einen Kreis erzeugen Java Basics - Anfänger-Themen 3
S Erzeuge einen Kreis Java Basics - Anfänger-Themen 16
B Kreis,Punkt,Zylinder Java Basics - Anfänger-Themen 6
D Punktberechnung im Kreis Java Basics - Anfänger-Themen 15
TheKing Bild nur in Kreis sichtbar machen Java Basics - Anfänger-Themen 6
K Kreis mit neuer Position zeichnen Java Basics - Anfänger-Themen 3
M Umfang von Rechteck oder Kreis anhand der Parameter Java Basics - Anfänger-Themen 2
L Klickbarer Bereich in einem Kreis Java Basics - Anfänger-Themen 13
D kreis gelb gefüllt aber schwarzer rand. Java Basics - Anfänger-Themen 2
K Kreis Zeichnen ? Code Richtig aber keine Zeichung Java Basics - Anfänger-Themen 8
L Kreis der sich bewegt Java Basics - Anfänger-Themen 11
G Kreis auf JComponent zeichnen Java Basics - Anfänger-Themen 8
0 Klasse Kreis Java Basics - Anfänger-Themen 4
P Java-Applet, Kreis zeichnen Java Basics - Anfänger-Themen 4
E Kreis in Frame ,den man mit der Maus versetzen kann? Java Basics - Anfänger-Themen 2
7 Kreis zeichnen Java Basics - Anfänger-Themen 4
J Kreis herumfliegen & abprallen von Rändern Java Basics - Anfänger-Themen 7
G contains - Punkt in Kreis enthalten? Java Basics - Anfänger-Themen 6
A Kreis mit gedrückter Maustaste bewegen. Java Basics - Anfänger-Themen 2
S Thread - Kugel im Kreis hin-und herflitzen lassen Java Basics - Anfänger-Themen 3
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
DrahtEck Schleife soll wieder da anfangen wo ich es möchte ! Java Basics - Anfänger-Themen 17
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
Com.Roter Wie soll ich lernen? Java Basics - Anfänger-Themen 17
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
M Bei nach oben scrollen soll Seite aktualisiert werden (Userscript mit Javascript) Java Basics - Anfänger-Themen 10
R App soll selbstständig reagieren, anstatt via Models Java Basics - Anfänger-Themen 0
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
C Ein Algorithmus soll schneller werden Java Basics - Anfänger-Themen 24
K Ein Objekt Auto kennt den Inhalt seines links und rechtsstehenden Autos, wie soll man das ermöglichen Java Basics - Anfänger-Themen 2
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Java Programm soll mit Python kommunizeren Java Basics - Anfänger-Themen 1
MichelNeedhelp Brauche zu diesem Labyrinth ein Skript? Der Hamster soll im Urzeigersinn das ganze Labyrinth abgehen und wieder an seinem Ursprungsplatz sein. Java Basics - Anfänger-Themen 40
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
kazzam94 Methode soll Array von Boolean zurückgeben Java Basics - Anfänger-Themen 5
S Scanner soll Groß-/ Kleinschreibung ignorieren Java Basics - Anfänger-Themen 2
E Division von BigInteger soll Gelitkommazahl liefern Java Basics - Anfänger-Themen 46
M Unterklasse soll nicht alle Methoden erben Java Basics - Anfänger-Themen 3
E Methode soll andere Methode der selben Klasse aufrufen Java Basics - Anfänger-Themen 28
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
V Erste Schritte for-Schleife; Ausgabe soll alle 5 Sekunden erfolgen. Java Basics - Anfänger-Themen 4
H Koordinateneingabe im 2D Array soll true/false zurückgeben Java Basics - Anfänger-Themen 5
D Etwas unsicher wie es weitergehen soll Java Basics - Anfänger-Themen 2
N Bewegtes Objekt soll sich um eine Parallele bewegen Java Basics - Anfänger-Themen 0
B Button soll sowohl auf Klicken als auch auf die Enter-Taste reagieren Java Basics - Anfänger-Themen 9
B Derzeit JSF - Projekt, später soll MobileApp folgen Java Basics - Anfänger-Themen 5
scratchy1 Wie deklariert man eine Methode, die ein Objekt zurückgeben soll? Java Basics - Anfänger-Themen 22
V Vererbung Subklasse soll Superklasse verändern Java Basics - Anfänger-Themen 2
T Random soll Zufallszahl beibehalten. Java Basics - Anfänger-Themen 11
C Objekt soll ein Array sein. Java Basics - Anfänger-Themen 15
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
K Zufalsszahl soll sich nicht wiederholen Java Basics - Anfänger-Themen 9
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
P Methode soll Variable einer anderen Klasse ändern. Wie? Java Basics - Anfänger-Themen 1
J Kopierte Datei soll alte ersetzen. Java Basics - Anfänger-Themen 6
A Variablen Main Klasse soll auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 3
I Programm tut nicht was es soll :) Java Basics - Anfänger-Themen 5
Tommy135 Klassen jComboBox macht nicht was sie soll Java Basics - Anfänger-Themen 4
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
R While-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 24
kilopack15 Methode soll int-Array zurückgeben Java Basics - Anfänger-Themen 2
S Variable in JTextField soll immer um 5 zunehmen Java Basics - Anfänger-Themen 8
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
L Bei falscher Eingabe soll NaN zurückgegeben werden, Rückgabetyp jedoch double Java Basics - Anfänger-Themen 3
W drawLine(...) - Linie soll nur begrenzt lang sein Java Basics - Anfänger-Themen 9
I Fenster A soll Fenster B schliessen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben