Package sim

Class SYSimulation

java.lang.Object
sim.SYSimulation

public class SYSimulation extends Object
Scotland Yard Simulation, Algorithmen und Datenstrukturen, WS 2011/2012

Dieses Programm dient als Visualisierung der in der Vorlesung Algorithmen und Datenstrukturen behandelten Graphenalgorithmen. Es arbeitet mit der Karte aus dem Spiel Scotland Yard. Es können grundsätzlich zwei Bewegungen visualisiert werden:

1. Besuchen einer Station, dabei wird die entsprechende Station durch einen Kreis markiert.
2. Fahren von einer Station zu einer anderen, dabei wird der Weg zwischen den Stationen durch eine Linie gekennzeichnet.

Durch wiederholtes Anwenden dieser zwei Bewegungen kann so die Reihenfolge der besuchten Knoten (Stationen) und der gefundene Weg am Beispiel der Scotland Yard Karte visuell dargestellt werden.

Funktionsweise:

Durch Erzeugung einer Ojektinstanz wird das Hauptfenster mit der Scotland Yard Karte geöffnet. Das Programm unterstützt das Simulieren mehrerer "Sequenzen" hintereinander. Eine Sequenz wird dabei durch die beiden Methoden startSequence() und stopSequence() gekennzeichnet. Nach Aufruf von startSequence() können Stationen mit visitStation() besucht werden, oder es kann mit drive() gefahren werden. Das Ende einer Sequenz wird mit dem Aufruf von stopSequence() gekennzeichnet. Erst danach kann mit startSequence() wieder eine neue Sequenz begonnen werden. Dabei werden die Kartenmarkierungen der letzten Sequenz auf der Karte gelöscht, und die neue Sequenz wird simuliert.

Bedienelemente und Anzeige im Hauptfenster:

Play:
Setzt die Simulation nach drücken von 'Pause' wieder fort. Ebenso kann eine Sequenz nach deren Ablauf wiederholt werden.
Pause:
Pausiert die laufende Simulation, die Simulation kann mit 'Play' wieder fortgesetzt werden.
Stop:
Bricht die laufende Sequenz ab und die nächste Sequenz wird gestartet. Falls keine Sequenzen mehr vorhanden sind, stoppt das Programm und das Hauptfenster kann geschlossen werden.
Speed:
Mit diesem Regler kann die Simulationsgeschwindigkeit eingestellt werden.
Status Message:
Zeigt den aktuellen Status an bzw. welche Aktionen als nächstes möglich sind.

Beispielanwendung:

Die Klasse SYDemo enthält eine Beispielanwendung mit zwei Simulationssequenzen.

Since:
2.11.2011
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    drive​(int from, int to)
    Simuliert das Fahren von einer Station zu einer anderen, dabei werden die Stationen durch eine schwarze Linie auf der Karte verbunden.
    void
    drive​(int from, int to, Color color)
    Simuliert das Fahren von einer Station zu einer anderen, dabei werden die Stationen durch eine farbige Linie auf der Karte verbunden.
    getStationPos​(int nr)
    Liefert die Pixelkoordinaten einer bestimmten Station auf der Karte.
    void
    Markiert den Beginn einer Simulationssequenz.
    void
    Markiert das Ende einer Simulationssequenz.
    void
    visitStation​(int nr)
    Simuliert das Besuchen einer Station, dabei wird die Station durch einen schwarzen Kreis auf der Karte gekennzeichnet.
    void
    visitStation​(int nr, Color color)
    Simuliert das Besuchen einer Station, dabei wird die Station durch einen farbigen Kreis auf der Karte gekennzeichnet.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

  • Method Details

    • startSequence

      public void startSequence(String name)
      Markiert den Beginn einer Simulationssequenz. Nach dem Aufruf dieser Methode können Simulationsereignisse mit visit() und drive() hinzugefügt werden.

      Achtung: Der Aufruf von startSequence() ist nicht blockierend, d.h. das Hauptprogramm läuft weiter, während eine Simulationssequenz läuft. Da die Simulation zeitverzögert parallel zum Hauptprogramm läuft, wird sie durch einen separaten Thread durchgeführt.

      Parameters:
      name - Der Name für die Simulationssequenz, wird im Simulationsfenster in der Titelleiste angezeigt, damit der Anwender weiß, welche Sequenz gerade simuliert wird.
    • stopSequence

      public void stopSequence()
      Markiert das Ende einer Simulationssequenz. Danach kann mit startSequence() eine neue Sequenz begonnen werden.

      Achtung: Der Aufruf von stopSequence() ist blockierend, d.h. das aufrufende Programm wird so lange gestoppt, bis der Anwender durch den 'Stop' Knopf die laufende Sequenz abbricht, oder das Simulationsfenster geschlossen wird.

    • drive

      public void drive(int from, int to, Color color)
      Simuliert das Fahren von einer Station zu einer anderen, dabei werden die Stationen durch eine farbige Linie auf der Karte verbunden.
      Parameters:
      from - Die Stationssnummer, ab der losgefahren wird.
      to - Die Stationsnummer der Zielstation.
      color - Die Farbe, in der Verbindungslinie gezeichnet werden soll.
    • drive

      public void drive(int from, int to)
      Simuliert das Fahren von einer Station zu einer anderen, dabei werden die Stationen durch eine schwarze Linie auf der Karte verbunden.
      Parameters:
      from - Die Stationssnummer, ab der losgefahren wird.
      to - Die Stationsnummer der Zielstation.
    • visitStation

      public void visitStation(int nr, Color color)
      Simuliert das Besuchen einer Station, dabei wird die Station durch einen farbigen Kreis auf der Karte gekennzeichnet.
      Parameters:
      nr - Die Nummer der Station, die besucht werden soll.
      color - Die Farbe für den Kreis, mit der die Station markiert werden soll.
    • visitStation

      public void visitStation(int nr)
      Simuliert das Besuchen einer Station, dabei wird die Station durch einen schwarzen Kreis auf der Karte gekennzeichnet.
      Parameters:
      nr - Die Nummer der Station, die besucht werden soll.
    • getStationPos

      public Point getStationPos(int nr)
      Liefert die Pixelkoordinaten einer bestimmten Station auf der Karte.
      Parameters:
      nr - Die Nummer der Station.
      Returns:
      Die Pixelkoordinaten (x,y) der Station.