关于扑克牌及相关的几个类其他就没有什么可说的了,大家看代码就可以了。
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
