|
导读关于扑克牌及相关的几个类其他就没有什么可说的了,大家看代码就可以了。file : card.csusing System;using System.Diagnostics ;namespace Bi... 关于扑克牌及相关的几个类其他就没有什么可说的了,大家看代码就可以了。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 |
温馨提示:喜欢本站的话,请收藏一下本站!