棋牌游戏大厅开户

您现在的位置: 网上现金棋牌游戏平台 >> 棋牌技巧 >> 斗地主技巧 >> 正文

[图文]简易斗地主开发实例

分享到:
时间:2013-12-31
内容简介:自认为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语言别挂。
就这样吧。


来源:网上现金棋牌游戏平台
你可能感兴趣的:
斗地主风波
斗地主没有地方也能玩
斗地主险胜实例
斗地主里什么样的牌才算好牌
谁是斗地主游戏中的高手
斗地主就是骗来骗去
斗地主想赢依靠什么
斗地主翻倍
闲着玩斗地主
陪领导斗地主
斗地主的博弈策略
斗地主中的学问
轻松愉快欢乐斗地主
斗地主与爱情
斗地主的搞笑网名
我们向您推荐的:
爱情公寓斗地主玩法当农民的小技巧
三张底牌对斗地主的影响影响斗地主水平的因素
斗地主该如何出牌斗地主分析对手技巧
斗地主猜牌技巧斗地主读牌算牌很重要
斗地主怎么玩视频教程欢乐斗地主常见问题及解决
广东麻将实战技巧宜昌版血流成河技巧
广东麻将推到胡技巧广东麻将技巧心得
麻将技巧教学麻将攻击性的双洞拆牌方式
麻将的双洞牌麻将的连张对怎么打
麻将双洞对怎么办麻将对对子的深入了解分析

石梁溪玫瑰园双扣PK大

天津麻将下载

打牌有瘾

小小游戏的大大道理

中国麻将被完爆

给孩子打牌的理由

老爸与麻将

麻将声声
赌博种类赌博文化心理
什么是赌博策略会透露信息
看穿对手的策略赌博桌上老千局
赌石看蟒赌博的实质
竞赛与赌博吹牛骰子技巧

百变双扣秘技双扣实战技巧
双扣五点技巧双扣打单牌技巧
双扣中如何推测对方的牌打双扣要勇于担责
双扣要总结经验双扣高手技巧
打双扣的心理因素双扣战局把握能力
棋牌游戏下载 棋牌深海捕鱼

深海捕鱼

游戏视频

棋牌游戏

经验分享

棋牌游戏攻略

斗地主

2010-2013 © 网上现金棋牌游戏平台 版权所有
增值电信业务经营许可证:粤B2-20169873-8 文网文编号:粤网文[2016]789114-088号