欢迎光临
我们一直在努力

建站超值云服务器,限时71元/月

   关于扑克牌及相关的几个类其他就没有什么可说的了,大家看代码就可以了。

file : card.cs

using system;
using system.diagnostics ;
namespace bigeagle.games.cards
{

    #region 枚举
    /// <summary>
    /// 花色的枚举
    /// </summary>
    public enum cardcolors
    {

        /// <summary>
        /// 草花
        /// </summary>
        club = 0 ,

        /// <summary>
        /// 方块
        /// </summary>
        diamond  ,

        /// <summary>
        /// 红心
        /// </summary>
        heart     ,

        /// <summary>
        /// 黑桃
        /// </summary>
        spade ,

        /// <summary>
        /// 没有花色,对应joker
        /// </summary>
        none
}

    /// <summary>
    /// 牌大小的枚举
    /// </summary>
    public enum cardnumbers
    {
        //zero = 0 ,
        two = 2 ,
        three ,
        four ,
        five ,
        six ,
        seven ,
        eight ,
        nine ,
        ten ,
        jack ,
        queen ,
        king ,
        ace ,
        vicejoker ,
        joker
    }
    #endregion

    /// <summary>
    /// 扑克牌类
    /// <br>author: bigeagle</br>
    /// <br>date: 2002/4/19</br>
    /// <br>history: 2002/4/19</br>
    ///
    /// </summary>
    /// <remarks>继承icomparable接口,用于比较</remarks>
    public class card : system.icomparable
    {

        #region 成员变量

        /// <summary>
        /// 花色
        /// </summary>
        protected cardcolors m_enumcolors ;

        /// <summary>
        /// 数字
        /// </summary>
        protected cardnumbers m_enumnumber ;

        #endregion

        #region 属性

        /// <summary>
        /// 存取花色的属性
        /// </summary>
        public cardcolors colors
        {
            get
            {
                return this.m_enumcolors ;
            }
            set
            {
                if(value == cardcolors.none)
                {
                    throw(new invalidoperationexception
                        ("cardcolors.none不能用于card对象")) ;
                }
//                if(value != cardcolors.none)
//                {
//                    this.m_enumcolors = value ;
//                }
                this.m_enumcolors = value ;
            }
        }

        /// <summary>
        /// 存取大小的属性
        /// </summary>
        public cardnumbers number
        {
            get
            {
                return this.m_enumnumber ;
            }
            set
            {
                if(value == cardnumbers.joker
                    || value == cardnumbers.vicejoker)
                {
                    throw(new invalidoperationexception
                        ("zero,joker和vicejoker不能用于card对象")) ;
                }
//                if(value != cardnumbers.joker
//                    && value != cardnumbers.vicejoker )
//                    this.m_enumnumber = value ;
                this.m_enumnumber = value ;
            }
        }

        #endregion

        #region 构造函数

        /// <summary>
        /// 构造函数
        /// </summary>
        public card()
        {
            this.m_enumcolors = cardcolors.club ;
            this.m_enumnumber = cardnumbers.ace ;
        }//end method

        /// <summary>
        /// 重载构造函数
        /// </summary>
        /// <param name="a_enumcolors">花色</param>
        /// <param name="a_enumnumber">大小</param>
        public card(cardcolors a_enumcolors , cardnumbers a_enumnumber)
        {
            if(a_enumcolors == cardcolors.none
                || a_enumnumber == cardnumbers.joker
                || a_enumnumber == cardnumbers.vicejoker)
            {
                throw(new invalidoperationexception
                ("cardcolors.none、cardnumbers.joker和vicejoker不能用于card对象")) ;
                
            }
            else
            {
                this.m_enumcolors = a_enumcolors ;
                this.m_enumnumber = a_enumnumber ;
            }
        }

        #endregion

        #region 改写父类方法

        /// <summary>
        /// 改写tostring方法
        /// </summary>
        /// <returns></returns>
        public override string tostring()
        {
            return this.m_enumcolors.tostring() + " " +  this.m_enumnumber.tostring() ;
        }

        /// <summary>
        /// 重写取得哈希值
        /// </summary>
        /// <returns></returns>
        public override int gethashcode()
        {
            return (int)(system.math.pow(100 , (double)this.m_enumcolors + 1)
                + (double)this.m_enumnumber) ;
        }

        /// <summary>
        /// 重写equals方法
        /// </summary>
        /// <param name="obj">要判断的对象</param>
        /// <returns></returns>
        public override bool equals(object obj)
        {
            //断言
            debug.assert(obj != null , "要比较的对象不能为空") ;

            return obj.gethashcode() == this.gethashcode() ;
        }

        /// <summary>
        /// 改写父接口方法
        /// </summary>
        /// <param name="obj">要比较的对象</param>
        /// <returns>
        /// 小于零 此实例小于 obj。
        /// 零 此实例等于 obj。
        /// 大于零 此实例大于 obj。
        /// </returns>
        public int compareto(object obj)
        {
            if(this.gethashcode() > obj.gethashcode())
            {
                return 1 ;
            }
            else if(this.gethashcode() < obj.gethashcode())
            {
                return -1 ;
            }
            else
            {
                return 0 ;
            }
        }
        
        #endregion

    }//end class
}//end namespace

file: joker.cs

using system;

namespace bigeagle.games.cards
{
    /// <summary>
    /// joker
    /// <br>author: bigeagle</br>
    /// <br>date: 2002/4/20</br>
    /// <br>history: 2002/4/20</br>
    /// </summary>
    /// <remarks>继承card类</remarks>
    public sealed class joker : bigeagle.games.cards.card
    {
        public joker()
        {
            this.m_enumcolors = cardcolors.none ;
            this.m_enumnumber = cardnumbers.joker ;
        }

        /// <summary>
        /// 改写tostring方法
        /// </summary>
        /// <returns></returns>
        public override string tostring()
        {
            return "joker" ;
        }
    }//end method
}//end namespace

file: vicejoker.cs

using system;

namespace bigeagle.games.cards
{
    /// <summary>
    /// vice joker
    /// <br>author: bigeagle</br>
    /// <br>date: 2002/4/19</br>
    /// <br>history: 2002/4/19</br>
    /// </summary>
    public sealed class vicejoker : bigeagle.games.cards.card
    {
        public vicejoker()
        {
            this.m_enumcolors = cardcolors.none ;
            this.m_enumnumber = cardnumbers.vicejoker ;
        }

        /// <summary>
        /// 改写tostring方法
        /// </summary>
        /// <returns></returns>
        public override string tostring()
        {
            return "vicejoker" ;
        }

    }//end class
}//end namespace

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 »
分享到: 更多 (0)

相关推荐

  • 暂无文章