Skip to content

Majiang.Player

Satoshi Kobayashi edited this page Jan 31, 2024 · 9 revisions

対局者を実現する基底クラス

唯一のメソッド Majiang.Player#action の非同期呼び出しで受信した メッセージ#通知メッセージ に対して行動を決定し、メッセージ#応答メッセージ を応答する。

本クラスは抽象クラスであり、Majiang.Player#action から各メッセージに対応するメソッドを呼び出すが、そのメソッドは 卓情報 を更新するのみの実装である。卓情報から具体的な行動を決定し、応答を返す処理はサブクラスで実装する必要がある。

クラスメソッド

constructor()

_model に空の卓情報をもつインスタンスを生成する。

インスタンスメソッド

action()

msg に対応するメソッドを呼び出す。

get model()

インスタンス変数 _model を返す。

set view()

  • view - object

インスタンス変数 _viewview を設定する。

インスタンス変数

_id

メッセージ#開局 で通知された自身の席順(0: 仮東、1: 仮南、2: 仮西、3: 仮北)。

_callback

Majiang.Player#action 呼び出し時に指定された応答送信用関数。

_rule

メッセージ#開局 で通知された対局の ルール

_model

Majiang.Board で設定する 卓情報

_menfeng

現在の局の自風。(0: 東、1: 南、2: 西、3: 北)

_diyizimo

第一ツモ巡の間は true。

_n_gang

現在の局で全ての対局者が行ったカンの総数。

_neng_rong

自身のフリテン状態。ロン和了可能なら true。

_paipu

メッセージ#終局 で伝えられた対戦結果の 牌譜

_view

卓情報 を描画するクラス。 Majiang.Player からは適切なタイミングでメソッドを呼び出して描画のきっかけを与える。

内部メソッド

kaiju()

kaiju から 卓情報 を初期化し、Majiang.Player#action_kaiju を呼び出し応答を返す。

qipai()

qipai から 卓情報 を設定し、Majiang.Player#action_qipai を呼び出し応答を返す。

zimo()

zimo から 卓情報 を設定し、Majiang.Player#action_zimo を呼び出し応答を返す。 gangzimo が真の場合は槓自摸を表す。

dapai()

dapai から 卓情報 を設定し、Majiang.Player#action_dapai を呼び出し応答を返す。

fulou()

fulou から 卓情報 を設定し、Majiang.Player#action_fulou を呼び出し応答を返す。

gang()

gang から 卓情報 を設定し、Majiang.Player#action_gang を呼び出し応答を返す。

kaigang()

kaigang から 卓情報 を設定する。

hule()

hule から 卓情報 を設定し、Majiang.Player#action_hule を呼び出し応答を返す。

pingju()

pingju から 卓情報 を設定し、Majiang.Player#action_pingju を呼び出し応答を返す。

jieju()

Majiang.Player#action_jieju を呼び出し応答を返す。

get shoupai()

自身の手牌を返す。

get he()

自身の捨て牌を返す。

get shan()

牌山を返す。

get hulepai()

  • 返り値 - の配列

自身の手牌がテンパイしている場合、和了牌の一覧を返す。 テンパイしていない場合は空の配列を返す。

get_dapai()

ルール卓情報 を使用して Majiang.Game#static-get_dapai を呼び出し、shoupai が打牌可能な牌の一覧を返す。

get_chi_mianzi()

ルール卓情報 を使用して Majiang.Game#static-get_chi_mianzi を呼び出し、shoupaip でチー可能な面子の一覧を返す。

get_peng_mianzi()

ルール卓情報 を使用して Majiang.Game#static-get_peng_mianzi を呼び出し、shoupaip でポン可能な面子の一覧を返す。

get_gang_mianzi()

ルール卓情報 を使用して Majiang.Game#static-get_gang_mianzi を呼び出し、shoupai がカン可能な面子の一覧を返す。 p が指定された場合は大明槓、null の場合は暗槓と加槓が対象になる。

allow_lizhi()

ルール卓情報 を使用して Majiang.Game#static-allow_lizhi を呼び出し、shoupai からリーチ可能か判定する。 p が null のときはリーチ可能な打牌一覧を返す。 p が牌のときは p を打牌してリーチ可能なら true を返す。

allow_hule()

ルール卓情報 を使用して Majiang.Game#static-allow_hule を呼び出し、shoupai で和了可能か判定する。 p が null のときはツモ和了可能なら true を返す。 p が牌のときは p でロン和了可能なら true を返す。

allow_pingju()

ルール卓情報 を使用して Majiang.Game#static-allow_pingju を呼び出し、shoupai で九種九牌流局可能か判定する。

allow_no_daopai()

ルール卓情報 を使用して Majiang.Game#static-allow_no_daopai を呼び出し、shoupai で「テンパイ宣言」可能か判定する。

抽象メソッド

以下のメソッドはサブクラスで実装する必要がある。 (実装例: @kobalab/majiang-ai)

action_kaiju()

kaiju を確認し空応答する処理を実装する。

action_qipai()

qipai を確認し空応答する処理を実装する。

action_zimo()

zimo から適切な応答(打牌・槓・和了・倒牌)を選択し返す処理を実装する。 gangzimo が真の場合は槓自摸を表す。

action_dapai()

dapai から適切な応答(副露・和了・倒牌)を選択し返す処理を実装する。

action_fulou()

fulou から適切な応答(打牌)を選択し返す処理を実装する。

action_gang()

gang から適切な応答(打牌・槓・和了)を選択し返す処理を実装する。

action_hule()

hule を確認し空応答する処理を実装する。

action_pingju()

pingju を確認し空応答する処理を実装する。

action_jieju()

paipu を処理し空応答する処理を実装する。