Langtons Ameise - Fragen zur Umsetzung

AllenWalker

Neues Mitglied
Hallo Java-Freunde,

Ich bin neu im Forum und möchte meine Kenntnisse in der Sprache Java erweitern resp. verbessern. Um dies zu erreichen habe ich ein kleine Simulation geschrieben.

In der Simulation geht es um das Thema Langton's Ameise. Der Algorithmus ist korrekt implementiert und die stufenweise Visualisierung anhand eines
GameLoops funktioniert ebenfalls. Für die Implementierung des GameLoops habe ich mich an diesem Artikel orientiert.

Zusätzlich möchte ich die Simulation gerne erweitern in dem ich Informationen ausgebe und die Simulation steuere. Dazu hätte ich die ein oder andere Frage 🙂

Im Anhang befindet sich mein Projekt im aktuellsten Entwicklungsstand.

OOP
Woher weiß man in eigenen Projekten wann es sinnvoll ist Variablen oder Methoden als static zu deklarieren? Ist der Programmierstil "sauberer" die Parameter
entweder statisch, mit getter-/setter-Methoden oder als Parameter bei Methoden zu übergeben?

GUI-Programmierung
Wie kann ich den Informationsaustausch zwischen einzelnen JPanels erreichen? Zum Beispiel bei meinem Projekt die Anfangsausrichtung der Ameise über die JCombobox zu erreichen.

GameLoop
Des weiteren soll die Simulation über JButtons gestartet, pausiert und gestoppt werden. Wie könnte ich dies mit Hilfe des GameLoops umsetzen und könnte ich
den GameLoop auch als eigenständige Klasse implementieren?

Eine Recherche mit Google zu den einzelnen Themen hat bisher noch zu keinem Ergebnis geführt. Ich möchte mich bei euch für eure Hilfe danken 🙂

Mit freundlichen Grüßen,
Allen Walker
 

Anhänge

Zuletzt bearbeitet:
OOP
Das kommt ganz drauf an...

GUI-Programmierung
Wieso um Himmels Willen sollen die PANELS miteinander kommunizieren können?

GameLoop
Ganz einfach:
Java:
private boolean isRunning = false;

@ Override
public void run() {
	
	long lastFrame = System.currentTimeMillis();
	
	while ( true ) {
		
		try { Thread.sleep( 40 ); }
		catch ( Exception e ) { }
		
		long thisFrame = System.currentTimeMillis();
		float delta = ( thisFrame - lastFrame ) / 1000f;
		
		if ( isRunning ) {
			
			update( delta );
			render();
			
		}
		
	}
	
}
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben