欢迎来到传世资源网!
加载中...
正在加载,请耐心等待...
本站为收藏、学习站,如有侵权,请联系管理员删除!

抽奖类源码

介绍 评论 失效链接反馈

/// <summary> /// 抽奖类 /// </summary> public class Lottery<T> { /// <summary> /// 抽奖次数 /// </summary> public int LotteryNumber { get; set; } /// <summary> /// 抽中事件 /// </summary> public event EventHandler<LuckyEventArgs<T>> LuckEvent; /// <summary> /// 抽失败事件 /// </summary> public event EventHandler<LuckyErrorEventArgs> LuckErrorEvent; /// <summary> /// 外部待要抽奖的清单列表 /// </summary> private List<T> allList = new List<T>(); /// <summary> /// 传进来的副本,内部初始化的时候使用 /// </summary> private List<T> sourceList = new List<T>(); /// <summary> /// 已中奖的清单列表 /// </summary> private List<T> luckyList; /// <summary> /// 锁 /// </summary> private object m_lock = new object(); /// <summary> /// 构造方法 /// </summary> /// <param name="allList"></param> public Lottery(List<T> allList) { this.init(allList,this.sourceList); this.allList = allList; this.luckyList = new List<T>(); } /// <summary> /// 初始化要抽奖的数组 /// </summary> /// <param name="list"></param> /// <param name="targetList"></param> private void init(List<T> list,List<T> targetList) { for (int i = 0; i < list.Count; i ) { targetList.Add(list[i]); } } /// <summary> /// 获得幸运号 /// </summary> /// <returns></returns> public void GetLuckyNumber() { lock (m_lock) { T obj; Random r = new Random(); int num = r.Next(allList.Count); if (this.allList.Count > 0) { obj = this.allList[num]; LotteryNumber ; if (LuckEvent != null) { this.LuckEvent(null,new LuckyEventArgs<T>(obj,this.LotteryNumber)); } //幸运号添加该列表 this.luckyList.Add(obj); //待抽奖的列表里移除该幸运号 this.allList.Remove(obj); // return obj; } else { if (this.LuckErrorEvent != null) { this.LuckErrorEvent(null, new LuckyErrorEventArgs("没有可以抽奖的资源!")); } } } } /// <summary> /// 获得幸运列表 /// </summary> /// <returns></returns> public List<T> GetLuckyList() { return this.luckyList; } /// <summary> /// 重新初始化 /// </summary> public void Reset() { this.allList.Clear(); this.init(this.sourceList, this.allList); this.LotteryNumber = 0; this.luckyList.Clear(); } } /// <summary> /// 抽奖成攻事件信息 /// </summary> /// <typeparam name="T"></typeparam> public class LuckyEventArgs<T>:EventArgs { /// <summary> /// 被抽中的实体 /// </summary> public readonly T args; /// <summary> /// 第几次抽奖 /// </summary> public readonly int lotteryNumber; /// <summary> /// 抽奖产生的抽中事件 /// </summary> /// <param name="args">抽中的实体信息</param> /// <param name="lotteryNumber">抽奖的次数值</param> public LuckyEventArgs(T args, int lotteryNumber) { this.args = args; this.lotteryNumber = lotteryNumber; } } /// <summary> /// 抽奖失败事件信息 /// </summary> public class LuckyErrorEventArgs : EventArgs { /// <summary> /// 抽奖失败的消息 /// </summary> public readonly string msg; /// <summary> /// 抽奖产生的抽奖失败事件 /// </summary> /// <param name="args"></param> public LuckyErrorEventArgs(string msg) { this.msg = msg; } }

下载声明:

本站资源均有第三方用户自行上传分享推荐,非本站自制,仅供玩家做交流学习之用!切勿用于商业用途!游戏作品版权归原作者享有,如有版权问题,请附带版权证明至邮件,本平台将应您的要求删除。
相关推荐:

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复