-
Notifications
You must be signed in to change notification settings - Fork 15
Majiang.Game
局進行を実現するクラス
インスタンス生成後、Majiang.Game#kaiju の呼び出しで対局を開始する。 その後は対局者からの応答により非同期に Majiang.Game#next が呼ばれることで局が進行する。 対局終了時にはインスタンス生成時に指定したコールバック関数を呼んで処理が終了する。
クラスメソッドで進行の妥当性を判断するための関数を提供する。 これらのメソッドは Majiang.Game 自身が使用するだけでなく、Majiang.Player が使用することも想定している。
- players - Majiang.Player の配列
-
callback - function
- paipu - 牌譜
- rule - ルール
- title - string
players で指定された4名を対局者とし、rule で指定されたルールにしたがい対局を行う。
対局終了時に callback で指定した関数が呼ばれる(対局の牌譜が引数で渡される)。
title で牌譜に残すタイトルを指定できる。
rule を省略した場合は、Majiang.rule()
の呼び出しで得られるルールの初期値が採用される。
- rule - ルール
- shoupai - Majiang.Shoupai
- 返り値 - 牌 の配列
Majiang.Shoupai#get_dapai を呼び出し、rule にしたがって shoupai から打牌可能な牌の一覧を返す。
- rule - ルール
- shoupai - Majiang.Shoupai
- p - 牌
- paishu - number
- 返り値 - 面子 の配列
Majiang.Shoupai#get_chi_mianzi を呼び出し、rule にしたがって shoupai から p でチー可能な面子の一覧を返す。 paishu には現在の残り牌数を指定すること。
- rule - ルール
- shoupai - Majiang.Shoupai
- p - 牌
- paishu - number
- 返り値 - 面子 の配列
Majiang.Shoupai#get_peng_mianzi を呼び出し、rule にしたがって shoupai から p でポン可能な面子の一覧を返す。 paishu には現在の残り牌数を指定すること。
- rule - ルール
- shoupai - Majiang.Shoupai
- p - 牌
- paishu - number
- n_gang - number
- 返り値 - 面子 の配列
Majiang.Shoupai#get_gang_mianzi を呼び出し、rule にしたがって shoupai からカン可能な面子の一覧を返す。 p が指定された場合は大明槓、null の場合は暗槓と加槓が対象になる。 paishu には現在の残り牌数、n_gang にはその局に行われた槓の数を指定すること。
- rule - ルール
- shoupai - Majiang.Shoupai
- p - 牌
- paishu - number
- defen - number
- 返り値 - 牌 の配列 or boolean
rule にしたがって shoupai からリーチ可能か判定する。 p が null のときはリーチ可能な打牌一覧を返す。 p が 牌 のときは p を打牌してリーチ可能なら true を返す。 paishu には現在の残り牌数、defen には現在の持ち点を指定すること。
- rule - ルール
- shoupai - Majiang.Shoupai
- p - 牌
- zhuangfeng - number
- menfeng - number
- hupai - boolean
- neng_rong - boolean
- 返り値 - boolean
rule にしたがって shoupai で和了可能か判定する。
p が null のときはツモ和了可能なら true を返す。
p が 牌 のときは p でロン和了可能なら true を返す。
zhuangfeng には場風(0
: 東、1
: 南、2
: 西、3
: 北)、menfeng には自風、状況役があるときは hupai に true、フリテンのときは neng_rong に false を指定すること。
- rule - ルール
- shoupai - Majiang.Shoupai
- diyizimo - boolean
- 返り値 - boolean
rule にしたがって shoupai で九種九牌流局可能か判定する。 第一ツモ順の場合は diyizimo に true を指定すること。
- rule - ルール
- shoupai - Majiang.Shoupai
- paishu - number
- 返り値 - boolean
rule にしたがって shoupai が「ノーテン宣言」可能か判定する。 paishu には現在の残り牌数を指定すること。
インスタンス生成時に指定された Majiang.Player の配列。
- paipu - 牌譜
インスタンス生成時に指定された対局終了時に呼び出す関数。
インスタンス生成時に指定された ルール。
卓情報。
卓情報 を描画するクラス。 Majiang.Game からは適切なタイミングでメソッドを呼び出して描画のきっかけを与える。
牌譜。
Majiang.Game#call_players を呼び出した際の type を保存する。
対局者からの応答を格納する配列。 Majiang.Game#call_players 呼び出し時に配列を生成する。
最終局(オーラス)の局数。東風戦の場合、初期値は 3
。東南戦なら 7
。
延長戦により最終局が移動する場合はこの値を変更する。
第一ツモ巡の間は true。
四風連打の可能性がある間は true。
最後に打牌した 牌。次の打牌で上書きする。
現在処理中のカンの 面子。開槓すると null に戻す。
各対局者(その局の東家からの順)のリーチ状態を示す配列。
0
: リーチなし、1
: 通常のリーチ、2
: ダブルリーチ。
各対局者が一発可能かを示す配列。
添え字は手番(0
: 東、1
: 南、2
: 西、3
: 北)。
各対局者が行ったカンの数。
添え字は手番(0
: 東、1
: 南、2
: 西、3
: 北)。
各対局者のフリテン状態。
添え字は手番(0
: 東、1
: 南、2
: 西、3
: 北)。
ロン和了可能なら true。
和了応答した対局者の手番(0
: 東、1
: 南、2
: 西、3
: 北)の配列。
南家、西家のダブロンの時は [ 1, 2 ]
となる。
処理中の和了が槍槓のとき qiangang
、嶺上開花のとき lingshang
、それ以外なら null。
途中流局の処理中のとき true。
連荘の処理中のとき true。
現在処理中の局開始時の積み棒の数。
現在処理中の和了、あるいは流局で移動する点数の配列。
添え字は手番(0
: 東、1
: 南、2
: 西、3
: 北)。
true の場合、同期モードとなり、setTimeout()
による非同期呼び出しは行わない。
関数が設定されている場合、Majiang.Game#next 呼び出しの際にその関数を呼び出して処理を停止する。
局の進行速度。0~5 で指定する。初期値は 3。 指定された速度 × 200(ms) で Majiang.Game#next を呼び出すことで局の進行速度を調整する。
ダイアログへの応答速度(ms)。初期値は 0。 指定された時間後に Majiang.Game#next を呼び出す。
非同期で Majiang.Game#next を呼び出すタイマーのID。
値が設定されていれば非同期呼出し待ちであり、clearTimeout()
を呼び出せば非同期呼出しをキャンセルできる。
Majiang.Game#jieju から呼ぶ出される関数。 Majiang.Game#set-handler で設定する。
- qijia - number
非同期モードで対局を開始する。
qijia で起家を指定することもできる(0
〜3
)。
qijia を指定しない場合はランダムに起家を決定する。
- id - number
- replay - メッセージ
対局者が応答の際に呼び出す。
id は対局者の席順(0
〜3
)、reply は応答内容。
- callback = ()=>{} - function
非同期モードの対局を停止する。 停止の際に callback を呼び出す。
非同期モードの対局を再開する。
デバッグ用。同期モードで対局を開始する。 対局終了まで一切の非同期呼び出しは行わず、無停止で対局を完了する。
- 返り値 - 卓情報
インスタンス変数 _model を返す。
- view - object
インスタンス変数 _view に view を設定する。
- 返り値 - number
インスタンス変数 _speed を返す。
- speed - number
インスタンス変数 _speed に speed を設定する。
- wait - number
インスタンス変数 _wait に wait を設定する。
- callback - function
callback を Majiang.Game#jieju から呼び出すように設定する。
対局者からの応答を読み出し、対局の次のステップに進む。
- type - string
- msg - メッセージ
対局者に msg を通知する。対局者からの応答はない。 type は メッセージ の種別を示す。
- type - string
- msg - メッセージ
- timeout - number
対局者に msg を通知する。 対局者からの応答を待って、Majiang.Game#next が非同期に呼び出される。 type は メッセージ の種別を示す。 timeout で Majiang.Game#next 呼び出しまでの待ち時間(ms)を指定し、局の進行速度を調整することもできる。 timeout の指定がない場合は、インスタンス変数 _speed に応じて待ち時間を決定する。
- shan - Majiang.Shan
配牌の局進行を行う。
ツモの局進行を行う。
- dapai - 牌
dapai で指定された牌を打牌する局進行を行う。
- fulou - 面子
fulou で指定された面子を副露する局進行を行う。 大明槓は副露に含める。
- gang - 面子
gang で指定された面子で加槓あるいは暗槓する局進行を行う。
リンシャン牌ツモの局進行を行う。
開槓の局進行を行う。
和了の局進行を行う。
- name - string
- shoupai - 牌姿 の配列
流局の局進行を行う。 name が指定された場合は途中流局とする。 shoupai には流局時に公開した 牌姿 を指定する。
対局終了の判断を行う。
対局終了の処理を行う。
配牌の局進行メソッドを呼び出す。
ツモの局進行メソッドを呼び出す。
ツモ応答の妥当性を確認し、次の局進行メソッドを呼び出す。
打牌応答の妥当性を確認し、次の局進行メソッドを呼び出す。
副露応答の妥当性を確認し、次の局進行メソッドを呼び出す。
槓応答の妥当性を確認し、次の局進行メソッドを呼び出す。
和了応答の妥当性を確認し、次の局進行メソッドを呼び出す。
流局応答の妥当性を確認し、次の局進行メソッドを呼び出す。
- 返り値 - 牌 の配列
Majiang.Game#static-get_dapai を呼び出し、インスタンス変数 _rule にしたがって現在の手番の手牌から打牌可能な牌の一覧を返す。
- l - number
- 返り値 - 面子 の配列
Majiang.Game#static-get_chi_mianzi を呼び出し、インスタンス変数 _rule にしたがって手番 l が現在の打牌でチー可能な面子の一覧を返す。
- l - number
- 返り値 - 面子 の配列
Majiang.Game#static-get_peng_mianzi を呼び出し、インスタンス変数 _rule にしたがって手番 l が現在の打牌でポン可能な面子の一覧を返す。
- l - number
- 返り値 - 面子 の配列
Majiang.Game#static-get_gang_mianzi を呼び出し、インスタンス変数 _rule にしたがってカン可能な面子の一覧を返す。l が指定された場合は大明槓、null の場合は暗槓と加槓が対象になる。
Majiang.Game#static-allow_lizhi を呼び出し、インスタンス変数 _rule にしたがってリーチ可能か判定する。 p が null のときはリーチ可能な打牌一覧を返す。 p が 牌 のときは p を打牌してリーチ可能なら true を返す。
- l - number
- 返り値 - boolean
Majiang.Game#static-allow_hule を呼び出し、インスタンス変数 _rule にしたがって和了可能か判定する。 l が null のときは現在の手番がツモ和了可能なら true を返す。 l が指定された場合は手番 l がロン和了可能なら true を返す。
- 返り値 - boolean
Majiang.Game#static-allow_pingju を呼び出し、インスタンス変数 _rule にしたがって現在の手番が九種九牌流局可能か判定する。
- callback - function
- timeout - number
timeout で指定した時間(ms)休止した後に callback を呼び出す。 ゲームに「タメ」を作るためにチー/ポンなどの発声のタイミングで呼び出される。 timeout の指定がない場合は、インスタンス変数 _speed に応じて待ち時間を決定するが、最低でも 500ms は待ち合わせる。
- name - string
- l - number
手番 l に name を発声させる。
- paipu - 牌譜 の摸打情報
インスタンス変数 _paipu の適切な位置に摸打情報を追加する。
- l - number
- 返り値 - メッセージ
手番 l からの応答を取得する。