kumbu Geschrieben 29. August 2011 Teilen Geschrieben 29. August 2011 (bearbeitet) Hallo Leute, undzwar habe ich als Aufgabe ein Haus und eine Sonne mit Java BlueJ zu programmieren. Diese Sonne soll einen Sonnenuntergang durchlaufen können. Leider funktioniert das bei mir nicht. Ich habe aber auch noch nie mit Java programmiert das ist mein aller erster versuch. Ich hab meine while Schleife (sofern das überhaupt eine ist...) rot markiert. public class Zeichnung { private Quadrat wand; private Quadrat fenster; private Dreieck dach; private Kreis sonne; /** * Erzeuge ein Exemplar der Klasse Zeichnung */ public Zeichnung() { // nichts zu tun hier, alle Exemplarvariablen werden automatisch // mit null initialisiert. } /** * Zeichne die Zeichnung. */ public void zeichne() { wand = new Quadrat(); wand.vertikalBewegen(80); wand.groesseAendern(100); wand.sichtbarMachen(); fenster = new Quadrat(); fenster.farbeAendern("schwarz"); fenster.horizontalBewegen(20); fenster.vertikalBewegen(100); fenster.sichtbarMachen(); dach = new Dreieck(); dach.groesseAendern(50, 140); dach.horizontalBewegen(60); dach.vertikalBewegen(70); dach.sichtbarMachen(); sonne = new Kreis(); sonne.farbeAendern("gelb"); sonne.horizontalBewegen(180); sonne.vertikalBewegen(-10); sonne.groesseAendern(60); sonne.sichtbarMachen(); [COLOR="red"]while (zeichne) { sonne.langsamHorizentalBewegen(5); sonne.langsamVertikalBewegen(5); } [/COLOR] /** * Ändere die Darstellung in schwarz-weiß. */ public void inSchwarzWeissAendern() { if(wand != null) // nur wenn schon gezeichnet wurde ... { wand.farbeAendern("schwarz"); fenster.farbeAendern("weiss"); dach.farbeAendern("schwarz"); sonne.farbeAendern("schwarz"); } } /** * Ändere die Darstellung in Farbe. */ public void inFarbeAendern() { if(wand != null) // nur wenn schon gezeichnet wurde ... { wand.farbeAendern("rot"); fenster.farbeAendern("schwarz"); dach.farbeAendern("gruen"); sonne.farbeAendern("gelb"); } } } Bearbeitet 29. August 2011 von flashpixx code tags Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SilentDemise Geschrieben 29. August 2011 Teilen Geschrieben 29. August 2011 benutze bitte Code Tags. was ist zeichne? Das sieht sehr nach einer Endlosschleife aus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kumbu Geschrieben 29. August 2011 Autor Teilen Geschrieben 29. August 2011 tut mir leid ich merk es mir für das nächste mal mit den Code Tags, ich muss mich hier ersteinmal in das Forum einarbeiten. ich habe gedacht ich kann dort eintragen was man will deswegen zeichne...dann ist das wohl falsch.... Heißt also in die Klammer kommt eine Abbruchbedingung rein oder habe ich das falsch verstanden? und ist die while schleife überhaupt richtig? Ich glaube hier fehlt auch eine Abbruchbedingung oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thelvan Geschrieben 29. August 2011 Teilen Geschrieben 29. August 2011 Die Schleife läuft solange, wie der Ausdruck true ist. Und wenn zeichne eine boolsche Variable ist, die immer true ist (wird ja auch in der Schleife nicht verändert), dann ist das eine Endlosschleife. Ich denke eine for-Schleife wäre da eher angebracht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SilentDemise Geschrieben 29. August 2011 Teilen Geschrieben 29. August 2011 Genau ;-) eine While schleife führt den Code zwischen den {} solange aus, bis der in den () angegebe Ausdruck 'false' wird. Die Bedingung muss also in der Schleife manipuliert werden (oder es gibt etwas von außen, was die Bedingung manipuliert). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kumbu Geschrieben 29. August 2011 Autor Teilen Geschrieben 29. August 2011 dies funktioniert leider auch nicht...ich glaube ich habe da ein grundsätzliches Problem...arbeie jetzt leider das erste mal mit java/BlueJ for (int i=1; i<=200; i++) {sonne.langsamHorizontalBewegen = sonne.langsamHorizontalBewegen + i; sonne.langsamVertikalBewegen = sonne.langsamVertikalBewegen + i; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thelvan Geschrieben 29. August 2011 Teilen Geschrieben 29. August 2011 Was heißt funktioniert nicht? Sieht eigentlich richtig aus, was auch immer sonne ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kumbu Geschrieben 29. August 2011 Autor Teilen Geschrieben 29. August 2011 ganz oben habe ich ja den kompletten Quelltext gepostet, das sonne steht für die Sonne die sich bewegen soll deswegen diese for schleife. jedoch wenn ich es ausführen will kommt die meldung "cannot find symbol - variable langsamHorizontalBewegen public class Zeichnung { private Quadrat wand; private Quadrat fenster; private Dreieck dach; private Kreis sonne; /** * Erzeuge ein Exemplar der Klasse Zeichnung */ public Zeichnung() { // nichts zu tun hier, alle Exemplarvariablen werden automatisch // mit null initialisiert. } /** * Zeichne die Zeichnung. */ public void zeichne() { wand = new Quadrat(); wand.vertikalBewegen(80); wand.groesseAendern(100); wand.sichtbarMachen(); fenster = new Quadrat(); fenster.farbeAendern("schwarz"); fenster.horizontalBewegen(20); fenster.vertikalBewegen(100); fenster.sichtbarMachen(); dach = new Dreieck(); dach.groesseAendern(50, 140); dach.horizontalBewegen(60); dach.vertikalBewegen(70); dach.sichtbarMachen(); sonne = new Kreis(); sonne.farbeAendern("gelb"); sonne.horizontalBewegen(180); sonne.vertikalBewegen(-10); sonne.groesseAendern(60); sonne.sichtbarMachen(); for (int i=1; i<=200; i++) {sonne.langsamHorizontalBewegen = sonne.langsamHorizontalBewegen + i; sonne.langsamVertikalBewegen = sonne.langsamVertikalBewegen + i; } } /** * Ändere die Darstellung in schwarz-weiß. */ public void inSchwarzWeissAendern() { if(wand != null) // nur wenn schon gezeichnet wurde ... { wand.farbeAendern("schwarz"); fenster.farbeAendern("weiss"); dach.farbeAendern("schwarz"); sonne.farbeAendern("schwarz"); } } /** * Ändere die Darstellung in Farbe. */ public void inFarbeAendern() { if(wand != null) // nur wenn schon gezeichnet wurde ... { wand.farbeAendern("rot"); fenster.farbeAendern("schwarz"); dach.farbeAendern("gruen"); sonne.farbeAendern("gelb"); } } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thelvan Geschrieben 29. August 2011 Teilen Geschrieben 29. August 2011 Und was ist Kreis für eine Klasse? Ich bezweifle, dass die eine "langsamHorizontalBewegen"-Property hat. Wenn du den kreis bewegen willst, sollte es eine Position Property geben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kumbu Geschrieben 29. August 2011 Autor Teilen Geschrieben 29. August 2011 kann mir das vlt mal jemand diesen kleinen Part mit der for-schleife oder while schleife programmieren? dann versteh ich das vielleicht....wäre echt nett von euch.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thelvan Geschrieben 29. August 2011 Teilen Geschrieben 29. August 2011 Ich hab keine Ahnung was Kreis für eine Klasse sein soll. Woher hast du denn diese Klassen? Hast du die selbst gemacht? Eigene Steuerelemente? Aber wahrscheinlich wird Kreis eine Position Property haben. Damit bestimmst du, wo sich der Kreis befindet. Die Ecke oben links hat die koordinate 0,0 Die unten Rechts hat das Maximum(also die Fenstergröße) Das heißt wenn du x inkrementierst gehts nach rechts, bei y nach unten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ulfmann Geschrieben 30. August 2011 Teilen Geschrieben 30. August 2011 Überprüf mal, ob es in der Klasse die Variable langsamHorizontalBewegen gibt oder ob sie manchmal anders heißt. Das ist ein klassischer Anfängerfehler. In dem Fall bekommst du an der Stelle den entsprechenden Kompilierfehler. Wenn dein Programm abbricht oder gar nicht startet, poste bitte immer die ganze Fehlermeldung mit. Mit "funktioniert nicht" kommen wir nicht sehr weit. Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.