プログラム
プログラムは、sample/hanoi ディレクトリの下にあります。
このプログラムは、2つのファイルから構成されます。
コンパイル
このプログラムは、sample/hanoi のディレクトリにあります。
このプログラムを利用する前に、トップディレクトリで make を行い、 klitcld をコンパイルしておいてください。
このプログラムをコンパイルするには、このディレクトリで make すればOKです。
コンパイルが終了すると、hanoi という名前の実行ファイルが出来ていると思います。
実行
まず、klitcld を実行します。これは、Tcl/Tk を実行するためのプログラムです。
% ./kltcld &のようにして、バッググラウンドで実行させるとよいでしょう。
% ./hanoiとすると、プログラムが動作します。
のように表示され、アニメーション表示されます。
左の棒から中央の棒へ移動します。
終了したい場合は、「Quit」ボタンを押してください。
プログラムの説明
まず、klitcl:tcl_eval/4 を用いて、"set num 6"コマンドを実行し、Tcl/Tk 側に大きさを指定しています。
その後に、klitcl:tcl_evalfile/4 を利用して hanoi.tcl ファイルを読み込み、実行しています。これにより、GUI の表示が行われます。
そして、hanoi/3 によりハノイの塔が解かれます。この中では、move/6 が再帰的に呼び出されています。
move/6 では、hanoi.tcl に記述してある"diskmove"コマンドを実行し、解のアニメーション表示を行っています。
hanoi.tcl で用いられている変数は、以下のとおりです。
なお、棒の番号は、左から1,2,3となっています。