Open10

ネット麻雀を作ってみたい

前田みお前田みお

  • 役の成立条件は仕様パターンを使うと便利そう
      • 面前清自摸和: 面前仕様 and ツモ和了仕様
      • 一盃口: 面前仕様 and 同じ暗順子が2つある仕様
  • 役満は通常役満とW役満を別のオブジェクトとして分けたほうが管理しやすそう
    • 国士無双と国士無双13面待ち
    • 四暗刻と四暗刻単騎待ち
    • 大四喜と小四喜
  • 通常役の食い下がりは同じオブジェクトで、食い下がる役、かつ鳴いている場合に評価価値を下げて渡すのが良さそう
前田みお前田みお

得点計算

  • 点数早見表は使わないで普通に計算しちゃったほうが楽
    • 得点早見表だと親と子/ツモとロンの4種あるので余計複雑
    • 飜と符から基本点計算して、そこから和了点と負担点を計算したほうがシンプル
  • 計算手順
    1. 基本点計算
    2. 役満の基本点計算
      1. 成立する役満をリストアップ
      2. 成立する役満がない場合は通常計算へ
      3. 成立した役満の倍率をすべて足す
      4. 基本点 = 合計倍率 × 役満基本点(8000)
    3. 通常の基本点計算
      1. 成立する通常役をリストアップ
      2. ドラを計算
      3. 符を計算
      4. 合計飜数が6飜以上の場合は合計飜数から基本点を算出
      5. 合計飜数が5飜以下の場合は 基本点 = min(合計符数 × 2 ^ (合計飜数 + 2), 満貫基本点(2000)
    4. 基本点から和了点と負担点を計算
    5. 負担点に積み符を加算
    6. 供託を獲得ポイントに加算
前田みお前田みお

宇宙麻雀

いただきじゃんがりあんR基準

ルール

  • 順子のループが可能
    • 891m912m
  • 風牌と三元牌の順子が可能
    • 123z567z
    • なので字牌の一盃口も成立可能
  • 役なしドラのみが和了可能
  • 七対子が役ではない
  • 上家以外からのチーが可能

実装

  • 順子条件オブジェクトを追加して、順子で判断させる
    • 通常:
      • 1と9が連続することを許可しない
      • 字牌を許可しない
    • 宇宙麻雀:
      • 1と9が連続することを許可する
      • 字牌を許可する
前田みお前田みお

和了形

  • 基本的に3種類
    • 通常形(4面子1雀頭)
    • 七対子形
    • 国士無双形
  • 通常形は基本的に次の3つで網羅できる
    • 塔子待ち形: 3完成面子1塔子1雀頭
    • 双碰待ち形: 3完成面子2対子
    • 単騎待ち形: 4完成面子1孤立牌
  • 複合形の待ちは和了形を分けて考慮する
    • ノベタン(例: 1234m
      • 123m の順子と 4m の孤立牌
      • 234m の順子と 1m の孤立牌
    • 3面張(23456m
      • 234m の順子と 56m の塔子
      • 456m の順子と 23m の塔子
  • 面前状態は和了牌を含む面子を除いて晒した面子があるかどうかで判断できる
    • すべての面子が晒してない面子、の条件だと平和でロンした時に最後の面子が明順扱いになってしまうため
前田みお前田みお

場風

  • 場風を値として持つ?
    • 1~4局目を東場、5~8局目を南場のようにすれば場風を値として持たなくていい

自風

  • 自風は状態として持つ必要はない
    • 席の位置と何局目か分かれば割り出せるため
前田みお前田みお

麻雀卓

  • 山や河、手牌周り
  • これも勘定パターンを応用するとよさそう
    • プレイヤー同士で行われる牌の移動によって進行される
前田みお前田みお

プレイヤー

  • 概念的には2つ存在しそう
    • A: 東家、南家、西家、北家と局ごとの役割としてのプレイヤー
      • 麻雀卓や点数計算に使われる
    • B: 実際に席に座っているプレイヤー
      • =ユーザー、CPU
      • 対局ごとの得点状況に紐付けされる