Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

JAVA palaava...

also, da ich mich notgedrungen damit auseinander setzen muss, hab ich auch schon die erste Frage:

ich hab dafür BlueJ und das dazugehörende Buch....eine der Zusatzaufgaben ist in eine Zeichnung einen Sonnenuntergang einzubauen...soweit klappt das auch ganz gut, ich hab folgende Methode (heißt das so?) eingefügt

       public void Sonnenuntergang()
    {
        if(wand != null)
            {
                sonne.langsamHorizontalBewegen(5);
                sonne.langsamVertikalBewegen(5);
                }
               
                    }

allerdings bewegt sich die Sonne nur wenn ich die Methode (?) von Hand ausführe...wie kann ich das machen, das sie nach dem zeichnen von selber untergeht?


Antworten zu JAVA palaava...:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Was bedeutet denn "von Hand ausführen"?

Es sollte doch normalerweise ausreichen, die Methode nach dem Zeichnen aufzurufen.

Allerdings ist der Quellcode etwas knapp gehalten, um eine klare Aussage machen zu können.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

so sieht das aus:

[img=http://img527.imageshack.us/img527/701/neubitmapjt5.th.jpg]

zuerst auf zeichnung->neue zeichnung
dadurch erhält man das objekt zeichnung1, und an dem kann man dann verchiedene methoden ausführen

hier der QT für Zeichnung:

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("blau");
        sonne.horizontalBewegen(180);
        sonne.vertikalBewegen(-10);
        sonne.groesseAendern(60);
        sonne.sichtbarMachen();
       
       
    }

    /**
     * Ä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");
           
        }
    }
   
    public void langsamHorizontalBewegen()
    {
        if(wand != null)
            {
                sonne.langsamHorizontalBewegen(5);
               
                }
               
                    }
                   
     public void langsamVertikalBewegen()
    {
        if(wand != null)
            {
                sonne.langsamVertikalBewegen(5);
               
                }
               
                    }


        public void Sonnenuntergang()
    {
        if(wand != null)
            {
                sonne.langsamHorizontalBewegen(5);
                sonne.langsamVertikalBewegen(5);
                }
               
                    }
}

und er für Kreis:

public class Kreis
{
  private int durchmesser;
  private int xPosition;
  private int yPosition;
  private String farbe;
  private boolean istSichtbar;

  /**
   * Erzeuge einen neuen Kreis an einer Standardposition mit
   * einer Standardfarbe.
   */
  public Kreis()
  {
    durchmesser = 30;
    xPosition = 20;
    yPosition = 60;
    farbe = "blau";
    istSichtbar = false;
  }

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

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

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

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

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

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

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

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

  /**
   * Bewege diesen Kreis 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 diesen Kreis 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 den Durchmesser dieses Kreises in 'neuerDurchmesser'
   * (Angabe in Bildschirmpunkten).
   * 'neuerDurchmesser' muss größer gleich Null sein.
   */
  public void groesseAendern(int neuerDurchmesser)
  {
    loeschen();
    durchmesser = neuerDurchmesser;
    zeichnen();
  }

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

  /*
   * Zeichne diesen Kreis mit seinen aktuellen Werten auf den Bildschirm.
   */
  private void zeichnen()
  {
    if (istSichtbar)
    {
      Leinwand leinwand = Leinwand.gibLeinwand();
      leinwand.zeichne(
        this,
        farbe,
        new Ellipse2D.Double(xPosition, yPosition, durchmesser, durchmesser));
      leinwand.warte(10);
    }
  }

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

}



der Quelltext war schon gegeben...man soll da halt jetzt nur bissle dran rumbasteln...bin ja schon froh das überhaupt was funktioniert...nur soll sich die sonne halt automatisch bewegen, und da hab ich keinen blassen schimmer wie ich das machen soll...
und in sieben wochen is prüfung...OMG...naja wir müssen ja nicht wirklich programmieren sondern nur pseudocode schreiben, aber wenn ich´s in JAVA kann isses bestimmt besser...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Sollte eigentlich gehen, indem du den Block hier um eine Zeile ergänzt:

sonne = new Kreis();
sonne.farbeAendern("blau");
sonne.horizontalBewegen(180);
sonne.vertikalBewegen(-10);
sonne.groesseAendern(60);
sonne.sichtbarMachen();

// neu
this.Sonnenuntergang();

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

nö---da tut sich nix?  ???

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

na? keiner mal nen tipp? dachte mir evtl. mit ner while-do schleife...aber ich krieg das nicht gebacken...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

so....neues "problem"


ich hab ein array mit 24 werten...

mit einer for schleife und darunter mit if...else hab ich es geschafft das er den höchsten wert im array ausspuckt, allerdings soll er mir noch mitteilen in welcher zelle des Arrays dieser Wert steht...wie mach ich das? hab mir schon mein Hirn zermarttert, aber es funzt nix... ???

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Mehrere Möglichkeiten, hier die m.E. einfachste, indem du Dir den Höchsten Wert und die Position jeweils in einer temp-Variablen Speicherst.

public void check()
{
  //array mit 24 Werten, irgendwo gefüllt;
  int array[] = new array[24];
  //erster Wert des Arrays in temp
  int wert = array[0];
  int position = 0;

  (for int i = 0; i < array.length; i++)
  {
    if (array[i] > temp)
    {
      temp = array[i];
      position = i;
    }
  }
  System.out.println("Höchster Wert: " + wert);
  System.out.println("Position: " + position);
}

mfg   
« Letzte Änderung: 29.01.07, 13:19:46 von tremor4fun »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

boah...wie geil is das denn...?? und ich plage mich hier seit stunden rum mit diesem müll...


allerdings liefert er bei wert nicht den höchsten sonder den ersten wert??...naja die position stimmt schon mal

THX

EDIT: jetzt tuts wie´s soll...

public void maxZugriffe()
    {
       
       
        int position = 0;
        int temp = 0;
       

        for (int i = 0; i < zugriffeInStunde.length; i++)
            {
                if (zugriffeInStunde[i] > temp)
            {
                temp = zugriffeInStunde[i];
                    position = i;
                    }
            }
           
            System.out.println("Höchster Wert: " + zugriffeInStunde[position]);
            System.out.println("um " + position + " Uhr");
        }
 
« Letzte Änderung: 29.01.07, 14:08:56 von Hunne »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Jo, entweder so, oder du lässt dir den höchsten Wert unten einfach mit über die Variable temp ausgeben, denn die enthält den höchsten Wert auch ;)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

warum denn einfach wenns auch kompliziert geht... ;D


« .cmd datei mit symbol oder als .exe?Java - Regular Expressions-Problem »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Handheld
Siehe PDA ...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Bildschirmschoner
Der eigentliche Sinn des Bildschirmschoners ist, den Bildschirm vor dem Einbrennen des Monitorbildes zu schützen.Während das bei neueren Monitoren (außer ...