Tcl/Tk.
Was ist Tcl/Tk?
Tcl [sprich "tickle"], die "Tool Command Language"
ist eine einfache Scriptsprache, die aus einer Handvoll paramerisierbarer Befehle
besteht.
Tcl/Tk ist eine Erweiterung um einen Toolkit (Tk) für X-Windows.
Mit Tcl/Tk können sehr einfach Motif-ähnliche graphische Oberflächen,
bestehend aus Knöpfen, Schaltern, Listboxen Eingabefelder usw.,
erstellt werden.
Tcl/Tk ist frei erhältlich und plattformunabhängig.
Hallo Welt!
Tcl/Tk Scripte definieren die anzuzeigenden graphischen Komponenten
mittels in die Sprache Tcl eingebetteter Tk-Befehle.
Ein Manual, in dem alle Tcl- und Tk-Befehle ausführlich beschrieben sind,
gibt es auf der Tcl/Tk-Homepage (s.u.).
So könnte ein "Hello-World"-Programm in Tcl/Tk aussehen:
#!/usr/bin/wish
wm title . Hello
label .la -text "Hello World!"
button .bu -text Hello -command exit
pack .la .bu
Tcl/Tk-Scripte können unter Unix/Linux, Windows
und MacOS ausgeführt werden.
Voraussetzung ist, daß das Tcl/Tk Paket
auf dem jeweiligen System installiert ist.
Bei Unix/Linux-Systemen ist das in der Regel bereits der Fall
(Download s.u.).
Bei Unix-Systemen muß das Script ausführbar sein
(chmod 755)
oder direkt vom Interpreter (wish) aufgerufen werden.
Der Pfad in der ersten Zeile nach dem '#!' gibt das Programm an,
welches das Script ausführen soll,
das wird normalerweise das Programm 'wish' sein.
Windows erkennt Tcl/Tk-Scripte an der Dateiendung '.tcl',
sobald das Tcl/Tk Paket installiert ist.
Programmbeispiele:
Hier einige meiner z.T. noch etwas unfertigen Tcl-Scripte.
Vielleicht sind sie dem einen oder anderen als Anregungen nützlich.
Ich habe immer die Tcl/Tk-Version 8.3 benutzt,
einige Sachen funktionieren nicht mit 8.4.
Puzzle
Dieses Puzzle habe ich in der Tk "Widget Tour" gefunden und ein wenig verbessert.
Ich habe z.B. einen Mechanismus hinzugefügt, der das Puzzle zum Anfang durchmischt.
Außerdem habe ich es mit Farben versehen, denn so ungefähr kenne ich diese
Plastik-Puzzle noch von früher.
Mich hat dieses Spiel (früher wie heute) schon oft zur Verzweiflung gebracht.
Die ersten drei Zeilen gehen ganz schnell, aber dann ist es eine Frage des Glücks,
ob die Reihenfolge der 3 letzten drei Knöpfe stimmt.
Leider habe ich bis jetzt noch keinen Algorithmus gefunden, nach dem man das Puzzle
vollständig lösen kann. Wenn jemand einen solchen Algorithmus kennt oder findet,
wäre ich sehr gespannt, davon zu hören.
Vielleicht ist es ja ganz einfach.
Tcl/Tk-Code
Nachtrag:
Tatsächlich ist es ganz einfach, aber von selbst wäre ich wohl nie drauf gekommen.
Wie mir Herr Fichte, ein schlauer Ingenieur aus Leipzig erklärte, ergibt nicht jede
randomisierte Anordnung ein lösbares Puzzle.
Die Hälfte aller Anordnungen sind lösbar, die andere Hälfte nicht.
Herr Fichte beschreibt das als zwei Welten, zwischen denen man mit jeder Vertauschung
zweier Steine hin- und herspringt.
Daran lag es also, daß es manchmal zum Schluß einfach nicht mehr paßte.
In einem interessanten Briefwechsel haben wir auch eine schöne Methode gefunden,
zu entscheiden, ob ein Spiel lösbar ist oder nicht und so schließlich eine neue Version
entwickelt, die immer lösbar ist.
Neuer Tcl/Tk-Code
Schachuhr
Die Bedienung der Uhr funktioniert über die beiden Ctrl-Tasten.
Mit der Leertaste kann die Uhr angehalten, und mit Escape zurückgestellt werden.
Für Blitzschach können die Zeiger auch mit der F5-Taste 5 Minuten zurückgestellt werden.
Tcl/Tk-Code
Die Türme von Hanoi
Ein Spielbrett mit bis zu 10 Scheiben für das Spiel "Türme von Hanoi".
Optionen via rechte Maustaste.
Tcl/Tk-Code
Die Legende erzählt von Mönchen, deren Aufgabe es ist,
64 verschieden große goldene Scheiben, die auf einem Pfahl stecken,
unter Zuhilfenahme eines zweiten Pfahles auf einen dritten Pfahl zu befördern.
Sie dürfen aber immer nur eine Scheibe bewegen, und niemals darf eine
größere auf einer kleineren Scheibe liegen.
Es wird gesagt daß, wenn sie mit dieser Aufgabe fertig sind,
die Zeit zu Ende ist.
Man kann leicht errechnen: wenn diese Mönche es geschickt anstellen,
kommen sie mit 18.446.744.073.709.551.615 Zügen aus.
(Bei sieben Scheiben braucht man nur 127 Züge).
Mehr Hintergrund zum Hanoi-Puzzle gibt es z.B.
hier.
Sudoku
Diese Tcl-Version des beliebten
Sudoku-Spiels
stammt von Herrn Fichte, meinem unermüdlichen Mitstreiter,
der schon das Rätsel um das obige Puzzle gelöst hat.
Danke!
Tcl/Tk-Code (Update 25.2.2006)
Tcl/Tk-Code (abgespeckte Rätsel: 6x6, 4x4)
Bücher:
-
John K. Ousterhout - Tcl und Tk, Addison-Wesley
Eine kompletter Überblick über Tcl und Tk vom Erfinder himself.
Enthält eine Beschreibung der C-Schnittstelle, die es ermöglicht,
neue Funktionalität zu Tcl/Tk hinzuzufügen.
Das Buch gilt als Standardwerk, ist aber stellenweise etwas trocken und theoretisch.
Zum Einstieg würde ich eher das folgende Buch empfehlen:
-
Mark Harrison, Michael McLennan - Effektiv Tcl/Tk programmieren, Addison-Wesley
Einführung in die Tcl/Tk-Programmierung mit vielen praktischen Beispielen
und Tricks.
Interessante Themen wie Netzwerkprogrammierung und Platformunabhängigkeit
werden ebenfalls besprochen.
Grundlage ist Tcl/Tk Version 8.0.
-
Paul Raines - Tcl/Tk kurz & gut, O' Reilly (Taschenbuch)
Eine Kurzübersicht über die wichtigsten Tcl/Tk-Befehle
in O'Reilly's handlichem Kleinformat.
Das Büchlein eignet sich gut zum schnellen Nachschlagen.
Die umfangreichere (und schnellere) HTML-Dokumentation zu Tcl/Tk macht es
allerdings etwas entbehrlich.
-
Brent B. Welch - Praktisches Programmieren in Tcl und Tk, Prentice Hall
Dieses Buch kenne ich nicht. In einer Leserwertung bei Amazon ist zu lesen,
daß es inhaltlich gut, aber z.T sinnentstellend übersetzt ist.
Zugrunde gelegt wird die (nicht mehr ganz taufrische) Version Tcl 7.4 sowie Tk 4.0.
Links:
|
|