C語言 鬥地主洗牌發牌以及叫 搶地主

2021-10-12 05:11:16 字數 2401 閱讀 3778

本程式包含了鬥地主小遊戲以下幾個部分:

1.打亂牌堆的54張牌所對應的54個數字(1-54)

2.發牌

3.排序

4.數字與牌型的轉換

5.3位玩家叫地主及搶地主機制的實現

6.特殊情況:3位玩家均不叫地主情況的解決

#include

#include

#include

inttrans

(int n)

;int

main()

}printf

("\n下面開始為三位玩家發牌。");

// 發牌部分

for(i=

0;i<

3;i++

)for

(j=0

;j<

17;j++

) player[i]

[j]=result[

3*j+i]

;// 排序部分

int temp,k;

for(i=

0;i<

3;i++

)for

(j=0

;j<

17;j++

)for

(k=j+

1;k<

17;k++)if

(player[i]

[j]>player[i]

[k])

// 轉換部分

for(i=

0;i<

3;i++

)// 搶地主環節,選出乙個玩家優先表態是否叫地主

printf (

"\n\n\n");

int d=

rand()

%3,f[3

],ct=

0,laner;

// 用隨機決定第乙個表態的玩家以及表態計數和地主歸屬的變數定義

for(i=d+

1;i<=

3;i++)if

(f[d]!=0

)//第1位表態的玩家選擇叫地主。

else laner=3;

}}else laner=1;

}else

else laner=2;

}else

if(f[

(d+2)%

3]!=0

) laner=3;

else

else}}

for(i=

0;i<

3;i++)if

(laner==i+1)

for(i=

0;i<

3;i++

)for

(i=0

;i<

20;i++

)for

(j=i+

1;j<

20;j++)if

(player[k-1]

[i]>player[k-1]

[j])

printf

("\n\t 地主手牌為:\t");

for(i=

0;i<

20;i++

)trans

(player[k-1]

[i])

;// 呼叫轉換函式(數字與花色)直接輸出牌型

}// 子函式部分

// 1-54轉換為3,4,5,6,7,8,9,10,j,q,k,a,2各4張,以及大、小王各1張

inttransnum

(int m)

}return0;

}// 1-54轉換固定的花色,按照黑紅梅方順序

inttranstyp

(int n)

return0;

}// 結合數字和花色的同時轉換

inttrans

(int n)

隨機執行3次的結果如下所示:

第一張圖表示:三位玩家都搶地主,且最後沒有讓步,因此是第乙個表態的玩家獲得地主。

第二張圖表示:三位玩家都搶地主,但首位表態玩家讓步,第二位沒有讓步,第二位玩家獲得地主。

第三張圖表示:三位玩家都不叫地主,遊戲進行重開,且到了第三局仍沒有玩家叫地主,系統強制令本輪首位表態玩家成為地主。

模擬鬥地主洗牌和發牌

分析 a 建立乙個牌盒 b 裝牌 c 洗牌 d 發牌 e 看牌 public class test system.out.println public static void main string args 定義乙個點陣列 string numbers for string c colors ar...

鬥地主系列之洗牌和發牌

大家都知道,鬥地主的一副牌有54張,三位玩家,每位17張牌,3張底牌 17 3 3 54 所以,我們定義乙個list listcards new arraylist cards.get 0 cards.get 12 方塊3,方塊4 方塊k,方塊a,方塊2 cards.get 13 cards.get...

C語言 鬥地主發牌程式

題目 仍然是小學期,就當娛樂 貼 include include include 函式宣告 void sortcards int int void showcards int int void changecard int int getonecard int cards 55 用於記錄每張牌是否被...