コード例 #1
0
ファイル: CardDeck.cs プロジェクト: magicmonty/ShuffleMeter
        public static CardDeck FromNewDeckOrder()
        {
            CardDeck result = new CardDeck();

              for (CardValue v = CardValue.Ace; v <= CardValue.King; v++) {
            NormalCard card = new NormalCard(v, Suit.Clubs, AbstractCard.DEFAULT_BACK_COLOR);
            result.addCard(card);
              }

              for (CardValue v = CardValue.Ace; v <= CardValue.King; v++) {
            NormalCard card = new NormalCard(v, Suit.Hearts, AbstractCard.DEFAULT_BACK_COLOR);
            result.addCard(card);
              }

              for (CardValue v = CardValue.King; v >= CardValue.Ace; v--) {
            NormalCard card = new NormalCard(v, Suit.Diamonds, AbstractCard.DEFAULT_BACK_COLOR);
            result.addCard(card);
              }

              for (CardValue v = CardValue.King; v >= CardValue.Ace; v--) {
            NormalCard card = new NormalCard(v, Suit.Spades, AbstractCard.DEFAULT_BACK_COLOR);
            result.addCard(card);
              }

              return result;
        }
コード例 #2
0
        public void shuffle(CardDeck deck)
        {
            if (deck != null && deck.Count > 1) {
            if (this.reverseFrom > this.reverseTo) {
              int temp = this.reverseFrom;
              this.reverseFrom = this.reverseTo;
              this.reverseTo = temp;
            }

            if (this.reverseFrom < 0) {
              this.reverseFrom = 0;
            }

            if (this.reverseTo > deck.Count - 1) {
              this.reverseTo = deck.Count - 1;
            }

            if (this.reverseFrom != this.reverseTo) {
              CardDeck tempDeck = new CardDeck();
              tempDeck.assign(deck);
              deck.clear();

              for (int i = 0; i < this.reverseFrom; i++) {
            deck.addCard(tempDeck.getCardAt(i));
              }

              for (int i = this.reverseTo; i >= this.reverseFrom; i--) {
            deck.addCard(tempDeck.getCardAt(i));
              }

              for (int i = this.reverseTo + 1; i < tempDeck.Count; i++) {
            deck.addCard(tempDeck.getCardAt(i));
              }
            }
              }
        }
コード例 #3
0
        public void shuffle(CardDeck deck)
        {
            CardDeck tempDeck = new CardDeck();
            tempDeck.assign(deck);

            deck.clear();

            Random rnd = new Random();
            int randomIndex;

            while (tempDeck.Count > 0) {
                randomIndex = rnd.Next(tempDeck.Count);

                AbstractCard card = tempDeck.getCardAt(randomIndex);
                deck.addCard(card);
                tempDeck.removeCardAt(randomIndex);
            }
        }
コード例 #4
0
        public void shuffle(CardDeck deck)
        {
            List<AbstractCard> help = new List<AbstractCard>();
            for (int i = 0; i < deck.Count; i++) {
                help.Add(new NormalCard());
            }

            for (int i = 0; i < deck.Count; i++) {
                if (this.OutFaro) {
                    if (!this.AntiFaro) {
                        if (2 * i < deck.Count) {
                            help[2 * i].Assign(deck.getCardAt(i));
                        } else {
                            help[(2 * i) - (deck.Count - 1)].Assign(deck.getCardAt(i));
                        }
                    } else {
                        if (2 * i < deck.Count) {
                            help[i].Assign(deck.getCardAt(2 * i));
                        } else {
                            help[i].Assign(deck.getCardAt(2 * i - (deck.Count - 1)));
                        }
                    }
                } else {
                    if (!this.AntiFaro) {
                        if (2 * i + 1 < deck.Count) {
                            help[2 * i + 1].Assign(deck.getCardAt(i));
                        } else {
                            help[2 * i - deck.Count].Assign(deck.getCardAt(i));
                        }
                    } else {
                        if (2 * i + 1 < deck.Count) {
                            help[i].Assign(deck.getCardAt(2 * i + 1));
                        } else {
                            help[i].Assign(deck.getCardAt(2 * i - deck.Count));
                        }
                    }
                }
            }

            deck.clear();
            foreach (AbstractCard card in help) {
                deck.addCard(card);
            }
        }
コード例 #5
0
        public void shuffle(CardDeck deck)
        {
            for (int i = 0; i < deck.Count; i++) {
            AbstractCard card = deck.getCardAt(i);
            if (!((card.faceSide is CardSide) && (card.backSide is BackSide))) {
              return;
            }
              }

              CardDeck tempDeck = new CardDeck();
              tempDeck.assign(deck);

              deck.clear();

              for (CardValue v = CardValue.Ace; v <= CardValue.King; v++) {
            for (int i = 0; i < tempDeck.Count; i++) {
              AbstractCard card = tempDeck.getCardAt(i);
              AbstractSide cside = card.faceSide;

              if (cside is CardSide) {
            CardSide side = (CardSide) cside;
            if ((side.cardValue == v) && (side.suit == Suit.Hearts)) {
              deck.addCard(card);
            }
              }
            }
              }

              for (CardValue v = CardValue.Ace; v <= CardValue.King; v++) {
            for (int i = 0; i < tempDeck.Count; i++) {
              AbstractCard card = tempDeck.getCardAt(i);
              AbstractSide cside = card.faceSide;

              if (cside is CardSide) {
            CardSide side = (CardSide) cside;
            if ((side.cardValue == v) && (side.suit == Suit.Clubs)) {
              deck.addCard(card);
            }
              }
            }
              }

              for (CardValue v = CardValue.King; v >= CardValue.Ace; v--) {
            for (int i = 0; i < tempDeck.Count; i++) {
              AbstractCard card = tempDeck.getCardAt(i);
              AbstractSide cside = card.faceSide;

              if (cside is CardSide) {
            CardSide side = (CardSide) cside;
            if ((side.cardValue == v) && (side.suit == Suit.Diamonds)) {
              deck.addCard(card);
            }
              }
            }
              }

              for (CardValue v = CardValue.King; v >= CardValue.Ace; v--) {
            for (int i = 0; i < tempDeck.Count; i++) {
              AbstractCard card = tempDeck.getCardAt(i);
              AbstractSide cside = card.faceSide;

              if (cside is CardSide) {
            CardSide side = (CardSide) cside;
            if ((side.cardValue == v) && (side.suit == Suit.Spades)) {
              deck.addCard(card);
            }
              }
            }
              }
        }