Hilfe bei BlueJ (Schleife)

paconie
hallo leute,

ich möchte einen sonnen untergang und einen sonnenaufgang in eine schleife packen damit es ein tag nach zyklus wird, nun weiss ich aber nicht wie eine schleife funktioniert bin ne java niete hab neu angefangen.

wäre sehr nice wenn mir da einer helfen könnte

danke
Prophet
code:
1:
2:
3:
4:
for(int i = 0;i <= 100;i++)
{
//Schleifen quelltext
}


i ist die zhl variable das zweite ist die bedingung damit die schleife aufhört also wenn i 100 erreicht und das dritte incrementiert i.
__________

code:
1:
2:
3:
4:
while(var != 4)
{
//Schleifen quelltext
}


wieder holt sich solange bis diese bedingung nicht mehr zutrifft.
__________

code:
1:
2:
3:
4:
do
{
//Schleifen quelltext
}while(var != 4)


das gleiche wie zuvor nur das der schleifen rumpf mindestens einmal ausgeführt wird....
__________

mfg Prophet
paconie
hm tut mir leid weiss nicht recht wie ich das anwenden könnte also ich schreib mal was ich vor habe.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
/**
     * Automatisierung des Sonnenauf- und Sonnenunterganges.
     */
    public void automatisch()
    {
        if(wand != null)   // nur wenn schon gezeichnet wurde ...
        {
            sonne.langsamVertikalBewegen(250);
            this.inSchwarzWeissAendern();
    
            [COLOR=crimson]nach einer bestimmten Zeit[/COLOR]

            sonne.langsamVertikalBewegen(-250);
            this.inFarbeAendern();
        }
    }


so und wie kann ich das machen das das mehrmals hintereinander passiert und wie kann ich dieses "nach einer bestimmten Zeit" machen.

Danke
Prophet
code:
1:
2:
3:
4:
5:
6:
7:
sonne.langsamVertikalBewegen(250);
            this.inSchwarzWeissAendern();
    
           Thread.sleep(500); // zum warten :)

            sonne.langsamVertikalBewegen(-250);
            this.inFarbeAendern();


das musst du einfach in den schleifen block tun... eine abbruch bedingung musst du dann aber selber schreiben...
paconie
wie schreibt man eine abbruch bedinguns?

sry echt keine ahnung unglücklich

und ich hab das mit thread.sleep versucht aber da kommt "unreported exception java.lang.interruptedException; must be caught declared to be thrown"
Prophet
code:
1:
2:
3:
4:
while(ABBRUCHBEDINGUNG)
{
//Schleifen quelltext
}


code:
1:
2:
3:
4:
do
{
//Schleifen quelltext
}while(ABBRUCHBEDINGUNG)




Zur Exception:

code:
1:
2:
3:
4:
5:
6:
7:
8:
try
{
thread.sleep(500);
}
catch(interuptedException e)
{

}


Damit sagst du wenn die auftritt ist egal

________________

Du solltest dir ein buch kaufen...
paconie
Zitat:
Original von Prophet
code:
1:
2:
3:
4:
while(ABBRUCHBEDINGUNG)
{
//Schleifen quelltext
}


code:
1:
2:
3:
4:
do
{
//Schleifen quelltext
}while(ABBRUCHBEDINGUNG)


...


welches davon soll ich denn benutzen?

und wie könnte eine abbruch bedingung aussehen also nicht (wand !=null) sondern das die schliefe z.B. nach zwei wiederholungen aufhört
Prophet
code:
1:
2:
3:
4:
for(int i = 0;i <= 2;i++)
{
//Schleifen Quelltext
}


So ich erkläre dir diese schleife mal genauer:

Schlüsselwort 'for': Es wird eine sogenannte for-schleife eingeleitet

'(' : Begin der Parameter für die for-schleife.

Erster Parameter 'int i = 0' : Hier wird der startwert des SchleifenZählers gesetzt.

Zweiter Parameter 'i <= 2' : Hier wird gesagt unter welcher bedingung die schleife weiter ausgeführt werden darf.

Dritter Parameter 'i++' : Hier wird die schrittweite festgelegt in der sich der Schleifen-Zähler nach jedem durchlauf erhöht.

Die variable i exsistiert genau wie bei funktionen nur innnerhalt des rumpfes ('{' '}').

Kaufe dir bitte ein buch und erkundige dich evt. auf anderen webseiten und tutorials!!! Als emphelung:
GalileoComputing - Java ist auch eine Insel (Benutzt ich auch - Die investition lohnt sich)
http://www.javabuch.de/
paconie
hey danke dir prophet für deine hilfe und auch für die empfehlung ich werd zusehn das ich da sbuch bekomme.

Also die Schleife habe ich hinbekommen, aber jetzt hab ich ein anderes problem,

undzwar geht die Sonne vor den Häusern unter, sie soll alleridngs hinterden häusern untergehn, wie kann ich die reihenfolge der "ebenen" sag ich mal ändern?

und das mit dem thread.sleep klappt leider nicht
Prophet
Mit Grafik programmierung habe ich mich noch nicht beschäftigt bin erst bei kapitel 10 smile

Schreib den anfang von Thread mal groß also so: Thread.sleep(500); und wenn das nicht funktioniert: Thread.Sleep(500);
paconie
achso ok danke für deine hilfe hab es am ende mit der wartezeit hinbekommen smile

ich arbeite mich langsam dank dir darein hab aber ein letztes problem..

ich habe die Klassem KREIS QUADRAT DREIECK und LEINWAND.

KREIS QUADRAT und DREIECK sind Zeichnungen die auf die LEINWAND prejeziert werden.

Nun möchte ich eine neue Klasse haben unswar RECHTECK, ich möchte also auch Rechtecke machen können, ich hbas versucht aber nicht hinbekommen.

Im Grunde ist es ja das selbe wie bei QUADRAT nur das man Breite und Hoehe angeben sollte.

Bei der Klasse DREIECK kann man Hoehe und Breite angeben, ich habe es versucht in QUADRAT (also eigentlich RECHTECK) einzubauen hab es abe rnicht hinbekommen,

vllt kannst du da mal was versuchen heulen

wäre ganz nett, hier quelltext zu QUADRAT und DREIECK

QUADRAT

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
public class Quadrat
{
  private int groesse;
  private int xPosition;
  private int yPosition;
  private String farbe;
  private boolean istSichtbar;

  /**
   * Erzeuge ein neues Quadrat mit einer Standardfarbe an einer
   * Standardposition.
   */
  public Quadrat()
  {
    groesse = 30;
    xPosition = 60;
    yPosition = 50;
    farbe = "rot";
    istSichtbar = false;
  }

  /**
   * Mache dieses Quadrat sichtbar. Wenn es bereits sichtbar ist, tue
   * nichts.
   */
  public void sichtbarMachen()
  {
    istSichtbar = true;
    zeichnen();
  }

  /**
   * Mache dieses Quadrat unsichtbar. Wenn es bereits unsichtbar ist, tue
   * nichts.
   */
  public void unsichtbarMachen()
  {
    loeschen();
    istSichtbar = false;
  }

  /**
   * Bewege dieses Quadrat einige Bildschirmpunkte nach rechts.
   */
  public void nachRechtsBewegen()
  {
    horizontalBewegen(20);
  }

  /**
   * Bewege dieses Quadrat einige Bildschirmpunkte nach links.
   */
  public void nachLinksBewegen()
  {
    horizontalBewegen(-20);
  }

  /**
   * Bewege dieses Quadrat einige Bildschirmpunkte nach oben.
   */
  public void nachObenBewegen()
  {
    vertikalBewegen(-20);
  }

  /**
   * Bewege dieses Quadrat einige Bildschirmpunkte nach unten.
   */
  public void nachUntenBewegen()
  {
    vertikalBewegen(20);
  }

  /**
   * Bewege dieses Quadrat horizontal um 'entfernung' Bildschirmpunkte.
   */
  public void horizontalBewegen(int distance)
  {
    loeschen();
    xPosition += distance;
    zeichnen();
  }

  /**
   * Bewege dieses Quadrat vertikal um 'entfernung' Bildschirmpunkte.
   */
  public void vertikalBewegen(int entfernung)
  {
    loeschen();
    yPosition += entfernung;
    zeichnen();
  }

  /**
   * Bewege dieses Quadrat langsam horizontal um 'entfernung'
   * Bildschirmpunkte.
   */
  public void langsamHorizontalBewegen(int entfernung)
  {
    int delta;

    if (entfernung < 0)
    {
      delta = -1;
      entfernung = -entfernung;
    }
    else
    {
      delta = 1;
    }

    for (int i = 0; i < entfernung; i++)
    {
      xPosition += delta;
      zeichnen();
    }
  }

  /**
   * Bewege dieses Quadrat langsam vertikal um 'entfernung'
   * Bildschirmpunkte.
   */
  public void langsamVertikalBewegen(int entfernung)
  {
    int delta;

    if (entfernung < 0)
    {
      delta = -1;
      entfernung = -entfernung;
    }
    else
    {
      delta = 1;
    }

    for (int i = 0; i < entfernung; i++)
    {
      yPosition += delta;
      zeichnen();
    }
  }

  /**
   * Ändere die Größe dieses Quadrates in 'neueGroesse'.
   * 'neueGroesse' muss groesser gleich Null sein.
   */
  public void groesseAendern(int neueGroesse)
  {
    loeschen();
    groesse = neueGroesse;
    zeichnen();
  }

  /**
   * Ändere die Farbe dieses Quadrates in 'neueFarbe'.
   * Gültige Angaben sind "rot", "gelb", "blau", "gruen",
   * "lila" und "schwarz".
   */
  public void farbeAendern(String neueFarbe)
  {
    farbe = neueFarbe;
    zeichnen();
  }

  /*
   * Zeichne dieses Quadrat mit seinen aktuellen Werten auf den Bildschirm.
   */
  private void zeichnen()
  {
    if (istSichtbar)
    {
      Leinwand leinwand = Leinwand.gibLeinwand();
      leinwand.zeichne(
        this,
        farbe,
        new Rectangle(xPosition, yPosition, groesse, groesse));
      leinwand.warte(10);
    }
  }

  /*
   * Lösche dieses Quadrat vom Bildschirm.
   */
  private void loeschen()
  {
    if (istSichtbar)
    {
      Leinwand leinwand = Leinwand.gibLeinwand();
      leinwand.entferne(this);
    }
  }
}
paconie
DREIECK

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
public class Dreieck
{
  private int hoehe;
  private int breite;
  private int xPosition;
  private int yPosition;
  private String farbe;
  private boolean istSichtbar;

  /**
   * Erzeuge ein Dreieck mit einer Standardfarbe an einer Standardposition.
   */
  public Dreieck()
  {
    hoehe = 30;
    breite = 40;
    xPosition = 50;
    yPosition = 15;
    farbe = "gruen";
    istSichtbar = false;
  }

  /**
   * Mache dieses Dreieck sichtbar. Wenn es bereits sichtbar ist, tue
   * nichts.
   */
  public void sichtbarMachen()
  {
    istSichtbar = true;
    zeichnen();
  }

  /**
   * Mache dieses Dreieck unsichtbar. Wenn es bereits unsichtbar ist, tue
   * nichts.
   */
  public void unsichtbarMachen()
  {
    loeschen();
    istSichtbar = false;
  }

  /**
   * Bewege dieses Dreieck einige Bildschirmpunkte nach rechts.
   */
  public void nachRechtsBewegen()
  {
    horizontalBewegen(20);
  }

  /**
   * Bewege dieses Dreieck einige Bildschirmpunkte nach links.
   */
  public void nachLinksBewegen()
  {
    horizontalBewegen(-20);
  }

  /**
   * Bewege dieses Dreieck einige Bildschirmpunkte nach oben.
   */
  public void nachObenBewegen()
  {
    vertikalBewegen(-20);
  }

  /**
   * Bewege dieses Dreieck einige Bildschirmpunkte nach unten.
   */
  public void nachUntenBewegen()
  {
    vertikalBewegen(20);
  }

  /**
   * Bewege dieses Dreieck horizontal um 'entfernung' Bildschirmpunkte.
   */
  public void horizontalBewegen(int entfernung)
  {
    loeschen();
    xPosition += entfernung;
    zeichnen();
  }

  /**
   * Bewege dieses Dreieck vertikal um 'entfernung' Bildschirmpunkte.
   */
  public void vertikalBewegen(int entfernung)
  {
    loeschen();
    yPosition += entfernung;
    zeichnen();
  }

  /**
   * Bewege dieses Dreieck langsam horizontal um 'entfernung'
   * Bildschirmpunkte.
   */
  public void langsamHorizontalBewegen(int entfernung)
  {
    int delta;

    if (entfernung < 0)
    {
      delta = -1;
      entfernung = -entfernung;
    }
    else
    {
      delta = 1;
    }

    for (int i = 0; i < entfernung; i++)
    {
      xPosition += delta;
      zeichnen();
    }
  }

  /**
   * Bewege dieses Dreieck langsam vertikal um 'entfernung'
   * Bildschirmpunkte.
   */
  public void langsamVertikalBewegen(int entfernung)
  {
    int delta;

    if (entfernung < 0)
    {
      delta = -1;
      entfernung = -entfernung;
    }
    else
    {
      delta = 1;
    }

    for (int i = 0; i < entfernung; i++)
    {
      yPosition += delta;
      zeichnen();
    }
  }

  /**
   * Ändere die Höhe in 'neueHoehe' und die Breite in
   * 'neueBreite'. Beide Angaben müssen größer gleich Null sein.
   */
  public void groesseAendern(int neueHoehe, int neueBreite)
  {
    loeschen();
    hoehe = neueHoehe;
    breite = neueBreite;
    zeichnen();
  }

  /**
   * Ändere die Farbe dieses Dreiecks in 'neueFarbe'.
   * Gültige Angaben sind "rot", "gelb", "blau", "gruen",
   * "lila" und "schwarz".
   */
  public void farbeAendern(String neueFarbe)
  {
    farbe = neueFarbe;
    zeichnen();
  }

  /*
   * Zeichne dieses Dreieck mit seinen aktuellen Werten auf den Bildschirm.
   */
  private void zeichnen()
  {
    if (istSichtbar)
    {
      Leinwand leinwand = Leinwand.gibLeinwand();
      int[] xpoints =
        { xPosition, xPosition + (breite / 2), xPosition - (breite / 2)};
      int[] ypoints = { yPosition, yPosition + hoehe, yPosition + hoehe };
      leinwand.zeichne(this, farbe, new Polygon(xpoints, ypoints, 3));
      leinwand.warte(10);
    }
  }

  /*
   * Lösche dieses Dreieck vom Bildschirm.
   */
  private void loeschen()
  {
    if (istSichtbar)
    {
      Leinwand leinwand = Leinwand.gibLeinwand();
      leinwand.entferne(this);
    }
  }
}
Prophet
Wo ist den dein problem? Das rechteck ist doch nur eine Veralgemeinerung des Quadrats. Du benötigst doch nur noch breite und hoehe anstatt groese und schon geht es. musst ein bisschen was umschreiben...

hinweis: ich würde beinahe die hälfte der funktionen rauslöschen weil sie überflüssig sind und teilweise ein und dasselbe machen. desweiteren würde ich das ganze auch englisch machen aber das ist geschmackssache.

ich würde das ganze einmal überarbeiten und dan quadrat zu rechteck verallgemienern.
paconie
ja ich hab hoehe und breite benutzt anstatt groesse aber es hat nicht hingehauen, der hat mir die ganze zeit irgendwelche fehler gegeben unglücklich
Prophet
wäre nett wenn du die fehler/den fehlerhaften code mal postest...
paconie
habs nochma versucht und konnte sie selbst beheben smile

fetten dank an deine hilfe, soweit hab ich alles was ich brauchte smile

du bist super korrekt danke Ja
Prophet
habe ich doch gerne gemacht Augenzwinkern
paconie
sag mal eine frage hätte ich da noch smile

wie kann ich machen das die sonne in einem bogen unter geht?

also jetzt zur zeit geht sie nur gerade runter oder hoch..

oder ich habs auch mit gleichmäßger bwegeung imme rversucht

also

z.B.

sonne.langsamVertikalBewegen(2)
sonne.langsamHorizontalBewegen(2)

aber auf dauer ist das sehr aufwendig um den best möglichsten radius herzukriegen, ich habe mal gehört da sman das irgendwie mathematisch lösen kann?

weisst du wie, oder vielleicht ne andere methode um einen sonnenuntergang in einem bogen hinzubekommen?

verstehst du was ich mein smile
Prophet
Es gibt zwei kordinaten systeme:

Kartesisch: Also wie du es aus der schule kennst mit X und Y
Einheiten: Entvernung vertikal und entfernung horzontal.


Polar: Dort gibst du eine entfernugn und einen winkel zum ursprung an.
Einheiten: Entfernung(r = radius) und winkel(alpha)


x = r * cos(alpha)
y = r * sin(alpha)

r = wurzel(x^2 + y^2)

also entfernung consatant halten und winkel ändern. danach für den pc in x und y umrechenen.
paconie
verwirrt verwirrt verwirrt verwirrt verwirrt verwirrt verwirrt verwirrt verwirrt verwirrt verwirrt

sryy ^^ wie könnte das alles aussehen?

könntest du vielleicht n beispiel cript zeigen und den erläutern