Zum Inhalt springen

Verständnisprobleme bei Java Applet


Empfohlene Beiträge

Geschrieben

Hallo,

ich habe mich etwas mit Netbeans und Java befasst und ein paar Tutorials und Beispielaufgaben auf dem Inet durchgearbeitet. Bei einer Aufgabe komme ich leider in stocken. Bei der Aufgabe handelt es sich um das Erstellen von Raketen zb. Sylversterraketen. Als ich Probleme hatte, diese bunten Funken nach der Explosion zu erstellen habe ich mir das fertig Program aus dem Inet gesaugt und angeschaut. Doch was dort steht, zu den bunten Funken, is mehr mehr oder minder ein Rätsel. Ich poste es mal...

partikel[] p= new partikel[100];

int r_vx=(r_ziel_x-r_start_x)/40;

int r_vy=(r_ziel_y-r_start_x)/60;

int r_x=(r_ziel_x);

int r_y=(r_ziel_y);

int t_x;

int t_y;

int t_r;

Color t_c;

double ent=Math.random();

if (ent<0.33) {

t_c=new Color(205+(int)(Math.random()*50),0,0);

} else if (ent>0.67){

t_c=new Color(0,205+(int) (Math.random()*50),0,0);

} else {

t_c = new Color (0,0,205+(int)(Math.random()*50));

}

for (int i=0; i<100; i++) {

p = new partikel(r_x, r_y, r_vx, r_vy,

Math.random()*10,

Math.random()*2*Math.PI,

t_c);

g.setColor(p.c);

t_x=(int)(p.x-p.r);

t_y=(int)(p.y-p.r);

t_r=(int)(2*p.r);

g.fillOval(t_x, t_y, t_r, t_r);

}

for(int i=0; i<50; i++) {

for(int j=0; j<100; j++) {

g.setColor(Color.BLACK);

t_x=(int)(p[j].x-p[j].r);

t_y=(int)(p[j].y-p[j].r);

t_r=(int)(2*p[j].r);

g.fillOval(t_x, t_y, t_r, t_r);

p[j].move();

g.setColor(p[j].c);

t_x=(int)(p[j].x-p[j].r);

t_y=(int)(p[j].y-p[j].r);

t_r=(int)(2*p[j].r);

g.fillOval(t_x, t_y, t_r, t_r);

}

pause(50);

}

Diese Partikel sollen wohl diese Funken darstellen. Im großen und ganzen habe ich das ja verstanden, nur ich würde gerne im Detail wissen, was da jetzt genau abläft und welcher Befehl genau was aussagt. So wie ich das verstanden habe, handelt es sich bei dem ersten Absatz um die einfache initialisierung der Variablen und das errechnen der Farbe der Partikel. Doch ich verstehe nich was die Variable "r_" vor den anderen zu bedeutet hat. Ganz zu schweigen von den beiden Absätzen die folgen. Ich würde mich freuen, wenn mir jemand etwas unter die Arme greifen könnte...

gruß

1one

Geschrieben (bearbeitet)


       partikel[] p= new partikel[100]; [COLOR="Red"]// array p instanziieren mit 100 elementen von partikeln[/COLOR]

       int r_vx=(r_ziel_x-r_start_x)/40; [COLOR="#ff0000"]// 40.teil des x-vektors, wozu benötigt, evtl. später zu sehen[/COLOR]

       int r_vy=(r_ziel_y-r_start_x)/60; [COLOR="#ff0000"]// 60.teil des y-vektors, kein Z also 2D[/COLOR]

       int r_x=(r_ziel_x); [COLOR="#ff0000"]// X-Vektor oder banal gesagt Koordinate[/COLOR]

       int r_y=(r_ziel_y); [COLOR="#ff0000"]// Y[/COLOR]

       int t_x; [COLOR="#ff0000"]// \[/COLOR]

       int t_y; [COLOR="#ff0000"]// - lokale Temp Variablen[/COLOR]

       int t_r;[COLOR="#ff0000"] // /[/COLOR]

       Color t_c;

       double ent=Math.random();[COLOR="#ff0000"] // "zufällige" Zahl mathematisch zwischen [0..1) im rellen Bereich[/COLOR]

       if (ent<0.33) {

           t_c=new Color(205+(int)(Math.random()*50),0,0); [COLOR="#ff0000"]// zufällige Abstufung von relativ rot bis rot[/COLOR]

       } else if (ent>0.67){

           t_c=new Color(0,205+(int) (Math.random()*50),0,0); [COLOR="#ff0000"]// zufällige Abstufung von relativ grün bis grün[/COLOR]

       } else {

           t_c = new Color (0,0,205+(int)(Math.random()*50));  [COLOR="#ff0000"]// zufällige Abstufung von relativ blau bis blau[/COLOR]

       }

       [COLOR="#ff0000"]

[/COLOR]// Schleife über das array, sollte aber besser for ... i<p.length lauten

         for (int i=0; i<100; i++) {

             p[i] = new partikel(r_x, r_y, r_vx, r_vy, [COLOR="#ff0000"]// instanziieren des jeweiligen Elements im Array[/COLOR]

                    Math.random()*10, [COLOR="#ff0000"]//  mit Zufallswerten[/COLOR]

                    Math.random()*2*Math.PI,

                    t_c);

             g.setColor(p[i].c);[COLOR="#ff0000"]// oben gebildete Farbe setzen[/COLOR]

             t_x=(int)(p[i].x-p[i].r); [COLOR="#ff0000"]// Ursprungs-Koordinate X minus Radius (also für zeichenroutine nach links schieben)[/COLOR]

             t_y=(int)(p[i].y-p[i].r);[COLOR="#ff0000"] // Y - Radius, also für Zeichenroutine nach oben schieben (vermute, Zeichenroutine zeichnen von außen)[/COLOR]

             t_r=(int)(2*p[i].r);[COLOR="#ff0000"] // Radius als Durchmesser[/COLOR]

             g.fillOval(t_x, t_y, t_r, t_r); [COLOR="#ff0000"]// ausgefüllte Ellipse bilden (hier speziel Kreis, weil zweimal t_r als Radius)[/COLOR]


       }

	[COLOR="#ff0000"]// verschachtelte Schleife läuft 50mal über alle 100 partikel und wartet dabei pause(50)[/COLOR]

       for(int i=0; i<50; i++) {

		   [COLOR="#ff0000"]// pro i über alle 100 partikel[/COLOR]

           for(int j=0; j<100; j++) {

               g.setColor(Color.BLACK);[COLOR="#ff0000"] // schwarze Farbe als aktuelle auf Grafikzeichenfläche setzen[/COLOR]

               t_x=(int)(p[j].x-p[j].r);

               t_y=(int)(p[j].y-p[j].r);

               t_r=(int)(2*p[j].r);

               g.fillOval(t_x, t_y, t_r, t_r); [COLOR="#ff0000"]// das ist die alte Stelle und hier wird das alte farbige Partikel schwarz überzeichnet[/COLOR]

               p[j].move(); [COLOR="#ff0000"]// jetzt wird das Partikel irgendwohin bewegt, wahrscheinlich nur ein bissl verschoben[/COLOR]

               g.setColor(p[j].c); [COLOR="#ff0000"]// jetzt wird wieder die ursprüngliche Farbe gesetzt[/COLOR]

               t_x=(int)(p[j].x-p[j].r);

               t_y=(int)(p[j].y-p[j].r);

               t_r=(int)(2*p[j].r);

               g.fillOval(t_x, t_y, t_r, t_r);[COLOR="#ff0000"] //  und an die neue Stelle farbig gezeichnet[/COLOR]

           }

           pause(50);[COLOR="#ff0000"]// wahrscheinlich 50 Millisekunden warten[/COLOR]

       }

r_ ist wahrscheinlich der Richtungsvektor, der von einer anderen Stelle übergeben wird.

Die beiden Absätze die folgen sind:

- einmal eine Schleife über alle 100 Elemente, wobei diese Partikel zufällig initialisiert, positioniert und das erste mal gezeichnet werden

- und der zweite Absatz zeichnet 50mal wahrscheinlich alle 50ms eine Veränderung der Funken nach einer Positionsverschiebung

auf eine schwarze Zeichnenfläche das vorher gezeichnete Objekt schwarz übermalen ist eine beliebte Methode um das Objekt von der Zeichenfläche zu "löschen" und nach Verschiebung wirds einfach neu gezeichnet. Und dann im nächsten der 50 Schritte dasselbe nochmal.

Das ist ein sehr simple Animation :D

Bearbeitet von VaNaTiC

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...