用C#编写三国杀(二):牌堆的设计
2010-09-30 22:47:08 来源:WEB开发网牌堆定义之后就需要定义洗牌的操作。由于我定义了从Collection<T> 继承,其内部有个IList<T>类型的Items属性,因此编写一个扩展方法,对IList<T>类型的数据进行类似洗牌的操作:
洗牌扩展
/// <summary>
/// 定义对List的扩展方法。
/// </summary>
public static class ListExtension
{
/// <summary>
/// 将IList中的元素进行洗牌操作。
/// </summary>
/// <typeparam name="T">类型参数。</typeparam>
/// <param name="list">所要洗牌的List。</param>
public static void Shuffle<T>(this IList<T> list)
{
Random random = new Random();
int count = list.Count;
for (int i = 0; i < count; i++)
{
int currentIndex = random.Next(0, count - i);
T tempCard = list[currentIndex];
list[currentIndex] = list[count - 1 - i];
list[count - 1 - i] = tempCard;
}
}
}
更多精彩
赞助商链接