Hallo allerseits,
Ich arbeite momentan an meiner Facharbeit im Informatik LK ueber Wegfindungs Algorihmen, dazu habe ich eine kleine Anwendung geschrieben.
Die drei Klassen "Karte", "Fenster" und "AlgorithmusAStern" sind fuer meine Frage mehr oder weniger von Bedeutng.
In der Klasse Karte wird ein Graph "erzeugt", aufdem der weg von a nach b gefunden werden soll.
Man kann sich vielleicht schon denken, dass in der 3. Klasse der Algorithmus mit seiner Hauptschleife steht. Momentan wird der Weg,
nachdem man auf einen Button gedrueckt hat direkt blau im Frame angezeit, da dies nur wenige Millisekunden dauert.
Jetzt moechte ich aber in der Schleife des Algorithmus eine kleine SleepTime von z.B. 100ms einrichten, und danach mit
"karte.fenster.repaint();" die neu eingefaerbten Bloecke im Frame updaten, um dem Vorgehen des Algorithmus bei der Arbeit zuzuschauen. Das hat alles bevor ich das Frame von dem Algorithmus separiert habe, und diese in einer grossen Klasse standen auch noch super geklappt. Jetzt ist es so, dass nach dem Start eine Weile lang keine Veraenderung im Frame zu sehen ist, und erst wenn der Weg gefunden wurde, er voll und ganz angezeigt wird.
Ich wurde mich ueber eine Antwort freuen
Hier noch die zwei Klassen:
Ich arbeite momentan an meiner Facharbeit im Informatik LK ueber Wegfindungs Algorihmen, dazu habe ich eine kleine Anwendung geschrieben.
Die drei Klassen "Karte", "Fenster" und "AlgorithmusAStern" sind fuer meine Frage mehr oder weniger von Bedeutng.
In der Klasse Karte wird ein Graph "erzeugt", aufdem der weg von a nach b gefunden werden soll.
Man kann sich vielleicht schon denken, dass in der 3. Klasse der Algorithmus mit seiner Hauptschleife steht. Momentan wird der Weg,
nachdem man auf einen Button gedrueckt hat direkt blau im Frame angezeit, da dies nur wenige Millisekunden dauert.
Jetzt moechte ich aber in der Schleife des Algorithmus eine kleine SleepTime von z.B. 100ms einrichten, und danach mit
"karte.fenster.repaint();" die neu eingefaerbten Bloecke im Frame updaten, um dem Vorgehen des Algorithmus bei der Arbeit zuzuschauen. Das hat alles bevor ich das Frame von dem Algorithmus separiert habe, und diese in einer grossen Klasse standen auch noch super geklappt. Jetzt ist es so, dass nach dem Start eine Weile lang keine Veraenderung im Frame zu sehen ist, und erst wenn der Weg gefunden wurde, er voll und ganz angezeigt wird.
Ich wurde mich ueber eine Antwort freuen

Hier noch die zwei Klassen:
Code:
public class AlgorithmusAStern {
private Karte karte;
private Knoten aktuellerknoten;
protected ArrayList <Knoten> openList;
protected ArrayList <Knoten> closedList;
protected int schaetzungsMethode = 0;
protected AlgorithmusAStern(Karte k) {
this.karte = k;
}
private void entfernungSchaezten( int zielX , int zielY ) {}
private int getManhattanSchaetzung(int x1, int y1, int x2, int y2) {}
private int getEuclideanSchaetzung(int x1, int y1, int x2, int y2) {}
private Knoten getKleinsten(ArrayList<Knoten> liste) {}
protected void findeKuerzestenWeg( int startx , int starty , int zielx , int ziely ) {
// ================ Start der Hauptschleife ========================== //
while(...) {
...
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
karte.fenster.repaint();
}
// =========================== Ende der Hauptschleife ========================= //
}
private void rekonstruiereWeg(Knoten knoten) {}
}
Code:
public class Karte {
protected Graph graph = new Graph();
protected Fenster fenster;
protected KarteSpeichern speicherer;
AlgorithmusAStern aStern;
...
protected Karte() {
fenster = new Fenster(this);
speicherer = new KarteSpeichern(this);
aStern = new AlgorithmusAStern(this);
neueKarteErzeugen();
}
protected void aSternLoesung() {
aStern.findeKuerzestenWeg(startx, starty, zielx, ziely);
}
protected void neueKarteErzeugen() {}
protected void zufaelligeKarte() {}
protected void reset() {}
protected void wandSetzen( int X , int Y ) {}
protected void wandEntfernen( int X , int Y ) {}
protected void startSetzen( int X , int Y ) {}
protected void zielSetzen( int X , int Y ) {}
protected int getXIndex( int knotenIndex ) {}
protected int getYIndex( int knotenIndex ) {}
public int getLetztenIndex() {}
protected void groesseAendern(int groesse) {}
protected void feldFaerben(Knoten knoten, String farbe) {}
}