simples Grafik Programm Sonne soll hinter Horizont untergehe

Status
Nicht offen für weitere Antworten.
T

Timmay

Gast
Moin! Habe einen Informatikkurs in der Schule und die Aufgabe mit BlueJ ein Haus inklusive Sonnenuntergang zu erstellen. Soweit so gut, wir haben dafür eine "Figuren" Datei(wird oft für den Javaeinstieg benutzt) bekommen mit der man Kreise, Dreiecke und Quadrate erzeugen kann. Jetzt habe ich mir allerdings in den Kopf gesetzt die Sonne hinter einem Horizont untergehen zu lassen. Allerdings erscheint diese immer vor dem Horizont wenn ich sie langsam bewege. Ich hoffe ihr könnt mir helfen, da ich überhaupt kein Java Profi bin möchte ich mich schonmal für meine "nichtfachliche" Sprache entschuldigen :oops:
Code:
void sonneBewegen()
      {
 
       sonne.langsamVertikalBewegen(100);
  
       sonne.farbeAendern("rot");
       sonne.langsamVertikalBewegen(200);
     }
Falls dieser Code noch nicht genug ist, sagt einfach bescheid!

Schon'mal vielen Dank im voraus!!! MfG Timmay
 
B

Beni

Gast
Interessant wäre vorallem der Teil, bei dem du Zeichnest :wink:
Was du beachtetn solltest: man muss immer zuerst das ganze Bild löschen, dann in der richtigen Reihenfolge (von hinten nach vorne, also Himmel -> Sonne -> Horizont) zeichnen.
 
T

Timmay

Gast
Code:
public void hausErscheine()
      {
      horizont.sichtbarMachen();
      sonne.sichtbarMachen();    
      schornstein.sichtbarMachen();
      schornstein2.sichtbarMachen();
      rohbau.sichtbarMachen();
      dach.sichtbarMachen();
      dach2.sichtbarMachen();
      fenster.sichtbarMachen();
      fenster2.sichtbarMachen();
      tuer2.sichtbarMachen();
      tuer.sichtbarMachen();
      }
 Ja das mit der Reihenfolge war mir klar, sonst wird der Horizont ja auch z. B. vor dem Haus dargestellt.      :)
 
B

Beni

Gast
Timmay hat gesagt.:
Ja das mit der Reihenfolge war mir klar, sonst wird der Horizont ja auch z. B. vor dem Haus dargestellt. :)

Ja, aber:
Code:
      horizont.sichtbarMachen();
      sonne.sichtbarMachen();
Der Horizont (damit wir uns nicht missverstehen) sind ein paar Hügel... also irgendwas Grünes das "Boden" darstellt?

Dann ist es jetzt verkehrt herum. Der horizont sollte vor der Sonne sein, aber nach deinem Code ist es umgekehrt.
 
T

Timmay

Gast
:oops: Ja Entschuldigung habe ich grad verkehrt herum eingesetzt. Aber auch dann geht es nicht, da wenn ich ein Objekt sich bewegen lasse wird es (wohl) in den Vordergrund verschoben.
 
B

Beni

Gast
Tja darum:
man muss immer zuerst das ganze Bild löschen

Ich weiss leider nicht, was "sichtbarMachen" alles macht, aber irgendwo wird "Graphics#drawIrgendwas" aufgerufen, und an dieser Stelle fehlt etwas :wink:
 
T

Timmay

Gast
Code:
  public void sichtbarMachen()
  {
    istSichtbar = true;
    zeichnen();
  }
Also das steht in sichtbarMachen.
Code:
 /************************************************************************
   * Interne Klasse Zeichenflaeche - die Klasse für die GUI-Komponente,
   * die tatsächlich im Leinwand-Fenster angezeigt wird. Diese Klasse
   * definiert ein JPanel mit der zusätzlichen Möglichkeit, das auf ihm
   * gezeichnet Image aufzufrischen (erneut zu zeichnen).
   */
  private class Zeichenflaeche extends JPanel
  {
    public void paint(Graphics g)
    {
      g.drawImage(leinwandImage, 0, 0, null);
    }
  }
Hier habe ich was mit
Graphics#drawIrgendwas
gefunden.
Ansonsten kann ich dir auch die gesamten Dateien mailen.
THX
 
B

Beni

Gast
Ahchso, ihr verwendet ein Image ("leinwandImage"). Dann musst du das Image löschen (z.B. mit Schwarz füllen), und die veränderte Situation in das Image zeichnen (also "hausErscheine" mit der neuen Position der Sonne aufrufen).
 
T

Timmay

Gast
Tut mir leid wenn ich dich nerve, aber könntest du das bitte nochmal etwas genauer formulieren? Sry ist mein erstes Javaprojekt( wenn man mal den Javahamster rauslässt*g*)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben