@kobalab/majiang-analog
v1.2.0
Published
電脳麻将牌譜解析ツール
Downloads
9
Readme
majiang-analog
電脳麻将牌譜解析ツール
電脳麻将形式の牌譜を解析する基底クラスを提供します。本クラスのサブクラスを作成し、解析のためのプログラムを書くことができます。
天鳳の牌譜も tenhou-log で電脳麻将形式に変換し、解析することが可能です。
インストール
$ npm i @kobalab/majiang-analog
使用例
majiang-analog の提供するクラスのサブクラスを作成し、メソッドをオーバーライドして解析処理を記述します。
class AnaLog extends require('@kobalab/majiang-analog') {
/* 和了時に呼び出されるメソッドをオーバーライドして解析処理を書く */
hule(hule) {
if (hule.hupai.find(h=> h.name == '大三元')) { // 大三元で和了した場合
console.log(this.idx(hule.l)); // ログにどの牌譜か出力する
}
}
}
AnaLog.analyze(); // 解析を実行する
examples にも解析プログラムの例がありますので、参考にしてください。
メソッド
牌譜の各段階で以下のメソッドが呼び出されます。メソッドのパラメータはそれぞれに対応する 牌譜 の情報です。 this.board には 卓情報 が設定されます。
| 契機 | メソッド | |:-------------|:--------------------------------------------------------------------------------------------------------------------| | 解析開始 | init() | | 対戦開始 | kaiju(paipu) | | 配牌 | qipai(qipai) | | 自摸 | zimo(zimo) | | 打牌 | dapai(dapai) | | 副露 | fulou(fulou) | | 暗槓・加槓 | gang(gang) | | 槓自摸 | gangzimo(gangzimo) | | 開槓 | kaigang(kaigang) | | 和了 | hule(hule) | | 流局 | pingju(pingju) | | 和了・流局後 | last(log) |
例えば、配牌時には qipai(qipai) が呼び出され、qipai.shoupai には各プレーヤーの配牌が設定されます。
起動方法
static analyze(filename, argv) を呼び出すと解析を開始します。 filename は解析対象のファイル名、もしくは牌譜のあるディレクトリ名、あるいはその両方を含む配列です。省略時にはカレントディレクトリが指定されたと解釈します。 argv には以下の動作を変更するオプションが指定できます。
recursive
指定した場合、ディレクトリを再帰的に探索して牌譜を探します。
times
指定した場合、これを超える数のログを解析しません。
silent
解析進捗状況の表示を停止します。
viewpoint
指定された値を this.viewpoint に設定します。特定の席順(仮東など)の対局者のみ集計したい場合に利用できます。 this.viewpoint が指定されているとき、メソッド watch(l) は手番 l がそれと一致しなければ偽を返します。
player
指定された名前と一致する対局者の席順を this.viewpoint に設定します。
その他の機能
const { base, getlogs } = require("@kobalab/majiang-analog");
base
簡易解析用の基底クラス。 this.board に 卓情報 を設定しませんが、高速に動作します。
getlogs
- filename - string
- recursive - boolean
- 返り値 - object
filename で指定されたファイルもしくはディレクトリ、あるいはそれらを含む配列から 牌譜 を1つずつ取り出すイテレータを返します。 recursive に真を設定すると、filename 配下を再帰的に探索します。