您现在的位置: 网上现金棋牌游戏平台 >> 棋牌技巧 >> 斗地主技巧 >> 正文
内容简介:自认为C语言水平实在差劲,期末考即将来临,亟待操练。看到以前某人发了优化后的斗地主程序,发现仍有诸多功能未实现,顿受启发,决定拿这个以前的作业操刀,加以优化,作为2013年C语言的年度绝唱。用时累计两天,终于完成。今年不再碰C语言了,太虐心了。 本文由网上现金棋牌游戏平台www.crjq8.com编辑整理,介绍各种网上真钱棋牌游戏技巧,澳门赌场赌博技巧,提供各种网上博彩游戏,网上真钱游戏,免费试玩。希望简易斗地主开发实例这篇文章能给你提供帮助。 |
自认为C语言水平实在差劲,期末考即将来临,亟待操练。看到以前某人发了优化后的斗地主程序,发现仍有诸多功能未实现,顿受启发,决定拿这个以前的作业操刀,加以优化,作为2013年C语言的年度绝唱。用时累计两天,终于完成。今年不再碰C语言了,太虐心了。
已实现的功能:斗地主一副牌三玩家洗牌发牌,完美支持大小王、花色、10显示,完美支持QQ游戏斗地主中手牌显示排列顺序逻辑(同样大小的牌按黑桃、红心、草花、方片排列,总体按照大小王、2、A、K、Q、J、10、9、8、7、6、5、4、3排列),实现QQ游戏欢乐斗地主三人同时明牌的界面的显示, 支持三角视角显示。
本程序使用了数组、函数、指针数组、结构体,基本上把我C语言的这点儿家底儿都抖出来了。之前被大家广泛采用的用字符来表示一张牌的点数的做法实在蛋疼,会导致排序的时候逻辑十分混乱,造成代码极其冗长,所以干脆用数字来表示牌的点数,1表示3,9、10、11、12、13、14、15分别表示J、Q、K、A、2、小王、大王,这样排序的时候就方便多了。
至于扑克牌的图形界面、出牌等功能,恕我愚钝,真的做不到啊。。。。。乞望各界大神批评指正。
运行后的结果示意图:
附源代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
struct poker
{
int hua;
int num;
}pk[54],pk1[17],pk2[17],pk3[17],*p,*p1,*p2,*p3,temp; //扑克牌的结构体数组
int i;
void output(struct poker *p,int i) //扑克牌的显示逻辑
{
switch((p+i)->hua)
{
case 4:printf("%c",6);break;
case 3:printf("%c",3);break;
case 2:printf("%c",5);break;
case 1:printf("%c",4);break;
case 5:printf("j");break;
case 6:printf("J");break;
}
if((p+i)->num<9)printf("%d ",((p+i)->num)+2);
else switch((p+i)->num)
{
case 9:printf("J ");break;
case 10:printf("Q ");break;
case 11:printf("K ");break;
case 12:printf("A ");break;
case 13:printf("2 ");break;
case 14:printf("oker ");break;
case 15:printf("oker ");break;
}
}
void newcard(struct poker *p) //生成一副新牌
{
int j=4,k=1;
for(i=0;i<52;i++)
{
(p+i)->hua=j;
if((i+1)%13==0)j--;
(p+i)->num=k;
k++;
if(k==14)k=1;
}
(p+52)->hua=5;
(p+53)->hua=6;
(p+52)->num=14;
(p+53)->num=15;
}
void swap(struct poker *p1,struct poker *p2) //程序中频繁调用的交换函数,干脆独立出来
{
temp=*p1;
*p1=*p2;
*p2=temp;
}
void shuffile(struct poker *p) //洗牌
{
int r;
srand(time(0));
for(i=0;i<54;i++)
{
r=rand()%(54-i)+i;
swap(p+i,p+r);
}
}
void fapai(struct poker *p1,struct poker *p2,int n) //发牌
{
for(i=0;i<17;i++)*(p2+i)=*(p1+n+3*i);
}
void paixu(struct poker *p) //排序的函数
{
int j,k;
for(i=0;i<17;i++)
{
k=i;
for(j=i+1;j<17;j++)if(((p+j)->num>(p+k)->num)||(((p+j)->num==(p+k)->num)&&((p+j)->hua>(p+k)->hua)))k=j;
if(k!=i)swap(p+k,p+i);
}
}
main()
{
p=pk;p1=pk1;p2=pk2;p3=pk3;
newcard(p);
shuffile(p);
fapai(p,p1,0);paixu(p1);
fapai(p,p2,1);paixu(p2);
fapai(p,p3,2);paixu(p3);
printf(" 欢迎进入斗地主游戏!\n");
printf("玩家1 底牌");
for(i=51;i<54;i++)output(p,i);
printf(" 玩家3\n");
for(i=0;i<17;i++)
{
output(p1,i);
if((p1+i)->num==8)printf(" ");
else if(((p1+i)->num==14)||((p1+i)->num==15))printf(" ");
else printf(" ");
output(p3,i);
printf("\n");
}
printf(" ");
for(i=0;i<17;i++)output(p2,i);
printf(" 玩家2\n");
}
最后乞求各路神仙保佑哥明年期末考试C语言别挂。
就这样吧。
[组图]万王宝藏 | 366 | |
玩捕鱼游戏的好处 | 1268 | |
[图文]捕鱼游戏机单网技巧 | 1198 | |
[图文]金蟾捕鱼大揭密 | 3701 | |
[图文]大圣闹海 | 2637 | |
[组图]捕鱼达人2安卓破解版 | 4249 | |
[组图]波克城市新版捕鱼达人 | 7336 | |
捕鱼游戏机赢钱技巧 | 49653 | |
[组图]捕鱼达人2全面介绍 | 6083 | |
qq捕鱼达人技巧 | 3868 | |
手部动作背后的心理 | |
根据手势判断对手的牌(二) | |
根据手势判断对手的牌(一) | |
手臂收回与冻结 | |
打牌中手臂的秘密 | |
躯干伸展的动作 | |
打牌时躯干动作给你的信号 | |
打牌过程中关于躯干的常识(二) | |
打牌过程中关于躯干的常识(一) | |
打牌露出马脚是要付出代价的(二) | |
2010-2013 © 网上现金棋牌游戏平台 版权所有 增值电信业务经营许可证:粤B2-20169873-8 文网文编号:粤网文[2016]789114-088号 |