While Schleife für ganzes Applet

vikingX

Mitglied
Servus!
Hoffe jemand kann mir auf die Sprünge helfen, klebe gerade ziemlich fest. Gegeben ist ein Applet das einen zweidimensionalen Luftraum definiert, und durch den Striche, die Flugzeuge simulieren, fliegen. Dies ist soweit gelungen, die Richtung (Heading) wird dabei zufällig generiert.

Im Moment ist es allerdings so, dass das ganze einmal durchläuft, und dann stoppt. Die Idee wäre aber, dass nach einem Durchgang, das ganze neu startet, also neue "Flugzeuge" mit neuen Headings generiert werden, solange bis es zu einem Zusammenstoss kommt.

Ich wollte das mit einer while Schleife lösen, in der ich mich auf die X und Y Positionen der "Flugzeuge" beziehe, sprich wenn diese Werte identisch sind, soll das ganze stoppen und einen String ausgeben, ansonsten soll das ganze Applet immer neu gestartet werden. Entweder geht das so nicht, oder ich platzier die Schleife am falschen Ort.

Kann mir jemand weiterhelfen?

Herzlichen Dank jetzt schon!


Aufgebaut ist das ganze folgendermassen:
Java:
mport java.applet.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.Timer;

public class test2 
		extends Applet 
		implements ActionListener 
{
		
	// globale Variablen Aircraft 1
	....
	// globale Variablen Aircraft 2
	...	
	// globale Variablen Aircraft 3
	....	
		
	public void init() {
		setSize(400, 400);
		heading = (double) (Math.random() * 360);
		
		
		System.out.println(heading);
		if (heading > 0 && heading < 45) {
			double einheitskreis = heading; // nur im ersten Quadranten
			//tangens des Einheitskreises berechnen
			double tangens = Math.tan(Math.toRadians(einheitskreis)); 
			System.out.println(tangens);
			
			// x-Koordinate Einflugpunkt auf dem Rechteck
			einflugx = mittelpunktx - tangens * radiuskreis; 
			// y-Koordinate Einflugpunkt auf dem Rechteck
			einflugy = mittelpunkty + radiuskreis; 
			
		} else if (heading >= 45 && heading < 90) {
			double einheitskreis = 90 - heading;
			//tangens des Einheitskreises berechnen
			double tangens = Math.tan(Math.toRadians(einheitskreis)); 
			System.out.println(tangens);
			
			einflugx = mittelpunktx - radiuskreis;
			einflugy = mittelpunkty + tangens * radiuskreis;
		}
		
                 //usw bis 360 Grad
                ....
	         //Aircraft 2 nochmals dasselbe
	
		//Aircraft 3 ebenfalls
		
			
		zeichnungswinkel = Math.toRadians(450-heading);
		zeichnungswinkel2 = Math.toRadians(450-heading2);
		zeichnungswinkel3 = Math.toRadians(450-heading3);
		

		int delay = 100; // milliseconds
		new Timer(delay, this).start();
	}

	
	
	
	public void actionPerformed(ActionEvent ereignis)
	{
		
		if (counter == 0) {
			ursprungx = einflugx;
			ursprungy = einflugy;
			ursprungx2 = einflugx2;
			ursprungy2 = einflugy2;
			ursprungx3 = einflugx3;
			ursprungy3 = einflugy3;
		
		}
		else {
			ursprungx = zielx;
			ursprungy = ziely;
			ursprungx2 = zielx2;
			ursprungy2 = ziely2;
			ursprungx3 = zielx3;
			ursprungy3 = ziely3;
		}
		
		zielx = ursprungx + länge * Math.cos(zeichnungswinkel);
		ziely = ursprungy - länge * Math.sin(zeichnungswinkel);
		zielx2 = ursprungx2 + länge * Math.cos(zeichnungswinkel2);
		ziely2 = ursprungy2 - länge * Math.sin(zeichnungswinkel2);
		zielx3 = ursprungx3 + länge * Math.cos(zeichnungswinkel3);
		ziely3 = ursprungy3 - länge * Math.sin(zeichnungswinkel3);
		
		
		counter++;
				
		this.repaint();
		}
	

	public void paint(Graphics g) {
		
	
		for (int i = 1; i < 361; i = i + 10){
			irad = Math.toRadians(i);
			xaussen = 200 + (ra * Math.cos(irad));
			yaussen = 200 - (ra * Math.sin(irad));
			xinnen = 200 + (ri * Math.cos(irad));
			yinnen = 200 - (ri * Math.sin(irad));
			g.drawLine((int)xaussen, (int)yaussen, (int)xinnen, (int)yinnen);
		}
		
		g.setColor(Color.black);
		g.drawLine((int)ursprungx, (int)ursprungy, (int)zielx, (int)ziely);
		g.drawString(""+(int)heading, (int)ursprungx+10, (int)ursprungy);
		g.setColor(Color.blue);
		g.drawLine((int)ursprungx2, (int)ursprungy2, (int)zielx2, (int)ziely2);
		g.drawString(""+(int)heading2, (int)ursprungx2+10, (int)ursprungy2);
		g.setColor(Color.orange);
		g.drawLine((int)ursprungx3, (int)ursprungy3, (int)zielx3, (int)ziely3);
		g.drawString(""+(int)heading3, (int)ursprungx3+10, (int)ursprungy3);
		
		
		}
	}
 

Gucky

Top Contributor
Wenn du eine Endlosschleife haben willst, dann guck dir doch mal die Threads an. Dadurch legst du nicht das ganze Programm lahm und trotzdem wird es immer wieder aufgerufen.
 

vikingX

Mitglied
Eine Endlosschleife wärs ja in dem Sinn nicht, da es eine Abbruchbedingung gibt oder? Ich versuchte es mit
Java:
do{...}
while (zielx != zielx2 && ziely != ziely2);
allerdings wirkt das überhaupt nicht, die Action wird trotzdem nur einmal ausgeführt..
 

vikingX

Mitglied
Stimmt, while sollte genügen, resp. wäre sogar das bessere, da eine Kollision auch schon beim ersten Durchgang eintreffen könnte.. Wenn ich die while Schlaufe aber in die ActionPerformed oder paint nehme, stürzt das Applet ab, nehm ich es in die init class, dann passiert gar nix..
 

kaoZ

Top Contributor
Warum nicht so in der art:

Java:
package versuche;

public class Foo{
	
	
	int a,b;
	boolean bool;
	
	public Foo(){
		
		bool = true;
		
		while(bool){
			
			start();
			
		}
	}
	
	public void stop(){ // wenn abbruchbedingung bzw koolision rufe diese Methode auf !
		
		bool =false;
		
	}
	
	public void start(){  // hier dein Code rein ! / die schleifen wäre dann deine zufällig generrierten "Striche/koordinaten"
		
		for(a =1;a<500; a++){
			
			a  = a + 1;  // <<---sonst würde in diesem beispiel keine Abbruchbedingung erreicht werden :)
		
			for(b=0;b<500;b++){ // man könnte für b natürlich auch einen festen wert setzen und nur a solange durchlaufen lassen bis die abbruchbedingung erreicht ist 
				
				b = b + 2;
			}
			System.out.println(a + " | " + b);
		}
		
		if(a == b){
			
			stop();
			System.out.println(" Crash !!" +  " " + bool);
			System.out.println(a + " | " + b);
		}
	}
	
	
	
	public static void main(String[]args){
		
		new Foo();
	}

}

Das wären jetzt z.B deine zufällig generierten Fluglinien , bei 501 treffen sie aufeinander:

rechts steht immer 501 weil erst eine schleife durchlaufen wird und dann die andere, hat was mit der art der ausgabe zu tun , ich hätte auch beide schleifen getrennt ausgeben können .

Ausgabe :
Java:
2 | 501
4 | 501
6 | 501
8 | 501
10 | 501
12 | 501
14 | 501
16 | 501
18 | 501
20 | 501
22 | 501
24 | 501
26 | 501
28 | 501
30 | 501
32 | 501
34 | 501
36 | 501
38 | 501
40 | 501
42 | 501
44 | 501
46 | 501
48 | 501
50 | 501
52 | 501
54 | 501
56 | 501
58 | 501
60 | 501
62 | 501
64 | 501
66 | 501
68 | 501
70 | 501
72 | 501
74 | 501
76 | 501
78 | 501
80 | 501
82 | 501
84 | 501
86 | 501
88 | 501
90 | 501
92 | 501
94 | 501
96 | 501
98 | 501
100 | 501
102 | 501
104 | 501
106 | 501
108 | 501
110 | 501
112 | 501
114 | 501
116 | 501
118 | 501
120 | 501
122 | 501
124 | 501
126 | 501
128 | 501
130 | 501
132 | 501
134 | 501
136 | 501
138 | 501
140 | 501
142 | 501
144 | 501
146 | 501
148 | 501
150 | 501
152 | 501
154 | 501
156 | 501
158 | 501
160 | 501
162 | 501
164 | 501
166 | 501
168 | 501
170 | 501
172 | 501
174 | 501
176 | 501
178 | 501
180 | 501
182 | 501
184 | 501
186 | 501
188 | 501
190 | 501
192 | 501
194 | 501
196 | 501
198 | 501
200 | 501
202 | 501
204 | 501
206 | 501
208 | 501
210 | 501
212 | 501
214 | 501
216 | 501
218 | 501
220 | 501
222 | 501
224 | 501
226 | 501
228 | 501
230 | 501
232 | 501
234 | 501
236 | 501
238 | 501
240 | 501
242 | 501
244 | 501
246 | 501
248 | 501
250 | 501
252 | 501
254 | 501
256 | 501
258 | 501
260 | 501
262 | 501
264 | 501
266 | 501
268 | 501
270 | 501
272 | 501
274 | 501
276 | 501
278 | 501
280 | 501
282 | 501
284 | 501
286 | 501
288 | 501
290 | 501
292 | 501
294 | 501
296 | 501
298 | 501
300 | 501
302 | 501
304 | 501
306 | 501
308 | 501
310 | 501
312 | 501
314 | 501
316 | 501
318 | 501
320 | 501
322 | 501
324 | 501
326 | 501
328 | 501
330 | 501
332 | 501
334 | 501
336 | 501
338 | 501
340 | 501
342 | 501
344 | 501
346 | 501
348 | 501
350 | 501
352 | 501
354 | 501
356 | 501
358 | 501
360 | 501
362 | 501
364 | 501
366 | 501
368 | 501
370 | 501
372 | 501
374 | 501
376 | 501
378 | 501
380 | 501
382 | 501
384 | 501
386 | 501
388 | 501
390 | 501
392 | 501
394 | 501
396 | 501
398 | 501
400 | 501
402 | 501
404 | 501
406 | 501
408 | 501
410 | 501
412 | 501
414 | 501
416 | 501
418 | 501
420 | 501
422 | 501
424 | 501
426 | 501
428 | 501
430 | 501
432 | 501
434 | 501
436 | 501
438 | 501
440 | 501
442 | 501
444 | 501
446 | 501
448 | 501
450 | 501
452 | 501
454 | 501
456 | 501
458 | 501
460 | 501
462 | 501
464 | 501
466 | 501
468 | 501
470 | 501
472 | 501
474 | 501
476 | 501
478 | 501
480 | 501
482 | 501
484 | 501
486 | 501
488 | 501
490 | 501
492 | 501
494 | 501
496 | 501
498 | 501
500 | 501
 Crash !! false
501 | 501
 
Zuletzt bearbeitet:

vikingX

Mitglied
Dankeschön,also dass ich den Code für die Zufallsbestimmung des Heading in die for Schleife nehme, hab ich verstanden. In der Ausgabe werden dann die neuen Headings auch schön ausgegeben. Aber wo kommen nun folgender Teil hin, der ja das ganze dann visualisiert, und wie erreiche ich, dass das neue Heading erst generiet wird, wenn der vorige Durchgang fertig visualisiert wurde?

Java:
public void actionPerformed(ActionEvent ereignis)
	{
		
		
		
		if (counter == 0) {
			ursprungx = einflugx;
			ursprungy = einflugy;
			ursprungx2 = einflugx2;
			ursprungy2 = einflugy2;
			ursprungx3 = einflugx3;
			ursprungy3 = einflugy3;
		
		}
		else {
			ursprungx = zielx;
			ursprungy = ziely;
			ursprungx2 = zielx2;
			ursprungy2 = ziely2;
			ursprungx3 = zielx3;
			ursprungy3 = ziely3;
		}
		
		zielx = ursprungx + länge * Math.cos(zeichnungswinkel);
		ziely = ursprungy - länge * Math.sin(zeichnungswinkel);
		zielx2 = ursprungx2 + länge * Math.cos(zeichnungswinkel2);
		ziely2 = ursprungy2 - länge * Math.sin(zeichnungswinkel2);
		zielx3 = ursprungx3 + länge * Math.cos(zeichnungswinkel3);
		ziely3 = ursprungy3 - länge * Math.sin(zeichnungswinkel3);
		
		
		counter++;
		
		
		
				
		this.repaint();
		}
	

	public void paint(Graphics g) {
		
	
		for (int i = 1; i < 361; i = i + 10){
			irad = Math.toRadians(i);
			xaussen = 200 + (ra * Math.cos(irad));
			yaussen = 200 - (ra * Math.sin(irad));
			xinnen = 200 + (ri * Math.cos(irad));
			yinnen = 200 - (ri * Math.sin(irad));
			g.drawLine((int)xaussen, (int)yaussen, (int)xinnen, (int)yinnen);
		}
		
		g.setColor(Color.black);
		g.drawLine((int)ursprungx, (int)ursprungy, (int)zielx, (int)ziely);
		g.drawString(""+(int)heading, (int)ursprungx+10, (int)ursprungy);
		g.setColor(Color.blue);
		g.drawLine((int)ursprungx2, (int)ursprungy2, (int)zielx2, (int)ziely2);
		g.drawString(""+(int)heading2, (int)ursprungx2+10, (int)ursprungy2);
		g.setColor(Color.orange);
		g.drawLine((int)ursprungx3, (int)ursprungy3, (int)zielx3, (int)ziely3);
		g.drawString(""+(int)heading3, (int)ursprungx3+10, (int)ursprungy3);
		
		
		
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M While-Schleife mit Wartezeit Java Basics - Anfänger-Themen 15
Ranger229 Endless loop in while Schleife Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
Ostkreuz While Schleife neustarten Java Basics - Anfänger-Themen 20
S Erste Schritte do-while Schleife Münzwurf Java Basics - Anfänger-Themen 1
S while Schleife Taschenrechner Java Basics - Anfänger-Themen 1
P Best Practice While loop schleife Java Basics - Anfänger-Themen 5
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
R do while Schleife Verständnisfrage Java Basics - Anfänger-Themen 2
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
A Return in While Schleife Java Basics - Anfänger-Themen 6
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
J do..while Schleife Java Basics - Anfänger-Themen 14
B Zuweisungen und Methodenaufrufe in Bedingung der while Schleife? Java Basics - Anfänger-Themen 2
JavaBeginner22 Würfeln bis 6 while Schleife Java Basics - Anfänger-Themen 13
L while Schleife mit 2 Bedingung endet nicht Java Basics - Anfänger-Themen 3
D Array mit while-schleife Java Basics - Anfänger-Themen 12
B do while Schleife Java Basics - Anfänger-Themen 3
SergioCK Do while Schleife wiederholen Java Basics - Anfänger-Themen 14
Informatikf Methoden While Schleife Java Basics - Anfänger-Themen 3
M While Schleife? Java Basics - Anfänger-Themen 4
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
M Wie kann ich Werte die in einer While Schleife sind weiter genutzt werden? Java Basics - Anfänger-Themen 7
H Kann eine while-Schleife ein Programm blockieren? Java Basics - Anfänger-Themen 8
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
A Wie schaffe ich das eine while Schleife addiert danach subtrahirt? Java Basics - Anfänger-Themen 1
J for /while Schleife Java Basics - Anfänger-Themen 5
A While Schleife - buubelsort methode Java Basics - Anfänger-Themen 2
J Wie kann ich hier eine While schleife einbauen? Java Basics - Anfänger-Themen 3
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
S Do-While-Schleife Java Basics - Anfänger-Themen 2
S While Schleife Java Basics - Anfänger-Themen 4
S Do-While Schleife Java Basics - Anfänger-Themen 6
L String in Do-While-Schleife Abbruchkriterium Java Basics - Anfänger-Themen 1
CptK Methoden While-Schleife so lange ausführen, wie Methode etwas zurückgibt Java Basics - Anfänger-Themen 2
B Verschachtelung von For-Schleife in While Schleife Java Basics - Anfänger-Themen 14
G while schleife Java Basics - Anfänger-Themen 11
G while schleife mit array Java Basics - Anfänger-Themen 12
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
G While schleife Java Basics - Anfänger-Themen 2
mor16Euro Erste Schritte Wie nennt man eine While oder For schleife die nie Ausgeführt wird Java Basics - Anfänger-Themen 5
C Verständnisfrage bezüglich der Do-While Schleife Java Basics - Anfänger-Themen 9
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
N while Schleife wird nicht beendet, obwohl Sie hätte breaken sollen Java Basics - Anfänger-Themen 4
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
A Erste Schritte while-Schleife Java Basics - Anfänger-Themen 38
X While Do schleife funtioniert nicht Java Basics - Anfänger-Themen 5
J 2 "while"-Anweisungen in einer do-Schleife? Java Basics - Anfänger-Themen 4
W while Schleife und Bedingung Java Basics - Anfänger-Themen 11
T While Schleife funktioniert nicht Java Basics - Anfänger-Themen 14
J Input/Output Strings aneinander reihen mit while schleife Java Basics - Anfänger-Themen 25
S Try-Catch in Verwendung einer while Schleife Java Basics - Anfänger-Themen 2
P a cannot be resolved bei einer do while Schleife Java Basics - Anfänger-Themen 1
J While Schleife Java Basics - Anfänger-Themen 19
Z Return in While-Schleife Java Basics - Anfänger-Themen 7
N Methode mit While-Schleife und If-Bedingung und Array-Initialisierung Java Basics - Anfänger-Themen 4
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
helldunkel While Schleife trotz false Java Basics - Anfänger-Themen 4
E Threads Thread in While-Schleife nur einmal starten Java Basics - Anfänger-Themen 2
R While-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 24
b1ck while-Schleife Java Basics - Anfänger-Themen 10
b1ck Integer initialisieren bei do-while-Schleife Java Basics - Anfänger-Themen 11
kilopack15 DoWhile-Schleife als While-Schleife darstellen Java Basics - Anfänger-Themen 9
A While-Schleife funktioniert nicht! Java Basics - Anfänger-Themen 33
A Verständnisproblem Ausgabe Do-While-Schleife Java Basics - Anfänger-Themen 3
E Alphabet mit einer while Schleife ausgeben Java Basics - Anfänger-Themen 3
T while schleife starten , beeneden und wieder Starten Java Basics - Anfänger-Themen 8
W Verständnis Probleme bei der while-Schleife und continue Java Basics - Anfänger-Themen 21
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
$ Multiplikations-Rechner mit while Schleife Java Basics - Anfänger-Themen 8
T Variablen Var aus While-Schleife abfragen -.-' Java Basics - Anfänger-Themen 9
snipesss Schlüsselworte While Schleife Java Basics - Anfänger-Themen 3
snipesss While Schleife Java Basics - Anfänger-Themen 6
A Do-While Schleife; int vergleich Java Basics - Anfänger-Themen 2
K For Schleife in While Schleife umwandeln Java Basics - Anfänger-Themen 5
Ste3et_C0st Dynamische While/For Schleife Java Basics - Anfänger-Themen 7
L do-while-Schleife läuft doppelt, try catch fehler Java Basics - Anfänger-Themen 12
A While und For Schleife Java Basics - Anfänger-Themen 2
C Erste Schritte Frage zur do while- und while-Schleife Java Basics - Anfänger-Themen 4
C Do-While Schleife (Fehler bei der Klammerung?) Java Basics - Anfänger-Themen 8
C while-Schleife wird zuoft durchgeführt Java Basics - Anfänger-Themen 2
F Problem do while Schleife und Scanner Java Basics - Anfänger-Themen 2
F Programm bricht While Schleife nicht ab Java Basics - Anfänger-Themen 4
S Verständnis - Frage mehrere SQL Statements in While Schleife Java Basics - Anfänger-Themen 0
C Erste Schritte Warum ist die While Schleife so schnell? Java Basics - Anfänger-Themen 5
A was wird in der while schleife gemacht Java Basics - Anfänger-Themen 3
A Kleines Abbruch-Problem mit Do-While-Schleife Java Basics - Anfänger-Themen 4
Z Logikfehler do-while Schleife Java Basics - Anfänger-Themen 4
E While-Schleife Java Basics - Anfänger-Themen 6
D Textfield im Game ,Problem: while-Schleife Java Basics - Anfänger-Themen 1
A Probleme mit While Schleife Java Basics - Anfänger-Themen 10
M Fibonacci-Folge mit while-Schleife Java Basics - Anfänger-Themen 4
B Summe aller Zahlen von 1 bis zu dieser Zahl (ohne while oder for schleife) Java Basics - Anfänger-Themen 4
LangUndBreit Erste Schritte 100% cpu auslastung (evtl unendliche while schleife?) Java Basics - Anfänger-Themen 1
T Wie vergleiche ich die Jahre aus der while Schleife die in ( public class) fuer cbx geschrieben sind Java Basics - Anfänger-Themen 5
T while Schleife Java Basics - Anfänger-Themen 22
N While Schleife Erklärung Bitte Java Basics - Anfänger-Themen 3
F Problem mit der While schleife und dem Scanner Java Basics - Anfänger-Themen 2
A do while Schleife wird 2 mal durchlaufen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben