![]() |
BeschreibungAufgabe des AppletAufgabe des Applets ist das Lösen des Springer-Problems. Hierbei soll ein Springer, der jeweils ziehen kann, wie ein normaler Schachspringer, jedes Feld nur einmal besuchen. Um alle Lösungen für dieses Problem zu finden, wird die Backtracking-Strategie angewandt. Das kleinste mögliche Schachbrett, auf dem erste Lösungen vorhanden sind, ist 5x5 Felder groß. Oberfläche des AppletAusgabebereich![]() Der Ausgabebereich kann jeweils 2 unterschiedliche Anzeigen darstellen:
Durch Klicken auf Felder des Bretts kann das Startfeld festgelegt werden, von dem aus die Lösungen gesucht werden sollen. Einstellungen![]() Im Einstellungsbereich kann mit dem Slider die Größe des Bretts festgelegt werden. Es können Feldgrößen von 5x5 bis 16x16 ausgewählt werden. Unter dem PopUp-Menü "Theme" kann das Aussehen des Ausgabebereichs gewählt werden. Fortschrittsanzeige![]() Unter "Search Deepth" wird während der Berechnung der Lösungen angezeigt, wie weit die Berechnung schon zu einer Lösung vorgedrungen ist. Stößt der Fortschrittsbalken am rechten Rand an, so wurde eine Lösung gefunden, das in die Ergebnisliste eingetragen wird. Der Fortschrittsbalken "Search Progress" zeigt an, wieviele der möglichen Lösungswege bereits getestet wurden. Ablaufsteuerung![]() Hier befindet sich ein "Start"-Button, mit dem die Berechnung gestartet wird. Wie bereits weiter oben erwähnt, erfolgt die Berechnung in einem eigenen Thread, um möglichst schnell Ergebnisse zu finden und nicht sowieso spärlich vorhandene Rechenzeit unnötig mit dem Zeichnen jedes einzelnen Schritte der Berechnung zu verschwenden. Nach dem Klick auf den "Start"-Button wird dessen Beschriftung geändert und daraus ein "Stop"-Button, mit dem die Berechnung abgebrochen werden kann. Soweit das Board die Animation von Ergebnissen unterstützt, befinden sich weitere Bedienelemente im Kontrollbereich: Durch Klicken auf die Checkbox "Animation Panel" wird ene Springer-Figur in das Board eingeblendet, die auf dem ersten Feld der gewählten Lösung steht. Durch Klicken auf die Pfeil-Tasten kann der Springer je einen Schritt vorwärts bzw. rückwärts bewegt werden. Durch Auswählen der Checkbox "Autostepping" und anschließendes Klicken auf die Vorwärts- bzw. Rückwärts-Buttons wird der Springer von Feld zu Feld bewegt. Mit dem Slider "Speed" kann dabei die Geschwindigkeit der Animation beeinflußt werden. Ergebnisanzeige![]() In der Liste werden die Ergebnisse der Berechnung angezeigt. Durch Klicken auf eine Ergebnis-Zeile im Listfeld wird dieses im Ausgabebereich angezeigt. Dabei wird eine Notation verwendet, die der beim normalen Schach gebräuchlichen entspricht. Die Spalten werden mit Buchstaben, die Zeilen mit Zahlen bezeichnet. Das Feld links oben wird hier als A1 bezeichnet. Die Ergebnisliste wird nur gelöscht, wenn ein neues Startfeld durch Klicken auf ein Feld im Ausgabebereich oder wenn der "Start"-Button gedrückt wird. Es ist also auch möglich, die Ergebnisse in verschiedenen Boards (animiert oder nicht) zu betrachten. InstallationshinweiseBei der Entwicklung des Applets wurde auf die modernen Swing-Klassen des JDK 1.2 und neuer zurückgegriffen. Leider unterstützen die verbreitetsten Browser Netscape Navigator und Microsoft Internet Explorer beide nur Java Versionen 1.1.x. Um die Swing-Klassen dennoch in diesen Browsern verwenden zu können, wurden diese in das JAR-File mit aufgenommen. Leider wird dadurch das JAR-File recht groß. Um die besten Ergebnisse (vor allem in Hinsicht auf die Performance) zu erreichen empfiehlt es sich, das Applet mit dem appletviewer aufzurufen. Sonstiges (Backtracking)Beim Backtracking wird nach der "Trial-And-Error-Methode" jeder mögliche Lösungsweg getestet. Das heißt, es wird solange probiert, bis kein weiterer Schritt mehr möglich ist. Dann wird überprüft, ob dies eine Lösung ist. Wenn ja, wird diese Lösung ausgegeben. Ansonsten wird einen Schritt zurückgegangen, der gerade gegangene Weg markiert und der nächste Weg getestet. Dieser Algorithmus ist in diesem Applet implementiert und die Lösungen werden in einer Liste unten ausgegeben. |