Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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 von flashpixx
code tags

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?

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.

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;




        }

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");

        }

    }

}

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.

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

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.

Ü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ß

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.