扑克牌游戏,总是能用到很多的手牌排序,总结了几种方式供参考,顺便记录一下方便以后使用。
我做的这个是由(1-13:黑桃a - k | | 14 - 26:红桃| | 27 - 39:梅花| | 39 - 52:方片| | 53.54:小王。大王)表示的一副扑克牌,这样对数组除以13等于扑克花色(如:25/13=2是红桃),对数组值取模等于扑克点数(如:25% 13=12是Q,这样25就表示了红桃问的扑克牌。
当处理特殊规则的时候单独写一个列表,在组拼就可以了。
比如说:赖子斗地主的时候,当选出赖子牌之后,就需要对手牌再次排序,那么新列表来存一下赖子牌,选定赖子牌之后,存到列表中,再次调用排序,组拼就可以实现,你想要的手牌排序的数组,那么在通过某种形式让他显示出来就可以了。
<强>上代码:强>
//参数:要排序的牌值数组,数组长度 公共int [] PaiXu (int[]卡,int数=0) {//调试。日志(“…对手牌进行牌值花色的排序……”); 如果(数量==0){=card.Length;} 如果卡。长度==0){回帖;}//==========根据牌值进行排序===============int temp=0; for (int i=0;我& lt;card.Length;我+ +)//冒泡排序……从大到小 { for (int j=0;j & lt;卡。长度- 1——我;j + +) { 如果卡[j] & lt;卡[j + 1]) { temp=卡[j]; 卡[j]=卡[j + 1); 卡(j + 1)=temp; } } } List黑=new List (); List 香港=new List (); List 美=new List (); List 方=new List (); List 王=new List (); for (int i=0;我& lt;card.Length;我+ +) {=======#区域根据花色分组. .大小王单独一组……后续对花色中的一个单独处理=========开关(sendFlower(卡[我])) { 案例3://黑桃 hei.Add(卡[我]); 打破; 案例2://红桃 hong.Add(卡[我]); 打破; 案例1://梅花 mei.Add(卡[我]); 打破; 例0://方片 fang.Add(卡[我]); 打破; 案例4://小王 案例5://大王 wang.Add(卡[我]); 打破; } # endregion } 作为(黑);//对的单独处理 作为(香港); 作为(美); 作为(方); #地区==========合并排序后的牌组========List cardlist=new List (); for (int i=0;我& lt;wang.Count;我+ +)//王 { cardlist.Add(王[我]); }//==========合并组拼============List cardtemp=new List (); cardtemp=PaiXuZuPin(黑、香港美,方); for (int i=0;我& lt;cardtemp.Count;我+ +) { cardlist.Add (cardtemp[我]); } int[]牌=new int [cardlist.Count]; for (int i=0;我& lt;cardlist.Count;我+ +) { 卡[我]=cardlist[我]; } # endregion 返回卡; }///& lt; summary>///取,把每个花色牌中的一个,放到前面(A.K.Q.J…)///& lt;/summary>///& lt;参数name="黑"祝辞花色牌& lt;/param> 无效的必要(List 黑) { 如果(黑。数==0)返回; List cardlist=new List (); for (int i=0;我& lt;hei.Count;我+ +)//将牌添加到新列的表 { [我]cardlist.Add(黑); } 如果(黑。数比;2) { 如果(黑(黑。数- 2]% 13==1)//如果有两个一个(对两幅牌的处理) { cardlist。插入(0,黑(黑。数- 2]); cardlist。插入(0,黑(黑。数- 1)); for (int i=0;我& lt;hei.Count;我+ +) { 黑[我]=cardlist[我]; } 返回; } } 如果(黑(黑。数- 1)% 13==1)//如果有一个 { cardlist。插入(0,黑(黑。数- 1)); } for (int i=0;我& lt;hei.Count;我+ +) { 黑[我]=cardlist[我]; } }///& lt; summary>///根据传入牌组的顺序进行组拼///& lt;/summary> 公共List PaiXuZuPin (List 公共int sendFlower (int卡) { 如果卡在=1,,卡& lt;=13) { 返回3; }else if(卡祝辞=14,,卡& lt;=26) { 返回2; } else if(卡祝辞=27,,卡& lt;=39) { 返回1; } else if(卡祝辞=40,,卡& lt;=52) { 返回0; } else if(卡==53) { 返回4; } 返回5; }
PS:代码仅供参考,优化自行处理
<强>总结强>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接