예제 #1
0
 public TsuisoResolver(MentsuComp comp)
 {
     janto       = comp.getJanto();
     shuntsuList = comp.getShuntsuList();
     toitsuList  = comp.getToitsuList();
     kotsuList   = comp.getKotsuKantsu();
 }
예제 #2
0
 public PinfuResolver(MentsuComp comp, GeneralSituation generalSituation, PersonalSituation personalSituation) : base(generalSituation, personalSituation)
 {
     janto        = comp.getJanto();
     shuntsuCount = comp.getShuntsuCount();
     shuntsuList  = comp.getShuntsuList();
     last         = comp.getLast();
 }
예제 #3
0
        /**
         * @return 役満が見つかったか
         */
        private bool findYakuman()
        {
            //役満をストックしておき、見つかったら先にこちらに保存する
            List <Yakuman> yakumanStock = new List <Yakuman>(4);

            //それぞれの面子の完成形で判定する
            foreach (MentsuComp comp in hands.getMentsuCompSet())
            {
                HashSet <YakumanResolver> yakumanResolverSet
                    = Mahjong4jYakuConfig.getYakumanResolverSet(comp, generalSituation, personalSituation);

                foreach (YakumanResolver resolver in yakumanResolverSet)
                {
                    if (resolver.isMatch())
                    {
                        yakumanStock.Add(resolver.getYakuman());
                    }
                }

                //ストックと保存する役満リストと比較し大きい方を保存する
                if (yakumanList.Count() < yakumanStock.Count())
                {
                    yakumanList = yakumanStock;
                    this.comp   = comp;
                }
            }

            return(yakumanList.Count() > 0);
        }
예제 #4
0
        private void findNormalYaku()
        {
            //それぞれの面子の完成形で判定する
            foreach (MentsuComp comp in hands.getMentsuCompSet())
            {
                //役をストックしておく
                List <NormalYaku>            yakuStock = new List <NormalYaku>(7);
                HashSet <NormalYakuResolver> resolverSet
                    = Mahjong4jYakuConfig.getNormalYakuResolverSet(comp, generalSituation, personalSituation);
                foreach (NormalYakuResolver resolver in resolverSet)
                {
                    if (resolver.isMatch())
                    {
                        yakuStock.Add(resolver.getNormalYaku());
                    }
                }

                int hanSum = calcHanSum(yakuStock);
                if (hanSum > this.han)
                {
                    han            = hanSum;
                    normalYakuList = yakuStock;
                    this.comp      = comp;
                }
            }

            if (han > 0)
            {
                calcDora(hands.getHandsComp(), generalSituation, normalYakuList.Contains(NormalYaku.REACH));
            }
            calcScore();
        }
예제 #5
0
        /**
         * 待ちの種類による可符
         *
         * @param comp
         * @param last
         * @return
         */
        private int calcFuByWait(MentsuComp comp, Tile last)
        {
            if (comp.isKanchan(last) || comp.isPenchan(last) || comp.isTanki(last))
            {
                return(2);
            }

            return(0);
        }
예제 #6
0
        public static HashSet <YakumanResolver> getYakumanResolverSet(MentsuComp comp, GeneralSituation generalSituation, PersonalSituation personalSituation)
        {
            HashSet <YakumanResolver> yakumanResolverSet = new HashSet <YakumanResolver>();

            yakumanResolverSet.Add(new ChinrohtohResolver(comp));
            yakumanResolverSet.Add(new ChurenpohtohResolver(comp));
            yakumanResolverSet.Add(new DaisangenResolver(comp));
            yakumanResolverSet.Add(new DaisushiResolver(comp));
            yakumanResolverSet.Add(new RyuisoResolver(comp));
            yakumanResolverSet.Add(new ShosushiResolver(comp));
            yakumanResolverSet.Add(new SuankoResolver(comp));
            yakumanResolverSet.Add(new SukantsuResolver(comp));
            yakumanResolverSet.Add(new TsuisoResolver(comp));

            yakumanResolverSet.Add(new RenhoResolver(generalSituation, personalSituation));
            yakumanResolverSet.Add(new ChihoResolver(generalSituation, personalSituation));
            yakumanResolverSet.Add(new TenhoResolver(generalSituation, personalSituation));

            return(yakumanResolverSet);
        }
예제 #7
0
        public static HashSet <NormalYakuResolver> getNormalYakuResolverSet(MentsuComp comp, GeneralSituation generalSituation, PersonalSituation personalSituation)
        {
            HashSet <NormalYakuResolver> normalYakuResolverSet = new HashSet <NormalYakuResolver>();

            normalYakuResolverSet.Add(new ChantaResolver(comp));
            normalYakuResolverSet.Add(new ChunResolver(comp));
            normalYakuResolverSet.Add(new ChinitsuResolver(comp));
            normalYakuResolverSet.Add(new ChitoitsuResolver(comp));
            normalYakuResolverSet.Add(new HakuResolver(comp));
            normalYakuResolverSet.Add(new HatsuResolver(comp));
            normalYakuResolverSet.Add(new HonitsuResolver(comp));
            normalYakuResolverSet.Add(new HonrohtohResolver(comp));
            normalYakuResolverSet.Add(new IkkitsukanResolver(comp));
            normalYakuResolverSet.Add(new IpeikoResolver(comp));
            normalYakuResolverSet.Add(new JunchanResolver(comp));
            normalYakuResolverSet.Add(new RyanpeikoResolver(comp));
            normalYakuResolverSet.Add(new SanankoResolver(comp));
            normalYakuResolverSet.Add(new SankantsuResolver(comp));
            normalYakuResolverSet.Add(new SanshokudohjunResolver(comp));
            normalYakuResolverSet.Add(new SanshokudohkoResolver(comp));
            normalYakuResolverSet.Add(new ShosangenResolver(comp));
            normalYakuResolverSet.Add(new TanyaoResolver(comp));
            normalYakuResolverSet.Add(new ToitoihoResolver(comp));

            normalYakuResolverSet.Add(new PinfuResolver(comp, generalSituation, personalSituation));
            normalYakuResolverSet.Add(new TsumoResolver(comp, generalSituation, personalSituation));
            normalYakuResolverSet.Add(new JikazeResolver(comp, generalSituation, personalSituation));
            normalYakuResolverSet.Add(new BakazeResolver(comp, generalSituation, personalSituation));
            normalYakuResolverSet.Add(new IppatsuResolver(generalSituation, personalSituation));
            normalYakuResolverSet.Add(new HouteiResolver(generalSituation, personalSituation));
            normalYakuResolverSet.Add(new HaiteiResolver(generalSituation, personalSituation));
            normalYakuResolverSet.Add(new ReachResolver(generalSituation, personalSituation));
            normalYakuResolverSet.Add(new RinshankaihohResolver(comp, personalSituation));
            normalYakuResolverSet.Add(new ChankanResolver(generalSituation, personalSituation));
            normalYakuResolverSet.Add(new DoubleReachResolver(generalSituation, personalSituation));

            return(normalYakuResolverSet);
        }
예제 #8
0
 public RyuisoResolver(MentsuComp hands)
 {
     toitsuList  = hands.getToitsuList();
     shuntsuList = hands.getShuntsuList();
     kotsuList   = hands.getKotsuKantsu();
 }
예제 #9
0
 public HonrohtohResolver(MentsuComp comp)
 {
     shuntsuList = comp.getShuntsuList();
     toitsuList  = comp.getToitsuList();
     kotsuList   = comp.getKotsuKantsu();
 }
예제 #10
0
 public DaisangenResolver(MentsuComp comp)
 {
     kotsuList = comp.getKotsuKantsu();
 }
예제 #11
0
 public SanankoResolver(MentsuComp comp)
 {
     kotsuList  = comp.getKotsuKantsu();
     kotsuCount = comp.getKotsuCount() + comp.getKantsuCount();
 }
예제 #12
0
 public JikazeResolver(MentsuComp comp, GeneralSituation generalSituation, PersonalSituation personalSituation) : base(generalSituation, personalSituation)
 {
     this.comp = comp;
 }
예제 #13
0
 public HonitsuResolver(MentsuComp comp)
 {
     allMentsu = comp.getAllMentsu();
 }
예제 #14
0
 public SankantsuResolver(MentsuComp comp)
 {
     kantsuCount = comp.getKantsuCount();
 }
예제 #15
0
 public ChantaResolver(MentsuComp comp)
 {
     this.comp = comp;
 }
예제 #16
0
 public TanyaoResolver(MentsuComp comp)
 {
     allMentsu = comp.getAllMentsu();
 }
예제 #17
0
 public JunchanResolver(MentsuComp comp)
 {
     janto       = comp.getJanto();
     shuntsuList = comp.getShuntsuList();
     kotsuList   = comp.getKotsuKantsu();
 }
예제 #18
0
 public SanshokudohjunResolver(MentsuComp comp)
 {
     shuntsuCount = comp.getShuntsuCount();
     shuntsuList  = comp.getShuntsuList();
 }
예제 #19
0
 public ChinitsuResolver(MentsuComp comp)
 {
     this.comp = comp;
 }
예제 #20
0
 public TsumoResolver(MentsuComp comp, GeneralSituation generalSituation, PersonalSituation personalSituation)
 {
     this.comp              = comp;
     this.generalSituation  = generalSituation;
     this.personalSituation = personalSituation;
 }
예제 #21
0
 public IkkitsukanResolver(MentsuComp comp)
 {
     shuntsuList  = comp.getShuntsuList();
     shuntsuCount = comp.getShuntsuCount();
 }
예제 #22
0
 public ChinrohtohResolver(MentsuComp comp)
 {
     totalKotsuKantsu = comp.getKotsuCount() + comp.getKantsuCount();
     kotsuList        = comp.getKotsuKantsu();
     janto            = comp.getJanto();
 }
예제 #23
0
 public RyanpeikoResolver(MentsuComp comp)
 {
     shuntsuList = comp.getShuntsuList();
 }
예제 #24
0
 public ChurenpohtohResolver(MentsuComp comp)
 {
     janto       = comp.getJanto();
     shuntsuList = comp.getShuntsuList();
     kotsuList   = comp.getKotsuList();
 }
예제 #25
0
 public ShosushiResolver(MentsuComp comp)
 {
     janto      = comp.getJanto();
     kotsuList  = comp.getKotsuKantsu();
     kotsuCount = comp.getKotsuCount() + comp.getKantsuCount();
 }
예제 #26
0
 public RinshankaihohResolver(MentsuComp comp, PersonalSituation personalSituation)
 {
     this.comp = comp;
     this.personalSituation = personalSituation;
 }
예제 #27
0
 public ShosangenResolver(MentsuComp comp)
 {
     janto     = comp.getJanto();
     kotsuList = comp.getKotsuKantsu();
 }
예제 #28
0
 public ToitoihoResolver(MentsuComp comp)
 {
     kotsuCount = comp.getKantsuCount() + comp.getKotsuCount();
 }
예제 #29
0
 public HakuResolver(MentsuComp comp)
 {
     kotsuList = comp.getKotsuKantsu();
 }
예제 #30
0
 public ChitoitsuResolver(MentsuComp comp)
 {
     toitsuCount = comp.getToitsuCount();
 }