Run- Methode zu überladen

MaZeFrJoTh

Mitglied
Hallo Leute, ich hab mal wieder eine Frage:
Ich habe meine Run- Methode von Zeit zu Zeit erweitert und das Ergebniss ist eine sehr überladen und sehr schlecht programmierte Run- Methode. Wie könnte man die unten stehende Methode ändern, ohne das man auf Funktionen verzichten muss?

Java:
public void run(){ 
            while(Fenster.isVisible()){ 
                if(gestartet == true){
                    for(int n = 1; n <= 44 && gestartet == true; n++){
                        for(int i = 1; i <= 250 && gestartet == true; i++){
                            BewegeObjekte();
                            if(koords[Zufall[n]].y <= 800){
                                koords[Zufall[n]].y = koords[Zufall[n]].y + 3;
                                repaint();
                            }
                            if(koords[Zufall[n]].y >= 705 && koords[Zufall[n]].y <= 720){
                                if(koords[Zufall[n]].x >= o - 5 && koords[Zufall[n]].x <= o + 125){
                                    PunkteErhöhen();
                                    koords[Zufall[n]].y = 1000;
                                }
                            }
                            try{
                                Thread.sleep(4);                                
                            }
                            catch(InterruptedException e){}
                        }
                        if(30 - timer.Zeit() <= 0){
                            repaint();
                            StoppeSpiel();
                        }
                    }                    
                }
                repaint();
            }

Ich weiß ihr werdet in Ohmacht fallen wenn ihr meinen Code liest aber trotzdem wäre ich euch dankbar wenn ihr mir helft.
 
S

SlaterB

Gast
Zeile 17-20 können sofort durch eine Hilfsmethode Helper.sleep(4); ersetzt werden,
das try/catch hilft niemand, verstecke es in der Methode,

sleep() unter 30 ms sehe ich persönlich übrigens kritisch, so genau geht das nicht,

--------

koords[Zufall[n]] musst du nix 10x schreiben,
lege eine Variable k an
k = koords[Zufall[n]];
und dann immer nur k schreiben

-----

dann könntes du noch auftrennen

Java:
run() {
while (true) 
  if gestart
     run2();
  repaint();
}


run2() {
   ..
}
und hast so zwei Verschachtelungsebenen aufgeräumt,

an sich sind 30 Zeilen Code aber noch von der harmlosen Sorte, andere verziehen bei 300 keine Miene
 

twseitex

Mitglied
Hi,
nach meiner Erfahrung sind Rekursionen im Thread freundlicher als Schleifen.
Für Rekursionsroutinen möglichst keine lokalen Variablen verwenden, so dass
weniger aufzuräumen ist. Funktionen bei zeitkritischem Verhalten nicht
per Call sondern im Code hinterlegen.
Java räumt leider auf, wann es will.
Wer malt, muss Ressourcen unbedingt einsparen, da Swing und Co.
(ausser AWT) nicht echtzeitfähig sind.

Cu.
 

MaZeFrJoTh

Mitglied
Hi,
nach meiner Erfahrung sind Rekursionen im Thread freundlicher als Schleifen.
Für Rekursionsroutinen möglichst keine lokalen Variablen verwenden, so dass
weniger aufzuräumen ist. Funktionen bei zeitkritischem Verhalten nicht
per Call sondern im Code hinterlegen.
Java räumt leider auf, wann es will.
Wer malt, muss Ressourcen unbedingt einsparen, da Swing und Co.
(ausser AWT) nicht echtzeitfähig sind.

Cu.

Das hört sich schon mal gut an, aber was heißt das konkret. Was muss ich an meinem aktuellen Code ändern?

Danke schon im Voraus.
 
S

SlaterB

Gast
zur Rekursion:
für mich klingt das statt while-true-Schleife am Ende einer Methode dieselbe Methode oder eben run() neu aufrufen,
empfehlen kann ich das nicht, das müllt den Speicher zu und nach ein paar Tausend Schritten gibts ne Exception,
mit Schleifendurchläufen mehrmals pro Sekunde ist das auch bald erreicht, unter einer Stunde
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B paintComponent Methode Spiele- und Multimedia-Programmierung 4
P Zahlenwert durch Methode ersetzen Spiele- und Multimedia-Programmierung 1
P .Wav Datei vor main-Methode abspielen? Spiele- und Multimedia-Programmierung 9
H Exeption in thread "Thread-2" NullPointerExeption: init methode? Spiele- und Multimedia-Programmierung 25
S GetBufferStrategy-Methode wird nicht angezeigt Spiele- und Multimedia-Programmierung 6
K Flackern bei repaint Methode Spiele- und Multimedia-Programmierung 3
A Zeichnen außerhalb der paint-Methode Spiele- und Multimedia-Programmierung 6
R Aufruf einer render-Methode Spiele- und Multimedia-Programmierung 12
G Methode sleepen während das Spiel weiterläuft Spiele- und Multimedia-Programmierung 3
M Beste methode zur Map Erstellen in "Block" Games Spiele- und Multimedia-Programmierung 2
J Images laden in static Methode Spiele- und Multimedia-Programmierung 8
P NullPointerException bei Aufruf von Methode Spiele- und Multimedia-Programmierung 10
G Mein erstes minigame -> problem mit Methode Spiele- und Multimedia-Programmierung 3
D Problem Mit Miensweeper Clone & rekursive Methode Spiele- und Multimedia-Programmierung 4
S Methode verändert mein Eingabe Array oO Spiele- und Multimedia-Programmierung 6
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
D Methode in eigenem Thread auslagern Spiele- und Multimedia-Programmierung 9
A Hilfe bei der Methode COLOR (Java) Spiele- und Multimedia-Programmierung 10
S transparenz per paint()-methode will nicht Spiele- und Multimedia-Programmierung 12
H Bilder speichern 2 - Methode richten? Spiele- und Multimedia-Programmierung 2
S Zur Laufzeit auf die Methode einer anderen Klasse zugreifen Spiele- und Multimedia-Programmierung 5
A Methode:setPointAntialiasingEnable(true) Spiele- und Multimedia-Programmierung 2
chik Wie arbeitet die polygon.contains Methode in Java Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben