/// <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)); }
/// <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))); }
/// <summary> /// 有効な全ての牌種を取得します。 /// </summary> /// <returns>有効な全ての牌種</returns> public static IEnumerable <Kind> GetAllValidKinds() { return(IEnumerableHelper.GetEnums <Kind>() .Where(k => k != Kind.Undefined && k != Kind.Empty)); }