Java Probleme OOP

S

Shizou

Schönen guten Abend miteinander.
Da ich endlich Ferien habe und ich mich ein bisschen mit Informatik beschäftigen möchte, habe ich einige Fragen diesbezüglich.
Ich bin in der 11. Klasse und arbeite seit 8 Wochen mit Java.
Wir mussten erstmal Häuser bauen, eine Sonne, Straße etc. .
Buttons haben wir auch gemacht um den Tag in die Nacht zu verwandeln oder Licht an, Licht aus.
Da ich jetzt ein bisschen weiter kommen möchte, habe ich mir vorgenommen die Buttons, in einen zu fassen und wenn sich die Tageszeit ändert, das die Sonne bzw. der Mond dabei mitwandert und die Autos fahren.
Wenn dies nicht mit einem Button möglich ist, ist es auch ok einen extra Button anzufertigen das die Sonne, der Mond und die Autos sich bewegen.
Nur wie bringe ich sie dazu ?
Bitte um Hilfe :)

MFG Shizou
 
Sers!

Ich kapier dein Problem nicht...
Habe deinen Code mal angeschaut:

Du setzt doch die Positionen schon dynamisch:

Code:
if (!morgen) {
			color = new Color(160, 82, 45);
			color1 = new Color(255, 248, 220);
			color2 = new Color(255, 240, 245);
			color3 = new Color(127, 255, 0);
			color4 = new Color(255, 127, 80);
			color5 = Color.ORANGE;
			color6 = new Color(160, 82, 45);
			color7 = Color.GRAY;
			color8 = Color.WHITE;
			color9 = Color.LIGHT_GRAY;
			color10 = new Color(0, 100, 0);
			color11 = new Color(135, 206, 255);
			color12 = Color.RED;
			sonnex = 50;    <------HIER
			sonney = 250;   <------ UND HIER
			sonner = 50;    <-----UND HIER!
			gebüschx = 0;
			gebüschy = 650;
			gebüschx1 = 9999;
			gebüschy1 = 55;

		}
		if (!tag) {
			color = new Color(139, 71, 38);
			color1 = Color.LIGHT_GRAY;
			color2 = Color.LIGHT_GRAY;
			color3 = Color.GREEN;
			color4 = new Color(255, 127, 80);
			color5 = new Color(255, 165, 0);
			color6 = new Color(139, 71, 38);
			color7 = Color.GRAY;
			color8 = Color.WHITE;
			color9 = Color.LIGHT_GRAY;
			color10 = new Color(0, 100, 0);
			color11 = new Color(0, 154, 205);
			color12 = Color.RED;
			sonnex = 400;
			sonney = 50;
			sonner = 100;
			gebüschx = 0;
			gebüschy = 650;
			gebüschx1 = 9999;
			gebüschy1 = 55;

		}

		if (!nacht) {
			color = new Color(28, 28, 28);
			color1 = Color.YELLOW;
			color2 = Color.ORANGE;
			color3 = Color.BLACK;
			color4 = Color.ORANGE;
			color5 = Color.WHITE;
			color6 = new Color(28, 28, 28);
			color7 = new Color(28, 28, 28);
			color8 = new Color(79, 79, 79);
			color9 = new Color(54, 54, 54);
			color10 = new Color(0, 51, 0);
			color11 = Color.BLACK;
			color12 = new Color(24, 116, 205);
			sonnex = 800;
			sonney = 50;
			sonner = 150;
			gebüschx = 0;
			gebüschy = 650;
			gebüschx1 = 9999;
			gebüschy1 = 55;
		}
 
Ja schon, aber ich meine zeitlich wandern. Also wenn ich auf den Button klicke das die Sonne, der Mond und die Autos in einem Bogen wandern bzw. fahren.
 
Sorry wegen Doppelpost bzw. Spam.
Auch wenn ich es so mache wie mit der Sonne das sie klickartig wandert und zwar sofort zur nächsten Koordinate, dann brauch ich den Baukasten unten nicht mehr und muss alles neu machen und die Sachen auch verdoppeln damit sie halt 2 mal da sind. Und diese Arbeit möchte ich mir eigentlich ersparen.
 
Sers!

Gut... Also dann brauchst du eine Endlosschleife, die je nach Uhrzeit diese Felder mit Werten versieht:

Code:
		Calendar cal = Calendar.getInstance();
		int hour = cal.get(Calendar.HOUR_OF_DAY);
		
		while(true) {
			
			if(hour >= 5 && hour < 11) {
				// Stunde liegt zwischen 5 und 10; d.h. morgens:
				sonnex = 100;
				sonney = 100;
                                autox = 30;
                                autoy= 50;
			}
			else if(hour >= 11 && hour < 19) {
				// Stunde liegt zwischen 11 un 18; d.h. tagsüber:
				sonnex = 400;
				sonney = 50;
                                autox =250;
                                autoy= 50;
			}
			else {
				// nachts:
				sonnex = 100;
				sonney = 400;
                                autox = 390;
                                autoy= 50;
			}
		}

Die Fallunterscheidungen kannst du viel weiter verfeinern.
Da der Code endlos läuft, musst du, falls du trotzdem noch mit der Software agieren möchtest diesen Code in einen eigenen Thread packen.
Ich hoffe das ist das was du meinst.:)
 
Hey.
Danke für deine gute Antwort.
Das ist fast das was ich meine, denn ich wollte eigentlich einen Befehl also for oder while Schleife die zum Beispiel 10 Sekunden geht und nicht nach Uhrzeit. Ist das auch möglich?
 
Das ist dann der bereits genannte separate Thread:

Code:
Thread th = new Thread() {
			@Override
			public void run() {
				while(true) {
					
					sonnex += 10; // es werden einfach 10 druafgerechnet
					sonney += 10; // deto
					frame.repaint(); // Fenster muss neu gezeichnet werden
					try {
						sleep(10000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} // 10 Sekunden Pausen bis zum nächsten Durchlauf
					
				}
			}
		};
		th.start();
 
Hey.
Danke für den Code, aber bei th.start(); zeigt der mir an das start ein Fehler ist.
Und wie mache ich diesen Code zu einem Button ? Und funktioniert es auch das wenn ich auf den Button klicke das Morgen, Tag und Nacht automatisch ablaufen ?
 

Neue Beiträge

Zurück