LoginSignup
3
1

More than 5 years have passed since last update.

gnubg python scripting

Posted at

バックギャモンの解析ソフト 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 を勉強しているところなので、趣味と実益を兼ねていて、こんなに楽しいことはないですね!!

参考にしたページ
* http://osdir.com/ml/bug-gnubg-gnu/2013-12/msg00013.html

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1