!Trax審判ソフトウェアで遊んでみる {{ref_image trax_viewer.png}} ::前置き [Trax|http://www.tantrix.jp/trax/trax_rule.htm]はニュージーランド発祥のゲームだそうです. 2種類のコマを使って,二人で線路をのばしていき,先に, * ループを作る * ビクトリーライン(8マスにわたるライン)を作る と勝ちだそうです. 盤面が相対座標で,かつ,サイズの制限がない,という特徴に加え, * 何のコマも打てないマスを作ってはいけない * 必ず決まってしまうコマは自動的に配置される * 自動的に配置されたコマによって何のコマを打てないマスを作ってもいけない というややこしいルールをもっています. この説明の日本語が,うまく書けてない時点で,私も混乱しています. "" 物理的なコマやiOS用のアプリもあるそうですが, http://lut.eee.u-ryukyu.ac.jp/traxjp/tools.htmlにある,琉球大学の長名先生作の コンピュータ同士で対戦するための審判ソフトウェアで遊んでみます. ::準備 http://lut.eee.u-ryukyu.ac.jp/traxjp/tools.html のダウンロードの下の"ダウンロードはこちら"からダウンロード. 今日時点では,trax-150504.zip がダウンロードできました. 展開してコンパイルします.MacOSXで試しました. % unzip -d trax-150504 trax-150504.zip % cd trax-150504 % make ::サンプルの棋譜で走らせてみる testsの下にサンプルのゲーム記録があるので,それを使って実行してみます. % ./trax < tests/longest-148.trx ゲーム記録に従ってコマが配置され勝敗が結着した最終局面が表示されます. MacOSXのデフォルトターミナルでは色付きで表示されました.すばらしいです. ::対戦の雰囲気を味わってみる,準備 審判プログラムには対戦機能がないそうですが, 補助プログラムを使って対戦できるようになるそうです. http://lut.eee.u-ryukyu.ac.jp/traxjp/tools.html の,補助プログラムの下の"ダウンロードはこちら"のファイルをダウンロードします. * two-way-socket-20150209.zip ダウンロードしたら展開してコンパイルします. % unzip two-way-socket-20150209.zip % cd two-way-socket-20150209 % make % cd .. ::対戦の雰囲気を味わってみる(1) 補助プログラムを使うことで,先手/後手の手をそれぞれ別の入力から 与えられるようになります. 入力にはシリアルポートまたはTCPポートが使えるそうです. ここでは,TCPポートを使ってみましょう. 次のようなコマンドで実行できます. % ./two-way-socket-20150209/two-way-socket 10000 10001 | ./trax two-way-socketの第一引数と第二引数が,それぞれ, 先手/後手の入力を受け付けるためのTCPポートの番号です. プログラムを起動すると, White player : TCP port 10000 というメッセージが表示されます. "" {{ref_image trax_server.png}} ::対戦の雰囲気を味わってみる(2) 入力ポートに接続する.新しくターミナルを二つ立ち上げて, 一つ目のターミナル(ターミナルW と 呼ぶ)で % telnet localhost 10000 もう一つのターミナル(ターミナルB と 呼ぶ)で % telnet localhost 10001 とします. 両方のポートでTelnetのセッションが確立すると, それぞれに,接続時に"-W","-B"というメッセージが帰ってきます. "" {{ref_image trax_client_w.png}} 10000番に接続したところ.まだ10001番には接続してない. "" {{ref_image trax_client_b.png}} 10001番に接続したところ. ::対戦の雰囲気を味わってみる(3) 一人二役で,記録データから入力して遊んでみます. たとえば,先の tests/longest-148.trx から 一手ずつ入力してみます. まず,ターミナルWで, @0/ と入力してみます.入力最後は改行です. 入力すると,サーバーを起動したターミナルに打った手が表示されます. |@ A | 0| | 1| / | だそうです.ここで/は赤色. 続けて,今度はターミナルBで, @1/ と入力すると,後手の手が入力されます. |@ A B | 0| | 1| / / | だそうです.ここで,1Aの/は白,1Bの/は赤です. ::Webブラウザで対戦の様子を眺める Webで動作を眺めることもできるそうなので試してみます. ゲーム途中であれば,審判プログラムをC-cで無理矢理終了させて, 今度は↓のようにして起動します. % ./two-way-socket-20150209/two-way-socket 10000 10001 | ./trax | ./trax-httpd ターミナルWとターミナルBで,それぞれ telnet localhost 10000 telnet localhost 100001 として入力ポートに接続します. 手を入力する前に,ブラウザで, http://localhost:11000 にアクセスします. Trax Debug... のようなページが表示されます.この状態で,ターミナルWから @0/ と入力すると,このページトップのスクリンーショットのように, Webブラウザで動作を確認することができます.グラフィカルでとても楽しいです. ::これから(が重要!!) というわけで審判ソフトウェアの使い方が分かったので, (要はサーバーを起動したらTelnetでコマンドに相当する文字列を送ればいい) 今度は,適当なスクリプトででもプレーヤを実装してみたいと思います.