Пример #1
0
        /**
         * 両面待ちだったかを判定するため
         * 一つ一つの順子と最後の牌について判定する
         *
         * @param shuntsu 判定したい順子
         * @param last    最後の牌
         * @return 両面待ちだったか
         */
        private bool isRyanmen(Shuntsu shuntsu, Tile last)
        {
            //ラスト牌と判定したい順子のtypeが違う場合はfalse
            if (shuntsu.getTile().getType() != last.getType())
            {
                return(false);
            }

            int shuntsuNum = shuntsu.getTile().getNumber();
            int lastNum    = last.getNumber();

            if (shuntsuNum == 2 && lastNum == 1)
            {
                return(true);
            }

            if (shuntsuNum == 8 && lastNum == 9)
            {
                return(true);
            }

            int i = shuntsuNum - lastNum;

            if (i == 1 || i == -1)
            {
                return(true);
            }

            return(false);
        }
Пример #2
0
        public override bool isMatch()
        {
            if (shuntsuCount < 3)
            {
                return(false);
            }

            Shuntsu candidate = null;

            foreach (Shuntsu shuntsu in shuntsuList)
            {
                TileType shuntsuType = shuntsu.getTile().getType();
                int      shuntsuNum  = shuntsu.getTile().getNumber();

                if (candidate == null)
                {
                    candidate = shuntsu;
                    continue;
                }

                if (candidate.getTile().getNumber() == shuntsuNum)
                {
                    detectType(shuntsuType);
                    detectType(candidate.getTile().getType());
                }
                else
                {
                    candidate = shuntsu;
                }
            }
            return(manzu && pinzu && sohzu);
        }
Пример #3
0
        protected int peiko(List <Shuntsu> shuntsuList)
        {
            if (shuntsuList.Count() < 2)
            {
                return(0);
            }

            Shuntsu stockOne = null;
            Shuntsu stockTwo = null;

            int peiko = 0;

            foreach (Shuntsu shuntsu in shuntsuList)
            {
                //鳴いている場合はfalse
                if (shuntsu.isOpen())
                {
                    return(0);
                }

                if (stockOne == null)
                {
                    stockOne = shuntsu;
                    continue;
                }

                //1つ目の盃口が見つかった
                if (stockOne.equals(shuntsu) && peiko == 0)
                {
                    peiko = 1;
                    continue;
                }

                if (stockTwo == null)
                {
                    stockTwo = shuntsu;
                    continue;
                }

                if (stockTwo.equals(shuntsu))
                {
                    return(2);
                }
            }
            return(peiko);
        }