# Sternenhimmel Applet Hilfe!



## münchner (4. Jul 2007)

Ich brauche dringend euren Rat!

Wir sollen als Arbeitsauftrag eine Klasse in Java schreiben, die einen Sternenhimmel erzeugen soll und für die x-und y-Koordinaten Zufallszahlen generieren soll.

Ich habe bis jetz nur geschafft einen schwarzen Hintergrund zu zeichnen. Das mit den Sternen klappt irgendwie nicht so ganz. Hier mal mein verzweifelter Versuch etwas Zustande zu bringen:


```
import java.applet.*;
import java.awt.*;

public class Sternenhimmel extends Applet {
 public void paint (Graphics stift) {
 setBackground(Color.black);

 }
 public void paint (Graphics stift, int x, int y) {
 stift.setColor(Color.white);
 stift.drawLine(x,y,x,y);

 }


}
```

--Irgendwie krieg ich keinen weißen punkt hin und wie ich dann weitermachen soll weiß ich nicht könnt ihr mir Helfen.
Schon einmal vielen dank im vorraus.


----------



## Marco13 (4. Jul 2007)

Beim Starten des Applets werden mehrere Methoden automatisch aufgerufen. Unter anderem eine Methode 'init'. Du könntest in der 'init'-Methode eine zufällige Menge von Punkten erzeugen (z.B. Objekte vom Typ 'Point'). Die Punkte kannst du z.B. in einer ArrayList speichern.  In der paint-Methode kannst du dann nacheinander alle Punkte durchgehen, und sie zeichnen.


----------



## merlin2 (4. Jul 2007)

Zum Zeichnen solltest du Rechtecke und keine Linien verwenden.


----------



## münchner (4. Jul 2007)

Marco13 hat gesagt.:
			
		

> Beim Starten des Applets werden mehrere Methoden automatisch aufgerufen. Unter anderem eine Methode 'init'. Du könntest in der 'init'-Methode eine zufällige Menge von Punkten erzeugen (z.B. Objekte vom Typ 'Point'). Die Punkte kannst du z.B. in einer ArrayList speichern.  In der paint-Methode kannst du dann nacheinander alle Punkte durchgehen, und sie zeichnen.



wir haben noch nicht mit der methode init gearbeitet, wie soll das dann ungefähr aussehen?
public void init() und dann?

und was ist mit dem objekt vom typ ´Point´?
ehrlich gesagt hab ich davon nicht so viel ahnung und ich mach das nur weil ich muss^^.
aber danke für den beitrag


----------



## münchner (4. Jul 2007)

münchner hat gesagt.:
			
		

> Marco13 hat gesagt.:
> 
> 
> 
> ...


----------



## Marco13 (4. Jul 2007)

Sorry, ich wüßte nicht, wo die Grenze zwischen einem Beispiel und der Lösung verlaufen sollte. Kannst du eine etwas konkretere Frage stellen?


----------



## Guest (4. Jul 2007)

Marco13 hat gesagt.:
			
		

> Sorry, ich wüßte nicht, wo die Grenze zwischen einem Beispiel und der Lösung verlaufen sollte. Kannst du eine etwas konkretere Frage stellen?



sry ich hab keine ahnung was init methode oder Point ist...
aber ich hab mein Applet bisschen weiterentwickelt, eig müsste jetzt wenigstens ein Stern erscheinen, aber da tut sich gar nichts, der Himmel ist immer nch so schwarz wie vorher:


```
import java.applet.*;
import java.awt.*;

public class Sternenhimmel extends Applet {
 public void paint (Graphics stift) {
 setBackground(Color.black);

 }

 public void paint (Graphics stift, int x, int y) {
x = (int)(Math.random()*getSize().width);
y = (int)(Math.random()*getSize().height);
stift.setColor(Color.white);
 stift.drawLine(x,y,x,y);
 }


 }
[\code]
```


----------



## merlin2 (4. Jul 2007)

Wenn du in deinem Code nie _paint(Graphics, int, int)_ aufrufst, wird auch nur der Hintergrund gezeichnet.
Füg deiner _paint(Graphics stift)_ Folgendes hinzu:

```
paint(stift, 0, 0);
```


----------



## L-ectron-X (4. Jul 2007)

Mal ein Beispiel. Vielleicht kannst du was Nützliches daraus entnehmen.


```
import java.applet.*;
import java.awt.*;
import java.util.*;

public class NightSky extends Applet {
   private Point[] stars; //Behälter für Koordinaten von Sternen
   private Dimension dim; //Größe des Applets
   private Random random; //Zufallsgenerator
   
   public void init() {
      dim = getSize(); //Größe aus den Angaben in der Webseite besorgen
      random = new Random();
   }
   
   public void start() {

      /*bei jedem Applet-Start eine zufällige Anzahl von Sternen
        entsprechend der Applet-Größe generieren*/
      stars = new Point[random(dim.width * dim.height / 1000)];

      for(int i = 0; i < stars.length; i++) {
         stars[i] = randomStar();
      }
   }
   
   public void paint(Graphics g) {
      g.setColor(Color.BLACK);
      g.fillRect(0, 0, dim.width, dim.height);
      g.setColor(Color.WHITE);

      //Sterne zeichnen, Position und zufällige Größe
      for(int i = 0; i < stars.length; i++) {
         g.fillOval(stars[i].x, stars[i].y, random(3), random(3));
      }
   }
   
   //zufällige Anzahl generieren
   private int random(int max) {
      return random.nextInt(max);
   }
   
   //Positionen der Sterne generieren
   private Point randomStar() {
      int x = random(dim.width);
      int y = random(dim.height);
      return new Point(x, y);
   }
}
```


```
<html>
<head>
<title>NightSky-Applet</title>
</head>
<body>
<applet code="NightSky.class" width="800" height="700">
</applet>
</body>
</html>
```


----------

