コード例 #1
0
ファイル: Test.cs プロジェクト: jlyonsmith/csharp_2_swift
        public void DealDrawPile()
        {
            int priorScore = this.Score;

            Score--;
            NumMoves++;

            List <CardAction> actions  = new List <CardAction>();
            List <Card>       drawPile = DrawPiles.Last();

            for (int cardIndex = PlayPiles.Length - 1; cardIndex >= 0; cardIndex--)
            {
                // NOTE: Zero is the lowest card in the draw pile
                Card card      = drawPile[cardIndex];
                int  pileIndex = PlayPiles.Length - cardIndex - 1;

                card.FaceUp = true;
                PlayPiles[pileIndex].Add(card);
                actions.Add(new CardAction(
                                card, CardActionType.Move, card.Location,
                                card.Location = new CardLocation(PileType.Play, pileIndex, PlayPiles[pileIndex].Count - 1)));
            }

            DrawPiles.RemoveAt(DrawPiles.Count - 1);

            // Check for discards and subsequence card flips in each of the play piles
            DiscardSideEffects[] sideEffects = null;

            for (int i = 0; i < GameBoard.NumPlayPiles; i++)
            {
                bool flippedCard;

                if (TryAndDiscardCards(i, actions, out flippedCard))
                {
                    if (sideEffects == null)
                    {
                        sideEffects = new DiscardSideEffects[NumPlayPiles];
                    }

                    sideEffects[i] = DiscardSideEffects.DiscardedAfterDraw | (flippedCard ? DiscardSideEffects.FlipAfterDiscard : 0);
                }
            }

            Move move = new DrawMove(priorScore, sideEffects);

            this.SavedMoves.Push(move);

            if (GameBoardEvents != null)
            {
                GameBoardEvents.DrawMoveComplete(new ReadOnlyCollection <CardAction>(actions));
            }
        }
コード例 #2
0
ファイル: Test.cs プロジェクト: jlyonsmith/csharp_2_swift
        private void UndoDrawMove(DrawMove move)
        {
            List <CardAction> actions = new List <CardAction>();

            if (move.SideEffects != null)
            {
                for (int i = 0; i < move.SideEffects.Count; i++)
                {
                    if ((move.SideEffects[i] & DiscardSideEffects.DiscardedAfterDraw) != 0)
                    {
                        if ((move.SideEffects[i] & DiscardSideEffects.FlipAfterDiscard) != 0)
                        {
                            FlipBottomCardFaceDown(i, actions);
                        }

                        ReturnCards(i, actions);
                    }
                }
            }

            List <Card> drawPile = new List <Card>(GameBoard.NumPlayPiles);

            DrawPiles.Add(drawPile);

            for (int pileIndex = PlayPiles.Length - 1; pileIndex >= 0; pileIndex--)
            {
                List <Card> fromPile  = PlayPiles[pileIndex];
                Card        card      = fromPile.Last();
                int         cardIndex = PlayPiles.Length - 1 - pileIndex;

                drawPile.Add(card);
                fromPile.RemoveAt(fromPile.Count - 1);

                actions.Add(
                    new CardAction(card, CardActionType.Move, card.Location,
                                   card.Location = new CardLocation(PileType.Draw, DrawPiles.Count - 1, cardIndex)));
            }

            this.Score = move.PriorScore;
            this.NumMoves++;

            if (GameBoardEvents != null)
            {
                GameBoardEvents.UndoDrawMoveComplete(new ReadOnlyCollection <CardAction>(actions));
            }
        }
コード例 #3
0
ファイル: DrawMoveFixture.cs プロジェクト: zessiez/always
        public void TestEquals()
        {
            var m1 = new DrawMove(Player.One, PileName.Discard);
            var m2 = new DrawMove(Player.Two, PileName.Discard);
            var m3 = new DrawMove(Player.One, PileName.Discard);
            var m4 = new DrawMove(Player.One, PileName.Stock);
            var m5 = new DrawMove(Player.One, PileName.Stock);


            Assert.True(m1.Equals(m3));
            Assert.True(m3.Equals(m1));
            Assert.True(m4.Equals(m5));
            Assert.True(m1.Equals(m1));

            Assert.False(m1.Equals(null));

            Assert.False(m1.Equals(m2));
            Assert.False(m2.Equals(m1));
            Assert.False(m1.Equals(m4));
            Assert.False(m5.Equals(m2));
        }
コード例 #4
0
ファイル: Test.cs プロジェクト: jlyonsmith/swift-tools
        private void UndoDrawMove(DrawMove move)
        {
            List<CardAction> actions = new List<CardAction>();

            if (move.SideEffects != null)
            {
                for (int i = 0; i < move.SideEffects.Count; i++)
                {
                    if ((move.SideEffects[i] & DiscardSideEffects.DiscardedAfterDraw) != 0)
                    {
                        if ((move.SideEffects[i] & DiscardSideEffects.FlipAfterDiscard) != 0)
                            FlipBottomCardFaceDown(i, actions);

                        ReturnCards(i, actions);
                    }
                }
            }

            List<Card> drawPile = new List<Card>(GameBoard.NumPlayPiles);

            DrawPiles.Add(drawPile);

            for (int pileIndex = PlayPiles.Length - 1; pileIndex >= 0; pileIndex--)
            {
                List<Card> fromPile = PlayPiles[pileIndex];
                Card card = fromPile.Last();
                int cardIndex = PlayPiles.Length- 1 - pileIndex ;

                drawPile.Add(card);
                fromPile.RemoveAt(fromPile.Count - 1);

                actions.Add(
                    new CardAction(card, CardActionType.Move, card.Location,
                        card.Location = new CardLocation(PileType.Draw, DrawPiles.Count - 1, cardIndex)));
            }

            this.Score = move.PriorScore;
            this.NumMoves++;

            if (GameBoardEvents != null)
                GameBoardEvents.UndoDrawMoveComplete(new ReadOnlyCollection<CardAction>(actions));
        }
コード例 #5
0
ファイル: Test.cs プロジェクト: jlyonsmith/swift-tools
        public void DealDrawPile()
        {
            int priorScore = this.Score;

            Score--;
            NumMoves++;

            List<CardAction> actions = new List<CardAction>();
            List<Card> drawPile = DrawPiles.Last();

            for (int cardIndex = PlayPiles.Length - 1; cardIndex >= 0; cardIndex--)
            {
                // NOTE: Zero is the lowest card in the draw pile
                Card card = drawPile[cardIndex];
                int pileIndex = PlayPiles.Length - cardIndex - 1;

                card.FaceUp = true;
                PlayPiles[pileIndex].Add(card);
                actions.Add(new CardAction(
                    card, CardActionType.Move, card.Location,
                    card.Location = new CardLocation(PileType.Play, pileIndex, PlayPiles[pileIndex].Count - 1)));
            }

            DrawPiles.RemoveAt(DrawPiles.Count - 1);

            // Check for discards and subsequence card flips in each of the play piles
            DiscardSideEffects[] sideEffects = null;

            for (int i = 0; i < GameBoard.NumPlayPiles; i++)
            {
                bool flippedCard;

                if (TryAndDiscardCards(i, actions, out flippedCard))
                {
                    if (sideEffects == null)
                    {
                        sideEffects = new DiscardSideEffects[NumPlayPiles];
                    }

                    sideEffects[i] = DiscardSideEffects.DiscardedAfterDraw | (flippedCard ? DiscardSideEffects.FlipAfterDiscard : 0);
                }
            }

            Move move = new DrawMove(priorScore, sideEffects);

            this.SavedMoves.Push(move);

            if (GameBoardEvents != null)
                GameBoardEvents.DrawMoveComplete(new ReadOnlyCollection<CardAction>(actions));
        }