用C#编写三国杀(二):牌堆的设计
2010-09-30 22:47:08 来源:WEB开发网前一节说到了一些基础性的定义。这一节开始将进入流程的分析。
首先,在游戏的场景建立之后,你就必须有一个牌堆。对于目前的需求来说,只要有手牌的牌堆即可;尽管后面可能还要有身份牌堆和武将牌堆,但目前只考虑手牌,即游戏牌。于是有以下定义:
/// <summary>
/// 定义牌堆的基本类型。
/// </summary>
/// <typeparam name="T">参数类型。</typeparam>
public abstract class CardHeap<T> : Collection<T>
{
}
定义为抽象的,是我希望能提供一些通用的方法以简化其他牌堆的设计。
对于牌堆来说,其一个重要的功能就是能够压出牌以供使用,因此定义如下:
压牌
/// <summary>
/// 从牌堆中压出指定数量的牌,这些牌将会从牌堆中移除。
/// </summary>
/// <param name="number">要压出的牌的数量。</param>
/// <returns>所压出的牌的数组。</returns>
public T[] Pop(int number)
{
if (number <= 0)
return new T[0];
if (Items.Count < number)
number = Items.Count;
T[] newT = new T[number];
for (int i = 0; i < number; i++)
{
newT[i] = Items.First();
Items.RemoveAt(0);
}
return newT;
}
更多精彩
赞助商链接