C语言斗地主发牌程序,急求,谢谢

C语言斗地主发牌程序,急求,谢谢,第1张

这是以随机的形式发牌的。希望能帮到你。

int main(){int a[60] int b[60] int w = 0 int wi,wj,wii int i,j,index,x=0,m for(i=0i<54i++)a[i]=i+1 srand((unsigned)time(0)) for(i=0i<54){index=rand()%54 if(a[index]!=0){b[i]=a[index] //printf("%d ",b[i]) a[index]=0 ++i }}printf("\n说明:\n") printf("*******************\n") printf("**红桃 %c ",3) printf("**\n") printf("**方块 %c ",4) printf("**\n") printf("**梅花 %c ",5) printf("**\n") printf("**黑桃 %c ",6) printf("**\n") printf("**大王 A **\n**小王 a **\n") printf("*******************\n") printf("\n请输入打牌人数:\n") scanf("%d",&w) wi = 54/w wj = 54%w //printf("%d,%d",wi,wj) for (j = 0j <wj++){m = 0 printf("\n\n第%d个人的牌\n",j+1) wj -- if (wj>=0)wii = wi + 1 elsewii = wi//红桃printf("红桃 %c ",3) printf(":") for(i = j*wiii<(j+1)*wiii++){if (b[i]<=13&&b[i]>0){m++ if (b[i]==11)printf("J ") else if (b[i]==12)printf("Q ") else if (b[i]==13)printf("K ") elseprintf("%d ",b[i]) }} //方块printf("\n方块 %c ",4) printf(":") for(i = j*wiii<(j+1)*wiii++){if (b[i]<=26&&b[i]>13){m++ b[i] = b[i]-13 if (b[i]==11)printf("J ") else if (b[i]==12)printf("Q ") else if (b[i]==13)printf("K ") elseprintf("%d ",b[i]) }} //梅花printf("\n梅花 %c ",5) printf(":") for(i = j*wiii<(j+1)*wiii++){ if (b[i]<=39&&b[i]>26){m++ b[i] = b[i]-26 if (b[i]==11)printf("J ") else if (b[i]==12)printf("Q ") else if (b[i]==13)printf("K ") elseprintf("%d ",b[i]) }}//黑桃printf("\n黑桃 %c ",6) printf(":") for(i = j*wiii<(j+1)*wiii++){if (b[i]<=52&&b[i]>39){m++ b[i] = b[i]-39 if (b[i]==11)printf("J ") else if (b[i]==12)printf("Q ") else if (b[i]==13)printf("K ") elseprintf("%d ",b[i]) }}//大小王printf("\n大小王 A or a :") for(i = j*wiii<=(j+1)*wiii++){if (b[i]==53){m++ printf("A ") }if (b[i]==54){m++ printf("a ") }}printf("\n总共:%d张牌!!!",m) } }

发牌方法:一副牌,留三张底牌,其他发给三家,从庄家开始按顺时针方向依次发牌。

叫牌方法:首先系统翻出一张明牌,获得明牌的人开始先叫牌,每人只能叫一次,叫牌可以:1分、2分、 3分或不叫,叫完后叫的最大的为地主。

出牌规则:首先将三张底牌交给地主,三张底牌所有人都能看到。由地主开牌,然后按逆时针顺序依次出牌,论到你跟牌时,你可选择PASS或按规则出牌。直至某一方牌出完就结束此局。

扩展资料:

相关技巧

1、算牌,这里涉及到了一个智力问题和习惯问题,有些人没有算牌的习惯,就不能得以精进,只要有了这种习惯,就能在这方面得以提升,先从断张,以及从大至小的牌逐一延升。

2、打牌,合理的利用自己的炸d,多副炸d就得先看好哪些炸是牺牲作为增翻的,哪些是为自己或盟友争取上手机会的,如果是为盟友争取机会的,一定要把传牌算好,以防传入敌手。

3、堵牌,先看清自己的位置 ,如果是闲家就得先看清自己是打主力,还是打阻击,如果是主力就得把q口位让给盟友,如果是阻击就得尽量舍身,得以让盟军保存实力,顶出庄家手上的可能大牌!

4、赌牌,注意,上面是堵,这里是赌,也是就机率算牌,在尽可能大的机率上决定自己的出牌是否被对方炸掉,以及有可能被反炸。

一、发牌:

两副牌,留8张底牌,其余分发给四家,每家共25张牌,庄家可以得到8张底牌。

二、叫分:

由系统随机从108张牌中翻开一张牌,玩家可根据自己手中的牌好坏,由拿到翻牌的人按逆时针开始叫分。

三、叫主:

由庄家选取四个花色中的任意一个作为主牌。时间为30s,若时间到了,那么由系统选取为主牌。红五、正副司令、参谋(近色的3叫参谋),比如叫黑桃为主,则黑桃3为正参谋,草花3为副参谋、正副王(即2,如果黑桃为主时,黑桃2为正王,其他花色2为副王)。

四、底牌:

系统把剩下的8张牌发给庄家,然后庄家选出8张自认为不好的牌扣底。时间为50s,若时间到了,那么由系统将选取最小的8张为底牌。

五、出牌:

出牌方式与“拖拉机”类似。第一轮由庄家首先出牌,以后每轮都由前轮牌大者首先出牌;如果不是首家出牌方,则在出牌时必须先出首家出的花色。

六、牌面大小:

1、单张:红五>正司令>副司令>正参谋>副参谋>正王(2)>副王>主牌A>K>Q>J……4>副牌。

2、双张:红五对>正司令对>副司令对>正参谋对>副参谋对>正王对>副王对>主对>副牌对。

3、拖拉机:两连对,三连对……红桃4对和6对也算拖拉机,A以上不能连队。

4、碎牌(副牌):副牌可碎,比如其余大牌已出,手上的牌已经最大了,可以连出,如果副牌花色A、K已出,AAK可直接碎,注意,主牌同样可以碎。

5、没主时跟副牌,副牌同一种花色没有时可用主来抓分,或跟不同花色的副牌。

七、计分方法:

1、红五被抓扣50分。

2、一局结束时,若庄家赢,则可以获得底牌中的分牌。

3、积分的算法:积分一级结算,1级为10分。

4、叫分超过高分(≥105分)?原来10分1级,高分则5分1级。

5、庄家实际抓的分数=赢得的分数±抓红5的分数±底牌中的分数(如被抓则扣双倍)

八、逃跑扣分:

1、庄家逃跑普通扣15分,高分扣30分。

2、闲家逃跑普通扣5分,高分扣10分。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11384860.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存