麻雀 Ver. 10.6 for FX-602P

 FX-602P用の麻雀です。もちろん通常の麻雀とは少しルールが違いますが、512ステップをフルに使ったFX-602Pの限界に迫る作品です!!よろしければ入力して遊んでみてください。(^^)

※本プログラムはFreewareです。動作に責任は持ちません。(^^;
※本プログラムは雑誌PiO(工学社) 1986年9月号に掲載された拙作「麻雀」を大幅にバージョンアップしたものです。現在のバージョンはVer 10.6 (2000/07/15)です。
(C) 1986-2000, K. Miyahara

概要

 FX-602Pと対戦する二人麻雀です。FX-602Pも一切インチキせず、それなりに賢く打ちます。バージョンアップで、FX-602Pも以前より遥かに強くなりましたので、どうぞご期待ください。それでは、役満を目指して頑張ってください。

おおまかなルール
  • 手牌は8枚で、1枚ツモって9枚で3面子の形にして和了します。
  • 牌の種類は1〜9で、同じ牌はいくつでもあります。
  • 役はピンフ、タンヤオ、イーペイコー、ドラ、イッツウ、チャンタ、トイトイ、イッショク(役満[NEW!])の全部で8つです。
  • 以下はルールにありません
  • リーチ
  • チー、ポン、カン
  • 流局 (どちらかが和了するまで、その局が続きます。)
  • フリテン (さあ、高目を狙って、レッツチャレンジ!)
  • チョンボ (親切設計?)
  • 一翻縛り (役が無くたって、いいじゃない?)
  • 遊び方

     統計記録をクリアするため、一番最初に実行するときだけ、RunモードでINV SACINV MACを押してください。また、実行の際は、必ずDEGGRAにしてください。RADにすると、FX-602Pの打ち方がおかしくなります。(^^; P0を押すと、次のように表示され、配牌が1枚ずつ配られていきます。

    →32326385

     8枚全部配り終わると、次にドラと持ち点の表示に移ります。

      ■2■  00

     ここでは、2がドラであることを示しています(ドラは現物)。また、右側の00は持ち点0を表します。最初はFX-602Pが親なので、FX-602Pが1枚ツモります(次局以降は最後に和了した方が親になります)。運が悪いと、何もしないうちに和了されることもありますが、そうでなければ、10秒ほどしてFX-602Pの捨牌が表示されます。

            9

     もし、FX-602Pの捨牌で和了するならば、この時に0を入力してください(和了ではないのに0を押した場合は、単に無視されます)。和了でなければ、今度はあなたのツモ番です。ドラと点数の表示の後、次のように1枚ツモった状態の手牌が表示されます。

    223335678

     和了の場合は、0 EXEもしくはそのままEXEを押してください。そうでない場合には、捨牌を選びます。捨牌の数字を入れて、EXEを押してください。後は、これの繰り返しです。

     もし、どちらかが和了した場合には、

        Ron 8

    または

      Tsumo 8

    と表示され、和了した手牌が表示されます。あなたが和了した場合には、あなたの和了形が表示された後、FX-602Pが自分の手牌を見せてくれます。(^^;

     その後、役の表示の後、点数が表示されます。点数の計算は次のようになっています。

    点数=16×(基礎点)×(役係数)

    (基礎点)=50+10×(刻子の数)

    役の数と役係数
    役の合計数役係数
    11
    16
    22
    29


    役の種類
    役の名前役の数説明
    ピンフすべて順子で、両面待ち
    タンヤオ1、9を含まない
    イーペイコー同じ面子(順子、刻子)がある
    ドラドラを1枚以上含む (2枚以上あっても意味無し←インフレ防止のため)
    イッツウ123456789の形
    チャンタすべての面子に1か9を含む
    トイトイすべてが刻子
    イッショク(役満)同じ数字×9 (他の役も表示はされますが、複合しません)


    点数早見表
    役の数すべて順子1刻子2刻子3刻子
    8009601120(1280)
    160019202240(2560)
    320038404480(5120)
    5600672078408960
    8800105601232014080
    12800(15360)(17920)20480
    (17600)(21120)(24640)28160
    (23200)(27840)(32480)37120


     点数が表示された後は、しばらく次のように表示されます。

    1: 800

    左の数字は局の数を、右の数字はトータルの点数を表示します。また、しばらくすると、次のように表示が切り替わります。

     Ave 800

    これは、1局あたりの平均点数です。これがマイナスということは、FX-602Pに負けているということなので、プラスになるよう頑張ってください。(^^) 参考までに、私は100局打ってAve 460でしたが、うまい人ならもっといくでしょう。続けてもう一局打つ場合には、P0と入力してください。もし、統計内容をクリアしたいときには、INV SACと押してください。

    バグ

     いわゆる111222333のような形は、順子とも刻子ともとれますが、常に刻子としてトイトイと判断されます。場合によっては、順子にとった方が高くなる場合もありますが、対応が難しいので、ご勘弁ください。

     なお、役満を和了した方、和了されてしまった方(笑)は、ぜひメールでお知らせください。バグ報告、ゲームの感想などもこちらへどうぞ。

    プログラムリスト

    ※入力時の注意
    プログラム
    (ステップ数)
    内容
    P9
    (5 steps)
    Min1F RAN# MR1F GSBP9
    P8
    (11 steps)
    ÷ MRF 10^x = FRAC × 10 = INT
    P7
    (30 steps)
    "□" Min06 AC MinF LBL0 1 M+F MR06 GSBP8 LBL1 - 1 = x>=0 "; ARF " x>=0 GOTO1 8 x>=F GOTO0 AC ";"
    P6
    (10 steps)
    1 Min12 RAN# × 9 = INT M+12 10^x
    P5
    (7 steps)
    MR02 GSBP8 ÷ 3 = FRAC
    P4
    (6 steps)
    ABS - 5 = ABS
    P3
    (171 steps)
    Min04 x=F "Toitoi" x=F GSBP9 x=F 3 Min00 MRF x←→M06 x>=F GOTO6 ISZ ISZ "Chanta" GSBP9 LBL6 2 x>=F GOTO7 MR12 MinF 3 x=F GOTO4 MR10 GSBP8 M+04 LBL4 7 x=F GOTO5 2 M+F MR10 GSBP8 M+04 LBL5 MR04 x=0 GOTO7 ISZ "Pinfu" GSBP9 LBL7 1 MinF IND MR05 Min10 GSBP8 Min04 9 MinF MR10 GSBP8 M+04 MR04 x=0 ISZ x=0 "Tanyao" x=0 GSBP9 9 10^x ÷ 9 = INT MinF MR10 x=F ISZ x=F ISZ x=F "Ittsu" x=F GSBP9 MR18 MinF MR17 x=F GOTO2 MR19 x=F GOTO8 GOTO1 LBL2 MR19 x=F x=0 GOTO8 7 Min00 "*Issyoku*" GSBP9 GOTO3 LBL8 ISZ "Iipeiko" GSBP9 LBL1 MR14 MinF MR10 GSBP8 x=0 GOTO3 ISZ "Dora" GSBP9 LBL3
    P2
    (34 steps)
    MR19 ABS log INT Min00 10^x M-19 M-19 M-19 MR19 x>=0 ISZ x>=0 GOTO9 1 M+F AC x←→M00 M-00 10^x M+10 ×1.89 = M+19 LBL9 MR00 GSBP4 M-06 MR00
    P1
    (17 steps)
    IND MR05 Min19 AC MinF Min10 11 Min06 GSBP2 Min17 GSBP2 Min18 GSBP2 x←→M19 ABS
    P0
    (221 steps)
    AC Min01 Min02 Min13 8 Min00 "→" LBL0 GSBP6 M+01 "; AR12 " GSBP6 M+02 DSZ GOTO0 GSBP6 MR12 Min14 LBL0 1 MinF x←→M05 x=F M+05 MR13 IND M+05 MR05 1/x INT x=F MR13 x>=F " AR12 " x>=F PAUSE x>=F PAUSE x=0 GSBP1 x=0 "Ron□ AR12 " x=0 GOTO3 MR13 IND M-05 GSBP6 IND M+05 LBL1 "■ AR14 ■□ AR08 0" MR05 ln x=0 GOTO2 GSBP1 x=0 GOTO5 AC MinF 9 Min17 LBL8 GSBP5 Min18 2 M+18 M+F GSBP5 M+18 1 M-F GSBP5 x=0 GOTO9 × 6 = M-18 MR18 x=0 GOTO7 3 M+18 LBL7 MRF GSBP4 sin M-18 MR18 - MR17 = x>=0 GOTO9 MR18 Min17 MRF Min04 LBL9 8 x>=F GOTO8 GOTO4 LBL2 GSBP9 MR01 GSBP7 HLT Min04 x=0 GSBP1 x=0 GOTO5 MR04 MinF MR01 GSBP8 x=0 GOTO1 LBL4 MR04 Min12 1 M-04 MR04 10^x IND M-05 Min13 GOTO0 LBL5 "Tsumo□ AR12 " LBL3 GSBP9 MR01 MinF IND MR05 x=F GSBP7 x=0 GSBP9 MR02 GSBP7 GSBP1 GSBP3 MR00 + x^2 + 2 = × 8 M-06 × MR06 × ( 3 x←→M05 M-05 - MR05 = XD "#0" GSBP9 " AR09 : □ AR08 0" GSBP9 GSBP9 x~ INT "Ave□#0"
    total 512 steps


    メモリ 用途
    MR00汎用、役の数
    MR01〜02手牌
    MR04汎用
    MR05手番プレイヤー(1=人間,2=FX-602P)
    MR06手札の選択(1〜4)
    MR07〜09スコアの統計用
    MR10順子形判定
    MR12ツモ牌、捨て牌
    MR13ツモ牌、捨て牌(指数表現)
    MR14ドラ
    MR17〜19面子、コンピュータ思考用
    MRF比較用
    MR1Fxレジスタ保存用


    counter

    [ HomePage | FX-602Pのページ ]

    PED00725@nifty.ne.jp, ey5k-myhr@asahi-net.or.jp
    Last modified 2000/07/17