C#代码实现扑克牌排序的几种方式
扑克牌游戏,总是能用到很多的手牌排序,总结了几种方式供参考,顺便记录一下方便以后使用。
我做的这个是由(1-13:黑桃A-K||14-26:红桃||27-39:梅花||39-52:方片||53.54:小王.大王)表示的一副扑克牌,这样对数组除以13等于扑克花色(如:25/13=2是红桃),对数组值取模等于扑克点数(如:25%13=12是Q),这样25就表示了红桃Q的扑克牌。
当处理特殊规则的时候单独写一个List,在组拼就可以了。
比如说:赖子斗地主的时候,当选出赖子牌之后,就需要对手牌再次排序,那么newList来存一下赖子牌,选定赖子牌之后,存到list中,再次调用排序,组拼就可以实现,你想要的手牌排序的数组,那么在通过某种形式让他显示出来就可以了。
上代码:
//参数:要排序的牌值数组&数组长度 publicint[]PaiXu(int[]card,intnumber=0) { //Debug.Log("...对手牌进行牌值花色的排序......"); if(number==0){number=card.Length;} if(card.Length==0){returncard;} //==========根据牌值进行排序=============== inttemp=0; for(inti=0;ihei=newList (); List hong=newList (); List mei=newList (); List fang=newList (); List wang=newList (); for(inti=0;i cardlist=newList (); for(inti=0;i cardtemp=newList (); cardtemp=PaiXuZuPin(hei,hong,mei,fang); for(inti=0;i ///取A--把每个花色牌中的A,放到前面(A.K.Q.J...) /// /// 花色牌 voidQuA(List hei) { if(hei.Count==0)return; List cardlist=newList (); for(inti=0;i 2) { if(hei[hei.Count-2]%13==1)//如果有两个A(对两幅牌的处理) { cardlist.Insert(0,hei[hei.Count-2]); cardlist.Insert(0,hei[hei.Count-1]); for(inti=0;i ///根据传入牌组的顺序进行组拼 /// publicList PaiXuZuPin(List one,List two,List three,List four) { List cardlist=newList (); for(inti=0;i ///根据牌值取花色5:大王|4:小王|3:黑桃|2:红桃|1:梅花|0:方片 /// /// publicintsendFlower(intcard) { if(card>=1&&card<=13) { return3; }elseif(card>=14&&card<=26) { return2; } elseif(card>=27&&card<=39) { return1; } elseif(card>=40&&card<=52) { return0; } elseif(card==53) { return4; } return5; }
PS:代码仅供参考,优化自行处理
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接