⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deck.cs

📁 basic source code to study component based software engineering
💻 CS
字号:
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;

namespace LotsOfFun.Games
{
    public partial class Deck : Component
    {

        
        public Deck(System.ComponentModel.IContainer container)
        {
            container.Add(this);
            InitializeComponent();
            MakeDeck();
        }

        public Deck()
        {
            InitializeComponent();
            MakeDeck();
        }

        private Suit[] m_suits = { Suit.Clubs, Suit.Diamonds, Suit.Hearts, Suit.Spades };
        [Category("Game")]
        [Description("The suits in the deck.")]

        public Suit[] Suits
        {
            get { return m_suits; }
            set
            {
                m_suits = value;
                this.MakeDeck();
            }
        }

        private FaceValue[] m_faceValues = { FaceValue.Ace, FaceValue.Two, FaceValue.Three, FaceValue.Four, FaceValue.Five, FaceValue.Six, FaceValue.Seven, FaceValue.Eight, FaceValue.Nine, FaceValue.Ten, FaceValue.Jack, FaceValue.Queen, FaceValue.King };
        [Category("Game")]
        [Description("The face values in the deck.")]

        public FaceValue[] FaceValues
        {
            get { return m_faceValues; }
            set
            {
                m_faceValues = value;
                this.MakeDeck();
            }
        }

        System.Collections.ArrayList m_cards = new System.Collections.ArrayList();
        private void MakeDeck()
        {
            for (int count = 0; count < m_cards.Count; count++)
            {
                ((Card)m_cards[count]).Dispose();
            }
            m_cards.Clear();

            for (int asuit = 0; asuit < m_suits.Length; asuit++)
            {
                for (int avalue = 0; avalue < m_faceValues.Length; avalue++)
                {
                    m_cards.Add(new Card(m_suits[asuit], m_faceValues[avalue]));
                }
            }
        }

        public void Shuffle()
        {
            System.Random rgen = new System.Random();
            System.Collections.ArrayList newdeck = new System.Collections.ArrayList();
            while (m_cards.Count > 0)
            {
                int toremove = rgen.Next(0, m_cards.Count - 1);
                Card remove = (Card)m_cards[toremove];
                m_cards.Remove(remove);
                newdeck.Add(remove);
            }
            m_cards = newdeck;
        }

        [Category("Game")]
        [Description("Number of cards in the deck.")]
        public int Count
        {
            get { return m_cards.Count; }
        }

        public Card this[int indexer]
        {
            get
            {
                if ((indexer >= 0) && (indexer < m_cards.Count))
                {
                    return ((Card)m_cards[indexer]);
                }
                else
                {
                    throw new ArgumentOutOfRangeException("Index out of range.");
                }
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -