本程式包含了鬥地主小遊戲以下幾個部分:
1.打亂牌堆的54張牌所對應的54個數字(1-54)
2.發牌
3.排序
4.數字與牌型的轉換
5.3位玩家叫地主及搶地主機制的實現
6.特殊情況:3位玩家均不叫地主情況的解決
隨機執行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)
第一張圖表示:三位玩家都搶地主,且最後沒有讓步,因此是第乙個表態的玩家獲得地主。
第二張圖表示:三位玩家都搶地主,但首位表態玩家讓步,第二位沒有讓步,第二位玩家獲得地主。
第三張圖表示:三位玩家都不叫地主,遊戲進行重開,且到了第三局仍沒有玩家叫地主,系統強制令本輪首位表態玩家成為地主。
模擬鬥地主洗牌和發牌
分析 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 用於記錄每張牌是否被...