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();
Listhong=newList();
Listmei=newList();
Listfang=newList();
Listwang=newList();
for(inti=0;icardlist=newList();
for(inti=0;icardtemp=newList();
cardtemp=PaiXuZuPin(hei,hong,mei,fang);
for(inti=0;i
///取A--把每个花色牌中的A,放到前面(A.K.Q.J...)
///
///花色牌
voidQuA(Listhei)
{
if(hei.Count==0)return;
Listcardlist=newList();
for(inti=0;i2)
{
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
///根据传入牌组的顺序进行组拼
///
publicListPaiXuZuPin(Listone,Listtwo,Listthree,Listfour)
{
Listcardlist=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:代码仅供参考,优化自行处理
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接