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; } }
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); }