麻雀 for FX-602P/603P (0.5 キロバイトの麻雀ゲーム)

 0.5キロバイトで作ったFX-602P/603P用の麻雀です。もちろん通常の麻雀とは少しルールが違いますが,FX-602Pの性能を生かして作った,限界に迫る作品です!!よろしければ入力して遊んでみてください。(^^)

※本プログラムはFreewareです。動作に責任は持ちません。(^^;
※本プログラムは雑誌PiO(工学社) 1986年9月号に掲載された拙作「麻雀」Ver 9.1を大幅にバージョンアップしたものです。本バージョンはVer 11.4 (2001/05/02)です(→旧バージョンとの違いについてはこちら)。FX-603P対応版はこちらをご覧ください。旧バージョンはこちら(Ver 11.3Ver 11.2Ver 11.1Ver 11.0Ver 10.9Ver 10.8Ver 10.7Ver 10.6)です。

(C) 1986-2001, K. Miyahara

2001/05/03 FX-603P用のテキストファイルにミスがありました。差し替えましたので,古いものをダウンロードされた方は入れ替えてください。

概要

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

おおまかなルール
  • 手牌は8枚で,1枚ツモって9枚で3面子の形にして和了します。
  • 牌の種類は1〜9で,同じ牌はいくつでもあります。
  • 役はピンフ,タンヤオ,イーペイコー,ドラ,イッツウ,チャンタ,トイトイ,3レンコウ,テンホー,チンロウトウ(役満),イッショク(役満)の全部で11種類です。(役一覧)
    #役の追加ももう限界かも。(^^;
  • 以下はルールにありません
  • リーチ
  • チー,ポン,カン
  • 流局 (どちらかが和了するまで,その局が続きます。)
  • フリテン
  • チョンボ
  • 一翻縛り
  • ダブル役満
  • 遊び方

     統計記録をクリアするため,一番最初に実行するときだけ,RunモードでINV SACINV MACを押してください。また,Ver 11.1より,三角関数モードの制限はなくなりました。DEGRADGRAのどのモードでも正常に動作します。

     P0を押すと,しばらくしてあなたの配牌が表示されます。

     22333568

     次に,ドラと持ち点が表示されます。

      ■2■   0

     ここでは,2がドラであることを示しています(ドラは現物)。また,右側は持ち点(最初は0)を表します。初期状態では,あなたが最初の親なので(次局以降は最後に和了した方が親です),次のように1枚ツモった状態の手牌が表示されます。

    223335678

     ここでもし和了している場合には,0 EXEもしくはそのままEXEを押してください。和了してない場合にこの操作を行っても,無視されるだけでチョンボにはなりません(ドラや点数を確認するのにいいかも)。捨牌する場合には,数字を入れてEXEを押してください。

     次はFXの番になります。勝手に1枚つもり,10秒ほどしてFXの捨牌が表示されます(もちろん,FXの手牌は見えません)。

            9

     もし,FXの捨牌で和了するならば,この時に0を入力してください(和了ではないのに0を押した場合は,単に無視されます)。和了でなければ,再びあなたのツモ番になります。後は,この繰り返しです。

     もし,どちらかが和了すると,

        Ron 8

    または

      Tsumo 8

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

     その後,
      Iipeiko

    などと役が表示された後,点数が表示されます。点数の計算は次の通りです。

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

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

    合計翻数と役係数
    合計翻数役係数
    11
    16
    22
    29
    37


    役の種類
    役の名前翻数説明
    ピンフすべて順子で,両面待ち
    タンヤオ1,9を含まない
    イーペイコー同じ面子(順子,刻子)がある
    ドラドラを1枚以上含む (インフレ防止のため,2枚以上あっても翻数は増えません)
    イッツウ123456789の形
    チャンタすべての面子に1か9を含む
    トイトイすべてが刻子
    3レンコウ3つ連続した刻子で構成される(※必ずトイトイと複合する)
    テンホー親が配牌で和了するか,親の第一捨牌で子が和了
    チンロウトウ(役満)1と9のみで構成されるトイトイの形 (他の役も表示はされますが,複合しません) 
    イッショク(役満)同じ数字×9 (他の役も表示はされますが,複合しません)


    点数早見表
    合計翻数すべて順子1刻子2刻子3刻子
    8009601120(1280)
    160019202240(2560)
    3200384044805120
    5600672078408960
    8800105601232014080
    12800153601792020480
    17600211202464028160
    23200(27840)(32480)37120
    (29600)(35520)(41440)47360


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

       800/1

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

     Ave 800

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

    役満和了者の殿堂

     ここでは,役満を和了した方々をご紹介します。役満を和了した方,和了されてしまった方(笑)は,ぜひメールでお知らせください。役満和了者の殿堂に入れさせていただきます。バグ報告,ゲームの感想などもこちらへどうぞ。

    名前 日付 和了形 相手 バージョン ひとこと
    FX-602P2001/04/2411111999 ツモ1 ドラ5Janta11.4超びっくりしました。(;_;)
    airfew2001/03/?11199999 ロン9 ドラ?FX-603P11.3?ちょっとドキドキしました。
    Janta2001/02/2711111199 ツモ9 ドラ8FX-603P11.2改相手も9待ちのトイトイ形でした。

    和了形について

     いわゆる111222333のような形は,順子にも刻子にもとれますが,常に刻子としてトイトイ・3レンコウの形で判断されます。これは,順子形では最高でピンフ・チャンタ・イイペイコウで同じ4翻になりますが,刻子の方が基礎点が高くなるためです。

    FXの思考ルーチンについて

     FXの思考ルーチンについては,省ステップの関係でかなりトリッキーな作りになっています。解読する時は十分に気をつけてください。打ち方としては,人間の打ち方とは一風変わった動きをします。安い手をコツコツ和了するタイプですが,Ver 11.2からはトイトイの,Ver 11.4からはイイペイコーの作り方が従来よりうまくなったこともあり,時々炸裂する大物手にはご注意ください(笑)。

     2001/04/24,ついにFXが役満を和了しました!上の役満和了者の殿堂をご覧ください。

    プログラムリスト

    ※入力時の注意
    プログラム ステップ数 内容
    P9 5 Min1F RAN# MR1F GSBP9
    P8 12 × MRF +/- 10^x = FRAC × 10 = INT
    P7 26 Min06 AC Min00 Min1F LBL0 MR06 x=0 GOTO9 log INT 10^x M-06 log × MR00 ISZ 10^x M+1F = M+1F GOTO0 LBL9 " AR1F "
    P6 10 1 Min12 RAN# × 9 = INT M+12 10^x
    P5 10 MR00 MinF MR02 GSBP8 ÷ 3 = FRAC RND1
    P4 4 GSBP9 ISZ ISZ
    P3 180 Min00 x=F "Toitoi" x=F GSBP4 MRF X←→M06 x=F "Chanta" x=F GSBP4 2 x>=F GOTO7 MR12 X←→MF x=F x=0 MR10 GSBP8 Min04 6 x>=F 2 M+F MR10 GSBP8 M+04 MR04 x=0 GOTO7 "Pinfu" GSBP9 ISZ LBL7 1 MinF MR15 x=F "Tenho" x=F GSBP4 MR16 M+16 M+16 log RND4 FRAC x=0 "3renko" x=0 GSBP4 MR11 GSBP8 Min04 8 M+F M-06 MR11 GSBP8 M+04 MR04 x=F GOTO5 x=0 "Tanyao" x=0 GSBP9 x=0 ISZ MR16 RND8 log x=F "Ittsu" x=F GSBP4 MR18 MinF MR17 x=F MR19 x=F GOTO5 MR17 x=F x=0 MR19 x=F "Iipeiko" x=F GSBP9 x=F ISZ MR14 MinF MR11 GSBP8 x=0 GOTO3 "Dora" GSBP9 ISZ GOTO3 LBL5 8 Min00 "*YAKUMAN*" GSBP9 LBL3
    P2 34 4 Min1F M+06 MR19 ABS log INT M-1F 10^x Min00 M-19 M-19 M-19 MR19 x>=0 GOTO9 1 M+F M+1F MR00 M+10 M+00 × 89 % + M+19 LBL9 MR1F ABS M-06 MR00
    P1 18 IND MR05 Min19 Min11 Min16 M+16 M+16 AC MinF Min06 Min10 GSBP2 Min17 GSBP2 Min18 GSBP2 X←→M19
    P0 212 AC Min01 Min02 Min13 Min15 8 Min00 LBL0 GSBP6 M+01 GSBP6 M+02 DSZ GOTO0 MR01 GSBP7 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 GSBP6 M-13 MR13 IND M-05 1 M+15 LBL7 "■ AR14 ■□ AR08" IND GOTO5 GSBP1 x=0 GOTO5 1 Min17 9 Min00 LBL8 GSBP5 M-17 DSZ GOTO8 LBL8 GSBP5 Min18 10^x Min10 9 x=F GOTO4 M-10 2 M+00 GSBP5 Min19 10^x M+10 MR17 x=0 Min10 DSZ GSBP5 x=0 GOTO8 M-18 M-19 M+10 MR18 x=0 Min10 MR19 x=0 Min10 5 M-F MR06 X←→MF × % M-10 MR10 x>=F GOTO8 Min06 MR00 Min04 GOTO8 LBL1 MR01 GSBP7 HLT ABS INT Min04 x=0 GSBP1 x=0 GOTO5 MR04 MinF MR01 GSBP8 x=0 GOTO7 LBL4 MR04 Min12 - 1 = 10^x IND M-05 Min13 GOTO0 LBL5 "Tsumo□ AR12 " LBL3 MR11 GSBP7 MR02 GSBP7 GSBP1 GSBP3 MR00 + x^2 + 2 = × 80 × MR06 × MR05 M+05 3 M-05 MR05 = XD "#" GSBP9 " AR08 / AR09 " GSBP9 GSBP9 x~ INT "Ave□#"
    total 511 steps


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


    counter

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

    PED00725@nifty.ne.jp, ey5k-myhr@asahi-net.or.jp
    Last modified 2001/05/03