Example #1
0
        /// <summary>
        /// 全ての牌のリストを組み立てます
        /// </summary>
        /// <returns>全ての牌のリスト</returns>
        private static IEnumerable <uint> BuildTiles()
        {
            var numbers    = Enumerable.Range(1, 9);
            var count      = Enumerable.Range(0, 4);
            var kinds      = IEnumerableHelper.GetEnums <Tile.Kind>().Where(k => k != Tile.Kind.Undefined);
            var suitsTiles = kinds.Where(k => k.GetGroup() == Tile.Group.Suits).
                             SelectMany(k => numbers, (k, n) => $"{n}{Tile.JapaneseName.Get(k)}").
                             SelectMany(t => count, (t, c) => t);
            var honoursTiles = kinds.Where(k => k.GetGroup() == Tile.Group.Honours).
                               SelectMany(k => count, (k, i) => Tile.JapaneseName.Get(k));
            var tiles = suitsTiles.Concat(honoursTiles);

            return(tiles.Select(Tile.BuildTile));
        }
Example #2
0
 /// <summary>
 /// 使用可能な風のリストを取得します。
 /// </summary>
 /// <returns>使用可能な風のリスト</returns>
 public IEnumerable <Wind.Index> GetAvailableWinds()
 {
     return(IEnumerableHelper.GetEnums <Wind.Index>().
            Where(w => w != Wind.Index.Undefined).
            Except(this.Players.Select(p => p.Key)));
 }
Example #3
0
 /// <summary>
 /// 有効な全ての牌種を取得します。
 /// </summary>
 /// <returns>有効な全ての牌種</returns>
 public static IEnumerable <Kind> GetAllValidKinds()
 {
     return(IEnumerableHelper.GetEnums <Kind>()
            .Where(k => k != Kind.Undefined && k != Kind.Empty));
 }