Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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:
Code:
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.
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.
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
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.
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:
Code:
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]
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:
Mal ein Beispiel. Vielleicht kannst du was Nützliches daraus entnehmen.
Code:
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);
}
}