バックギャモンの解析ソフト GNU Backgammon には、Pythonスクリプトを実行する機能がある。そのこと自体は前から知っていたが、Pythonを知らなかったので手が出せなかった。最近、仕事でPythonの使い方を少し覚えたので何かやってみようじゃありませんか!
準備
Ubuntu 14.04 LTSを使いました。gnubgのバージョンが 1.02 が入っていたのですが、このバージョンでは後述する gnubg.match()
を呼んでも空の dict しか返ってきませんでした。なので、1.05 をソースからビルドしました。
$ gnubg
GNU Backgammon 1.05.002 Jul 2 2016
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 by Gary Wong.
Copyright (C) 2016 by Gary Wong and the AUTHORS; for details type `show version'.
This program comes with ABSOLUTELY NO WARRANTY; for details type `show warranty'.
This is free software, and you are welcome to redistribute it under certain conditions; type `show copying' for details.
(ゲーム無し)
Pythonにアクセスする
import gnubg
このように始めたいところですが出来ません。gnubgをPythonで操作する方法は、ちょっと変わっています。
gnubgを起動した状態で、コマンドプロンプトに >
を入力します。すると、IPython が使えるようになります。
(ゲーム無し) >
/usr/local/lib/python2.7/dist-packages/IPython/config.py:13: ShimWarning: The `IPython.config` package has been deprecated. You should import from traitlets.config instead.
"You should import from traitlets.config instead.", ShimWarning)
IPython 4.2.1, Python 2.7.6 (default, Jun 22 2015, 18:01:27)
[GCC 4.8.2]
In <1> >
私の環境では何かいろいろ出ましたが、とりあえず気にしないことにします。
以下のコマンドでヘルプが参照できます。
In <1> > help(gnubg)
マッチのインポート
PlayOKのマッチをインポートしてみましょう。
In <2> > gnubg.command('import mat 87027157.txt')
GNU Backgammon Position ID: AAAAunEAAAAAAA
Match ID : 8AqgAFAAAAAE
+13-14-15-16-17-18------19-20-21-22-23-24-+ O: mkisono
| | | | OOO 5 ポイント
| | | | OOO
| | | | OOO
| | | | OOO
| | | | OOO
v| |BAR| | 5 ポイントマッチ (キューブ: 1)
| | | | X
| | | | X
| | | X X | X
| | | X X X | X
| | | X X X X | XX 0 ポイント
+12-11-10--9--8--7-------6--5--4--3--2--1-+ X: cwm7296g
マッチの解析
In <3> > gnubg.command('analyse match')
解析結果の表示
In <4> > gnubg.command('show statistics match')
プレイヤー mkisono cwm7296g
チェッカープレイ統計
ムーブ総計 49 47
非強制ムーブ 44 36
マークしていないムーブ 45 34
疑わしいムーブ 1 5
悪いムーブ 2 2
非常に悪いムーブ 1 6
Error total EMG (MWC) -0.555 ( -8.234%) -2.515 (-34.975%)
Error rate mEMG (MWC) -12.6 ( -0.187%) -69.9 ( -0.972%)
チェッカープレイのレーティング Intermediate Awful!
運統計
非常に幸運なロール 0 1
幸運なロール 3 4
普通のロール 46 38
不運なロール 0 3
非常に不運なロール 0 1
Luck total EMG (MWC) +0.571 ( +9.871%) -0.972 (-12.880%)
Luck rate mEMG (MWC) +11.7 ( +0.201%) -20.7 ( -0.274%)
運の評価 None None
キューブ統計
キューブアクションの総計 2 30
ぎりぎりまたは現実のキューブアクション 2 1
ダブル 1 0
テイク 0 1
パス 0 0
Missed doubles below CP (EMG (MWC)) 0 0
Missed doubles above CP (EMG (MWC)) 0 0
Wrong doubles below DP (EMG (MWC)) 1 (-0.042 ( -0.323%)) 0
Wrong doubles above TG (EMG (MWC)) 0 0
間違ったテイク (EMG (MWC)) 0 0
間違ったパス (EMG (MWC)) 0 0
Error total EMG (MWC) -0.042 ( -0.323%) -0.000 ( -0.000%)
Error rate mEMG (MWC) -20.9 ( -0.162%) -0.0 ( -0.000%)
キューブアクション評価 Casual player Supernatural
総合統計
Error total EMG (MWC) -0.597 ( -8.557%) -2.515 (-34.975%)
Error rate mEMG (MWC) -13.0 ( -0.186%) -68.0 ( -0.945%)
Snowie error rate -6.2 ( +0.000%) -26.2 ( +0.000%)
総合評価 Intermediate Awful!
実際の結果 +50.00% -50.00%
Luck adjusted result +27.25% -27.25%
Luck based FIBS rating diff. +474.84
Error based abs. FIBS rating 1858.7 1078.7
チェッカープレイのエラーによるレーティングの減点 175.4 971.3
キューブエラーによるレーティングの減点 15.9 0.0
やけにエラーの多いマッチでした・・
マッチのデータを取得する
gnubg.match()
コマンドを入力すると、マッチのデータが返ってきます。このデータを使って何しましょうかねぇ。
まとめ
gnubg を Python でいじって遊ぶ準備が出来ました。ちょうど Python を勉強しているところなので、趣味と実益を兼ねていて、こんなに楽しいことはないですね!!
参考にしたページ