public void TestMethod1() { var result = CardListGenerator.GenerateDoubleJokerCardList(); // 54枚のカードのリストか? Assert.AreEqual(54, result.Count); // 各カードは一枚づつか? foreach (CardId id in Enum.GetValues(typeof(CardId))) { Assert.AreEqual(1, result.Count(e => e.Id == id)); } // 各カードのSuitのNumberの検証 Assert.AreEqual(2, result.Count(e => e.Suit == Suit.None)); Assert.AreEqual(13, result.Count(e => e.Suit == Suit.Spades)); Assert.AreEqual(13, result.Count(e => e.Suit == Suit.Hearts)); Assert.AreEqual(13, result.Count(e => e.Suit == Suit.Diamonds)); Assert.AreEqual(13, result.Count(e => e.Suit == Suit.Clubs)); Assert.AreEqual(2, result.Count(e => e.Rank == Rank.None)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.Ace)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.Two)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.Three)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.Four)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.Five)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.Six)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.Seven)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.Eight)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.Nine)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.Ten)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.Jack)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.Queen)); Assert.AreEqual(4, result.Count(e => e.Rank == Rank.King)); }
public static Klondike Generate() { var dictionary = new Dictionary <Card, IPosition>(); var cards = CardListGenerator.GenerateNoJokerShuffledCardList(); var cardListIndex = 0; foreach (Column column in Enum.GetValues(typeof(Column))) { for (var i = 0; i < (int)column; i++) { dictionary.Add(cards[cardListIndex++], new Tableau(column, i, false)); } dictionary.Add(cards[cardListIndex++], new Tableau(column, (int)column, true)); } for (int i = 0; cardListIndex < cards.Count; i++) { dictionary.Add(cards[cardListIndex++], new Stock(i)); } return(new Klondike(dictionary)); }
public static Pyramid GeneratePyramid() { var dictionary = new Dictionary <Card, IPosition>(); var cardList = CardListGenerator.GenerateNoJokerShuffledCardList(); var cardListIndex = 0; for (int row = Field.RowMin; row < Field.RowMaxCount; row++) { for (int number = 0; number <= row; number++) { dictionary.Add(cardList[cardListIndex++], new Field(row, number)); } } // 残りは山札 for (int i = 0; cardListIndex < cardList.Count; i++) { dictionary.Add(cardList[cardListIndex++], new Deck(i)); } // ジョーカー2枚はフリースペースに dictionary.Add(Card.Joker, new FreeSpace(0)); dictionary.Add(Card.ExtraJoker, new FreeSpace(1)); return(new Pyramid(dictionary)); }
/// <summary> /// 全てのカードを山札に配置したCalculationを生成する。 /// </summary> /// <returns>生成したCalculation</returns> public static Calculation GenerateAllStockGame() { return(new Calculation( CardListGenerator.GenerateNoJokerShuffledCardList() .Select((card, index) => (card, index)) .ToDictionary(pair => pair.card, pair => (IPosition) new Stock(pair.index)))); }
public void TestMethod2() { var result = CardListGenerator.GenerateSingleJokerCardList(); // ExtraJokerを除く53枚のカードか Assert.AreEqual(53, result.Count); Assert.IsFalse(result.Contains(Card.ExtraJoker)); }
public void TestMethod3() { var result = CardListGenerator.GenerateNoJokerCardList(); // Joker,ExtraJokerを除く52枚のカードか Assert.AreEqual(52, result.Count); Assert.IsFalse(result.Contains(Card.Joker)); Assert.IsFalse(result.Contains(Card.ExtraJoker)); }
public static FreeCell Generate() { var dictionary = new Dictionary <Card, IPosition>(); var cards = CardListGenerator.GenerateNoJokerShuffledCardList(); var cardListIndex = 0; foreach (Column column in Enum.GetValues(typeof(Column))) { for (var i = 0; i < (column <= Column.Fourth ? 7 : 6); i++) { dictionary.Add(cards[cardListIndex++], new Tableau(column, i)); } } return(new FreeCell(dictionary)); }
/// <summary> /// 各台札にA,2,3,4を配置したCalculationを生成する。 /// </summary> /// <returns>生成したCalculation</returns> public static Calculation Generate() { var dictionary = new Dictionary <Card, IPosition>(); var cards = CardListGenerator.GenerateNoJokerShuffledCardList(); var ace = cards.First(e => e.Rank == Rank.Ace); dictionary.Add(ace, new Foundation(FoundationColumn.First)); cards.Remove(ace); var two = cards.First(e => e.Rank == Rank.Two); dictionary.Add(two, new Foundation(FoundationColumn.Second)); cards.Remove(two); var three = cards.First(e => e.Rank == Rank.Three); dictionary.Add(three, new Foundation(FoundationColumn.Third)); cards.Remove(three); var four = cards.First(e => e.Rank == Rank.Four); dictionary.Add(four, new Foundation(FoundationColumn.Fourth)); cards.Remove(four); var drawCard = cards[0]; dictionary.Add(drawCard, new WastePile()); cards.Remove(drawCard); for (int i = 0; i < cards.Count; i++) { dictionary.Add(cards[i], new Stock(i)); } return(new Calculation(dictionary)); }
public static NotFantanDomino Generate() { var cardList = CardListGenerator.GenerateNoJokerShuffledCardList(); var dictionary = new Dictionary <Card, Position>(); while (cardList.Count() > 0) { foreach (var playerNumber in Enum.GetValues(typeof(PlayerNumber))) { dictionary.Add(cardList.Dequeue(), (Position)playerNumber); if (cardList.Count() <= 0) { break; } } } return(new NotFantanDomino(dictionary)); }
/// <summary> /// ジョーカー2枚のGolfを生成 /// </summary> /// <param name="canLoop">AとK(13)の間で行き来できるか。</param> /// <returns>生成したGolf</returns> public static Golf GenerateDoubleJokerGolf(bool canLoop) { return(GenerateGolf(CardListGenerator.GenerateDoubleJokerShuffledCardList(), canLoop)); }