二人打ち麻雀と四人打ち麻雀のプログラムから見た違い。
プログラミングの立場から見た、二人打ち麻雀と四人打ち麻雀の違いについて。
四人打ち麻雀にあって、二人打ち麻雀にないもの。
二人打ち麻雀は、四人打ち麻雀を簡略化したゲームと考えられます。
しかし、四人いるべき打ち手が二人に減る事で、少なからぬ相違点が発生します。
二人打ちには搶槓がない。
二人打ち麻雀の場合、相手と自分以外に打ち手がいないため、相手がポンを出来るのは自分の打牌のみになります。
一方、日本のリーチ麻雀では、自分が打った牌での栄和を振聴として禁止しております。
つまり、相手が和了牌を加槓してきても、それを奪って和了する事は出来ないと言う事になります。
勿論、国士無双の場合に限っては、振聴でも栄和可能だったり、暗槓に対する搶槓も認められております。
ただ、振聴が認められていても現物では栄和出来なかったり、そもそもこれらの特例自体が認められない場合もあります。
そもそも、国士無双自体がそう頻発する代物ではないため、暗槓搶槓を省略する事もあり得ます。
- ちなみに、セイブ開発は特別な方法で暗槓搶槓を実装しておりました。
従って、
- 四人打ちでは大明槓以外の槓に対し、打牌と同様の判定を通す必要がありますが、
- 二人打ち専用コードなら大明槓以外の槓でも直ちに嶺上牌を取る処理に移行させられる
事となります。
二人打ちは摸和でも全額払い。
リーチ麻雀では、摸和の場合は一人ひとりの払い分は決められた比率で等分されます。
しかし、二人麻雀では払える者は相手一人しかいません。
このため、殆どの作品で摸和でも全額払いとしております。
- このため、ゲーム機などで二人麻雀ばかりやっていた人の中には、実戦では摸和ならダメージが少なくなる事を知らないため危険牌だろうが平気でぶった切る打ち手もいるらしいです!?
従って、
- 四人打ちでは、摸和では点数を等分して精算する処理が必要ですが、
- 二人打ち専用コードなら常に和了点をそのまま使えば良い
事になります。
また、二人麻雀では責任払いの概念も生じ得ません。
従って、二人麻雀には包牌の概念もありません。
打牌の奪い合いが生じ得ない。
両家和やポン・吃の同時宣言など、相手が三人いる四人麻雀では、しばしば打牌の奪い合いが起こります。
勿論、これらについてはルールで明確に優先順位が定められており、プログラムに於いてもそれを正しく実装しなければなりません。
しかし、二人打ち麻雀では相手が一人しかいないため、奪い合いが生じる事はありません。
つまり、二人打ち専用コードなら、自分や相手が打牌に対し何らかのコマンド(栄和, ポン, 吃など)を発行した場合、直ちにそのコマンドを実行するようにプログラムを組めば良い事になります。
一方、四人打ちのコードでは、ルールで定められた優先順位に従って有効なコマンド発行者を診なければなりません。
"死に牌"が多い。
二人麻雀では、一局は大体十八巡ないし二十巡となりますが、そうすると一局で使われない"死に牌"が四人打ちよりも多くなる事となります。
また、レイアウトなどの都合から、実際に使われた牌の枚数ではなく、河に切られた牌の枚数で平局を判断する作品もあります。
途中平局が少ない。
四家立直, 三家和, 四風子連打は、四人打ちでないと起こり得ません。
従って、二人麻雀に於いて途中平局で起こり得るのは、九種幺九倒牌と四槓算了のみとなります。
但し、これらについても、二人麻雀専用コードでは省略される場合も少なくありません。
荘家の移動方法が異なる。
二人打ちは二人しかいないため、輪荘では荘家を交代させるだけとなります。
このため、輪荘処理は四人打ちより単純なものとなるでしょう。
二人打ち麻雀で省略される場合があるもの。
二人打ち麻雀は四人打ち麻雀の簡略版と見た場合、本質的に要さない機能の一部は省略される事があります。
近年ではより本格的なものとするためか、省略される事は余り無いようですが、かつては以下の機能が省略されておりました。
- 起家決め
-
賽子振りの処理を付け加えるのが面倒だったのか、初期の作品ではゲーム開始時点では常にプレイヤが起家となる場合が多かったようです。
- 但し、BET 型の場合は常に南家となる場合が多かったようです。
- 荘風牌
-
門風のみを役とし、荘風を省略している作品がありました。
また、荘風があっても常に東場に固定されているものもありました。
脱衣麻雀など一ゲームの長さが明確でない作品では、東→南→東→南…と東南を交代で荘風にする場合が多いようです。
- 積み符
-
初期の作品では連荘カウントが面倒だからか、積み符を加算しない場合が多かったようです。
- 不聴罰符・不聴輪荘
-
初期の作品では、平局時に聴牌か否かを確認しない作品が多かったようです。
このような作品に於いては、平局ではほぼ例外なく常に連荘となります。
- 槓ドラ
-
初期のジャンピュータやその亜流作品を中心に、槓ドラを追加しない作品が多かったようです。
また、ドラについても、標識牌の次牌とせず、標識牌そのものをドラとする作品が多かったようです。
- 途中平局
-
相手が一人しかいない二人麻雀でも、九種幺九倒牌と四槓算了は起こり得ますが、これらを実装しない作品も少なくありません。
近年では槓ドラが付くため、増え過ぎないように四槓算了を実装している作品は多いようですが、九種幺九倒牌は面倒だからか省略している作品も少なくありません。
- 幺九振切(流し満貫)
-
そもそも、打牌で点数を得ると言う特殊性から、省略されている作品も少なくないようです。
二人打ち麻雀の思考ルーティンの特徴。
二人打ち麻雀では、思考ルーティンもチープなものが少なくありません。
このため、以下のいずれかの特徴を持つ作品が多くなります:
- 勿論、これらは四人打ちでもあり得るものですが、四人打ちは思考ルーティンに力が入れられている作品が多く、該当する作品は余り見掛けなくなりました。
- CPU は副露しないか、鳴き方が限定される
-
取敢えず、摸打さえ出来れば一応麻雀は打てますので、CPU には一切槓, ポン, 吃をさせない思考ルーティンも少なくないようです。
一翻縛りがあるリーチ麻雀に於いては、不用意な鳴きはそれだけで和了を不可能にしてしまうため、適切な判断が困難だったと言う事情もあるのでしょう。
鳴くにしても
- 字牌以外は一切鳴かない
- 一色手以外では鳴かない
- 翻牌が暗刻になっている場合に限って他の門子を鳴く
と、限定された鳴き方しか実装されない場合も多かったようです。
また、立直後に暗槓出来る牌を引いても、暗槓する事を知らないためそのまま切ってしまい、プレイヤに当たってしまう事もあります。
- CPU は意図的には闇聴しない
-
意図的に闇聴にするような機能は実装されない場合が多いようです。
但し、それでも思考ルーティンの不備から、リーチを掛け損ねて闇聴となるケースは珍しくありません。
闇聴になってしまった場合、アーケードなら和了前に役判定して和了の可否を調べますが、アマチュアの作品では和了してからでないと役判定をしない作品が多かったため、翻牌や断幺九など簡単に判定出来る場合以外には無視する作品が多いようです。
- 七対子を狙わない
-
思考ルーティンで七対子と門子型のどちらを取るかの判断が難しいのか、門子型しか狙わない思考ルーティンを実装している作品も少なくないようです。
このような作品に於いては、偶然七対子を聴牌したとしても、立直を掛けなかったり、後の摸牌で聴牌を崩してしまう場合が多くなります。
まとめ。
二人打ち麻雀は、四人打ち麻雀に較べると、大幅に簡略化されたものとなります。
大は小を兼ねると言いますが、四人麻雀のコードであれば、僅かな相違点を実装するだけで二人打ちにも対応出来るようにはなります。
ただ、二人打ち専用のソフトウェアの場合、それでは余りにも無駄な部分が多くなってしまいます。
このため、二人打ち専用コードを作った方が無駄がなくて良いと判断されるかも知れません。
おまけ:三人打ちでは?
三人打ち麻雀は、コンピュータゲームの作品ではそれ程多くはないと思われます。
それでも、近年では、四人打ち麻雀のコードに手を加えて三人打ちをプレイ出来る作品も増えております。
単に相手が二人しかいない三人麻雀と言う作品もあれば、一般的な三人麻雀のルールに基づいた実装の作品もあります。
後者の場合は、ルールにも依りますが、以下の機能を追加する必要があるでしょう:
- 抜きドラ
- 嶺上ドラ
- 和了後の荘家の扱い(和了者が荘家となるルールの場合)
また、逆に以下のものを三人麻雀では外す必要があるでしょう:
- 吃
- 万子中張牌
そして、いずれの場合でも、以下の機能については処理を変える必要があります:
- 一局に使われる王牌以外の牌の枚数
- 摸和時の点数計算方法
- 不聴罰符の計算方法
三人打ち麻雀専用にコードを書く場合は、二人打ち麻雀同様に不要な機能を削る事が出来るでしょう。