Пример #1
0
        public void MonkeyTest(bool serialize,
                               OpenRiichi openRiichi,
                               HandCap handCap,
                               RedTile redTile,
                               喰い替え kuikae,
                               四家立直 allRiichi,
                               TripleRon tripleRon,
                               明槓槓ドラ 明槓槓ドラ)
        {
            IController controller = Game.Create(0, new RuleSetting()
            {
                openRiichi = openRiichi,
                handCap    = handCap,
                redTile    = redTile,
                喰い替え       = kuikae,
                四家立直       = allRiichi,
                tripleRon  = tripleRon,
                明槓槓ドラ      = 明槓槓ドラ
            });

            for (int i = 0; i < 1000; ++i)
            {
                if (serialize)
                {
                    var jsonString = controller.SerializeSession().ToJson();
                    controller = TSKT.Mahjongs.Serializables.Session.FromJson(jsonString);
                    var jsonString2 = controller.SerializeSession().ToJson();
                    Assert.AreEqual(jsonString, jsonString2);
                }

                var           commands = controller.ExecutableCommands;
                CommandResult result;
                if (commands.Length > 0)
                {
                    var command = commands[Random.Range(0, commands.Length)];
                    result = controller.ExecuteCommands(out _, command);
                }
                else
                {
                    result = controller.ExecuteCommands(out _);
                }
                if (result.nextController == null)
                {
                    break;
                }
                controller = result.nextController;
            }
        }
Пример #2
0
        public YakuConfig()
        {
            var id = 0;

            aka_dora = new AkaDora(++id);
            tenhou   = new Tenhou(++id);
            // Yaku situations
            tsumo              = new Tsumo(++id);
            riichi             = new Riichi(++id);
            open_riichi        = new OpenRiichi(++id);
            ippatsu            = new Ippatsu(++id);
            chankan            = new Chankan(++id);
            rinshan            = new Rinshan(++id);
            haitei             = new Haitei(++id);
            houtei             = new Houtei(++id);
            daburu_riichi      = new DaburuRiichi(++id);
            daburu_open_riichi = new DaburuOpenRiichi(++id);
            nagashi_mangan     = new NagashiMangan(++id);
            renhou             = new Renhou(++id);
            // Yaku 1 Han
            pinfu         = new Pinfu(++id);
            tanyao        = new Tanyao(++id);
            iipeiko       = new Iipeikou(++id);
            haku          = new Haku(++id);
            hatsu         = new Hatsu(++id);
            chun          = new Chun(++id);
            east          = new East(++id);
            south         = new South(++id);
            west          = new West(++id);
            north         = new North(++id);
            yakuhai_place = new YakuhaiPlace(++id);
            yakuhai_round = new YakuhaiRound(++id);
            // Yaku 2 Hans
            sanshoku       = new Sanshoku(++id);
            ittsu          = new Ittsu(++id);
            chantai        = new Chanta(++id);
            honroto        = new Honroutou(++id);
            toitoi         = new Toitoi(++id);
            sanankou       = new Sanankou(++id);
            sankantsu      = new Sankantsu(++id);
            sanshoku_douko = new SanshokuDoukou(++id);
            chiitoitsu     = new Chiitoitsu(++id);
            shosangen      = new Shousangen(++id);
            // Yaku 3 Hans
            honitsu   = new Honitsu(++id);
            junchan   = new Junchan(++id);
            ryanpeiko = new Ryanpeikou(++id);
            // Yaku 6 Hans
            chinitsu = new Chinitsu(++id);
            // Yakuman list
            kokushi        = new Kokushi(++id);
            chuuren_poutou = new ChuurenPoutou(++id);
            suuankou       = new Suuankou(++id);
            daisangen      = new Daisangen(++id);
            shosuushi      = new Shousuushii(++id);
            ryuisou        = new Ryuuiisou(++id);
            suukantsu      = new Suukantsu(++id);
            tsuisou        = new Tsuisou(++id);
            chinroto       = new Chinroutou(++id);
            daisharin      = new Daisharin(++id);
            daichisei      = new Daichisei(++id);
            // Double yakuman
            daisuushi             = new Daisuushii(++id);
            daburu_kokushi        = new DaburuKokushi(++id);
            suuankou_tanki        = new SuuankouTanki(++id);
            daburu_chuuren_poutou = new DaburuChuurenPoutou(++id);
            // Yakuman situations
            tenhou         = new Tenhou(id++);
            chiihou        = new Chiihou(++id);
            renhou_yakuman = new RenhouYakuman(++id);
            sashikomi      = new Sashikomi(++id);
            paarenchan     = new Paarenchan(++id);
            // Other
            dora     = new Dora(++id);
            aka_dora = new AkaDora(++id);
        }