日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

php对扑克牌进行排序,C#代码实现扑克牌排序的几种方式

發布時間:2025/3/11 C# 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php对扑克牌进行排序,C#代码实现扑克牌排序的几种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

撲克牌游戲,總是能用到很多的手牌排序,總結了幾種方式供參考,順便記錄一下方便以后使用。

我做的這個是由(1-13:黑桃A-K || 14 - 26:紅桃 || 27 - 39:梅花 || 39 - 52 : 方片 || 53.54:小王.大王)表示的一副撲克牌,這樣對數組除以13等于撲克花色(如:25/13 = 2 是紅桃),對數組值取模等于撲克點數(如:25%13 = 12 是Q),這樣25就表示了紅桃Q的撲克牌。

當處理特殊規則的時候單獨寫一個List,在組拼就可以了。

比如說:賴子斗地主的時候,當選出賴子牌之后,就需要對手牌再次排序,那么new List來存一下賴子牌,選定賴子牌之后,存到list中,再次調用排序,組拼就可以實現,你想要的手牌排序的數組,那么在通過某種形式讓他顯示出來就可以了。

上代碼 :

//參數:要排序的牌值數組 & 數組長度

public int[] PaiXu(int[] card, int number = 0)

{

//Debug.Log(" ... 對手牌 進行 牌值 花色 的排序 ... ... ");

if (number == 0){ number = card.Length; }

if (card.Length == 0){ return card; }

// ========== 根據牌值進行排序 ===============

int temp = 0;

for (int i = 0; i < card.Length; i++) //冒泡排序... 從大到小

{

for (int j = 0; j < card.Length - 1 - i; j++)

{

if (card[j] < card[j + 1])

{

temp = card[j];

card[j] = card[j + 1];

card[j + 1] = temp;

}

}

}

List hei = new List();

List hong = new List();

List mei = new List();

List fang = new List();

List wang = new List();

for (int i = 0; i < card.Length; i++)

{

#region ======= 根據花色分組 ..大小王 單獨一組 ...后續對花色中的 A 單獨處理 =========

switch (sendFlower(card[i]))

{

case 3: //黑桃

hei.Add(card[i]);

break;

case 2: //紅桃

hong.Add(card[i]);

break;

case 1: //梅花

mei.Add(card[i]);

break;

case 0: //方片

fang.Add(card[i]);

break;

case 4: //小王

case 5: //大王

wang.Add(card[i]);

break;

}

#endregion

}

QuA(hei); // 對A 的單獨處理

QuA(hong);

QuA(mei);

QuA(fang);

#region ========== 合并 排序后的牌組========

List cardlist = new List();

for (int i = 0; i < wang.Count; i++) //王

{

cardlist.Add(wang[i]);

}

// ==========合并 組拼 ============

List cardtemp = new List();

cardtemp = PaiXuZuPin(hei, hong, mei, fang);

for (int i = 0; i < cardtemp.Count; i++)

{

cardlist.Add(cardtemp[i]);

}

int[] cards = new int[cardlist.Count];

for (int i = 0; i < cardlist.Count; i++)

{

cards[i] = cardlist[i];

}

#endregion

return cards;

}

///

/// 取A -- 把每個花色牌中的A,放到前面(A.K.Q.J...)

///

/// 花色牌

void QuA(List hei)

{

if (hei.Count == 0) return;

List cardlist = new List();

for (int i = 0; i < hei.Count; i++) // 將牌添加到新列表

{

cardlist.Add(hei[i]);

}

if (hei.Count > 2)

{

if (hei[hei.Count - 2] % 13 == 1) //如果有兩個A (對兩幅牌的處理)

{

cardlist.Insert(0, hei[hei.Count - 2]);

cardlist.Insert(0, hei[hei.Count - 1]);

for (int i = 0; i < hei.Count; i++)

{

hei[i] = cardlist[i];

}

return;

}

}

if (hei[hei.Count - 1] % 13 == 1) //如果有一個A

{

cardlist.Insert(0, hei[hei.Count - 1]);

}

for (int i = 0; i < hei.Count; i++)

{

hei[i] = cardlist[i];

}

}

///

/// 根據傳入牌組 的順序 進行組拼

///

public List PaiXuZuPin(List one, List two, List three, List four)

{

List cardlist = new List();

for (int i = 0; i < one.Count; i++)

{

cardlist.Add(one[i]);

}

for (int i = 0; i < two.Count; i++)

{

cardlist.Add(two[i]);

}

for (int i = 0; i < three.Count; i++)

{

cardlist.Add(three[i]);

}

for (int i = 0; i < four.Count; i++)

{

cardlist.Add(four[i]);

}

return cardlist;

}

///

/// 根據牌值取花色 5:大王 | 4:小王 | 3:黑桃 | 2:紅桃 | 1:梅花 | 0:方片

///

///

public int sendFlower(int card)

{

if (card >= 1 && card <= 13)

{

return 3;

}else if (card >= 14 && card <= 26)

{

return 2;

}

else if (card >= 27 && card <= 39)

{

return 1;

}

else if (card >= 40 && card <= 52)

{

return 0;

}

else if (card == 53)

{

return 4;

}

return 5;

}

PS:代碼僅供參考,優化自行處理

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

總結

以上是生活随笔為你收集整理的php对扑克牌进行排序,C#代码实现扑克牌排序的几种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。