大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> NET专区 -> 一个扑克游戏的诞生---扑克牌及相关类代码兼谈异常(下)

一个扑克游戏的诞生---扑克牌及相关类代码兼谈异常(下)

时间: 2021-07-31 作者:daque

file: cardcollection.csusing system;using system.diagnostics ;namespace bigeagle.games.cards{/// <summary>/// 牌汇合/// <br>author: bigeagle</br>/// <br>date: 2002/4/19</br>/// <br>history: 2002/4/19</br>/// </summary>public class cardcollection : system.collections.icollection{#region 分子变量/// <summary>/// 牌数组/// </summary>protected card[] m_arrcards ;/// <summary>/// 巨细/// </summary>protected int m_intsize ;/// <summary>/// 结果一个灵验元素的索引/// </summary>protected int m_intcapacity;#endregion#region 结构因变量/// <summary>/// 结构因变量/// </summary>public cardcollection(){this.m_arrcards = new card[16] ;this.m_intcapacity = -1 ;this.m_intsize = 0 ;}#endregion#region 类本领/// <summary>/// 从新树立含量/// </summary>/// <param name="capacity">要树立的含量</param>private void setcapacity(int capacity) {card[] cards = new card[capacity];if (this.m_intsize > 0) {if (this.m_intcapacity > 0) {array.copy(this.m_arrcards , 0 , cards , 0, this.m_intsize) ;} //else //{//array.copy(this.m_arrcards , 0 , cards , 0, this.m_arrcards.length);//array.copy(this.m_arrcards , 0 , cards , this.m_arrcards.length, this.m_intcapacity);//}}//this.m_intsize = capacity ;this.m_arrcards = cards ;//this.m_intcapacity = this.m_intsize -1 ;}/// <summary>/// 博得元素/// </summary>/// <param name="i"></param>/// <returns></returns>internal object getelement(int i){if(i < 0 || i >= this.m_intsize){throw(new indexoutofrangeexception()) ;}return this.m_arrcards[i] ;}/// <summary>/// 增添一个元素/// </summary>/// <param name="a_objcard"></param>public void add(card a_objcard){foreach(card c in this.m_arrcards){if(c != null && c.equals(a_objcard)){throw(new cardalreadyexistsexception(c , "牌仍旧生存")) ;}}if (this.m_intcapacity == this.m_arrcards.length -1) {int newcapacity = this.m_arrcards.length + 16 ;setcapacity(newcapacity);}this.m_intcapacity ++ ;this.m_arrcards[this.m_intcapacity] = a_objcard;this.m_intsize ++ ;//this.m_intcapacity ++ ;//this.m_intsize ++ ;}/// <summary>/// 简略元素/// </summary>/// <param name="a_objcard">要简略的card东西</param>public void remove(card a_objcard){card[] cards = new card[this.m_arrcards.length] ;int intindex = -1 ;for(int i = 0 ; i < this.m_arrcards.length ; i ++){if(a_objcard == this.m_arrcards[i]){intindex = i ;break ;}}if(intindex == -1){throw(new cardnotfoundexception(a_objcard , "汇合中未找到指定东西")) ;}else{removeat(intindex) ;}}//end method/// <summary>/// 简略元素/// </summary>/// <param name="a_intindex">要简略元素的索引</param>public void removeat(int a_intindex){card[] cards = new card[this.m_arrcards.length] ;if(a_intindex < 0 || a_intindex > this.m_intsize - 1){throw(new indexoutofrangeexception()) ;}else{if(a_intindex > 0){array.copy(this.m_arrcards , 0 , cards , 0 , a_intindex) ;array.copy(this.m_arrcards , a_intindex + 1 , cards , a_intindex , this.m_arrcards.length - a_intindex -1) ;}else{array.copy(this.m_arrcards , 1 , cards , 0 , this.m_arrcards.length - 1) ;}this.m_arrcards = cards ;this.m_intcapacity -- ;this.m_intsize -- ;}}/// <summary>/// 排序/// </summary>/// <param name="a_bisreverse">排序目标,为真则从大到小陈设,要不自小到大陈设</param>//public void sort(bool a_bisreverse)//{//card temp = new card() ;//for(int i = 0 ; i < this.m_arrcards.length ; i ++)//{////}//}#endregion//end 类本领#region 重写父接口本领。/// <summary>/// 正片数组/// </summary>/// <param name="array">数组东西</param>/// <param name="index">索引</param>public void copyto(system.array array, int index){this.m_arrcards.copyto(array , index) ;}/// <summary>/// 博得灵验元素数/// </summary>public int count{get{return this.m_intsize ;}}public bool issynchronized{get{return false ;}}public object syncroot{get{return this;}}public system.collections.ienumerator getenumerator(){return (new cardenumerator(this)) ;}/// <summary>/// 重载博得哈希值/// </summary>/// <returns></returns>public override int gethashcode(){int result = 0 ;for(int i = 0 ; i < this.m_intsize ; i ++){result += this.m_arrcards[i].gethashcode() ;}return result;}#endregion#region 静态本领/// <summary>/// 博得一副牌/// </summary>/// <param name="a_bincludejoker"></param>/// <returns></returns>public static cardcollection generatecards(bool a_bincludejoker){//偶尔数组cardcollection temp = new cardcollection() ;//爆发一个程序牌汇合if(a_bincludejoker){temp.add(new joker()) ;temp.add(new vicejoker()) ;}card card ;for(int i = 0 ; i < 4 ; i ++){for(int j = 14 ; j > 1 ; j --){card = new card() ;card.colors = (cardcolors)i ;card.number = (cardnumbers)j ;temp.add(card) ;}}return temp ;}//end method/// <summary>/// 天生一副随机程序的牌/// </summary>/// <param name="a_bincludejoker">能否囊括巨细王</param>/// <returns>一副牌,即使囊括巨细王归来54张牌,要不归来52张</returns>public static cardcollection generaterandomcards(bool a_bincludejoker){//截止cardcollection result = new cardcollection() ;//偶尔数组cardcollection temp = new cardcollection() ;//所有爆发的牌数int intcardcount = a_bincludejoker ? 54 : 52 ; temp = cardcollection.generatecards(a_bincludejoker) ;//随机排出程序//用功夫做健将数,用unchecked要害字提防溢出int seed = unchecked((int)datetime.now.ticks) ;random random = new random(seed) ;int index = 0 ;while(temp.count > 0){index = random.next(temp.count) ;result.add(temp[index]) ;temp.removeat(index) ;}return result ;}//end method#endregion#region 索引器/// <summary>/// 索引器/// </summary>public card this[int index]{get{if(index < 0 || index > this.count){throw(new indexoutofrangeexception()) ;}return this.m_arrcards[index] ;}set{if(index < 0 || index > this.count){throw(new indexoutofrangeexception()) ;}this.m_arrcards[index] = value ;}}#endregion#region 嵌套类/// <summary>/// 牌汇合迭代/// <br>author: bigeagle</br>/// <br>date: 2002/4/19</br>/// <br>history: 2002/4/19</br>/// </summary>public class cardenumerator : system.collections.ienumerator{private cardcollection m_objcollection;private int m_intindex;private object m_objcurrentelement;/// <summary>/// 结构因变量/// </summary>/// <param name="a_objcardcollection"></param>internal cardenumerator(cardcollection a_objcardcollection) {this.m_objcollection = a_objcardcollection ;this.m_intindex = 0 ;this.m_objcurrentelement = this.m_objcollection.m_arrcards ;if (this.m_objcollection.m_intsize == 0)this.m_intindex = -1;}/// <summary>/// 移到下一个元素/// </summary>/// <returns>即使索引小于0归来假,要不归来真</returns>public bool movenext(){if (this.m_intindex < 0) {this.m_objcurrentelement = this.m_objcollection.m_arrcards ;return false;}this.m_objcurrentelement = this.m_objcollection.getelement(this.m_intindex) ;this.m_intindex ++ ;if (this.m_intindex == this.m_objcollection.m_intsize){this.m_intindex = -1;}return true;}/// <summary>/// 重置/// </summary>public void reset(){if (this.m_objcollection.m_intsize == 0){this.m_intindex = -1;}else{this.m_intindex = 0;}this.m_objcurrentelement = this.m_objcollection.m_arrcards ;}/// <summary>/// 暂时元素/// </summary>public object current{get {if (this.m_objcurrentelement == this.m_objcollection.m_arrcards){if (this.m_intindex == 0)throw new invalidoperationexception("失效操纵");elsethrow new invalidoperationexception("失效操纵");}return this.m_objcurrentelement ;}}}//end class#endregion}//endclass}//end namespace

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.