当前位置:首页 » 编程语言 » c语言代码打牌
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言代码打牌

发布时间: 2022-08-24 19:47:34

c语言编程题!!急求!! 关于扑克牌(要完整代码最好有解释)

#include<stdio.h>
int asc(char p[][3]);
intisError(char p1[][3],char p2[][3]);
void compare(char p3[][3],char p4[][3]);
int main()
{
char a[3][3],b[3][3],c;
int i,j,resulta,resultb,result,flag=0;
printf("请输入A的扑克牌,扑克牌之间以空格隔开,然后按下回车: ");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
c=getchar();
if(c!=' '&&c!=10)
{
if(j==0)
{
if(c=='H'||c=='S'||c=='D'||c=='C')
;
else
{
printf("Input Error! ");
return 0;
}
}
if(j==1)
{
if(c=='J'||c=='Q'||c=='K'||c=='A'||(c>='1'&&c<='9'))
{
if(c=='J')
c=59;
if(c=='Q')
c=60;
if(c=='K')
c=61;
if(c=='A')
c=62;
if(c=='1')
flag=1;
}
else
{
printf("Input Error! ");
return 0;
}
}
if(j==2)
{
if(c!='0')
{
printf("Input Error! ");
return 0;
}else
{
flag=0;
c=58;
a[i][1]=c;
break;
}

}
a[i][j]=c;
}else
{
if(flag==1)
{
printf("Input Error! ");
return 0;
}
if(j==2)
break;
j--;
}
}
}
printf("请输入B的扑克牌,扑克牌之间以空格隔开,然后按下回车: ");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
c=getchar();
if(c!=' '&&c!=10)
{
if(j==0)
{
if(c=='H'||c=='S'||c=='D'||c=='C')
;
else
{
printf("Input Error! ");
return 0;
}
}
if(j==1)
{
if(c=='J'||c=='Q'||c=='K'||c=='A'||(c>='1'&&c<='9'))
{
if(c=='J')
c=59;
if(c=='Q')
c=60;
if(c=='K')
c=61;
if(c=='A')
c=62;
if(c=='1')
flag=1;
}
else
{
printf("Input Error! ");
return 0;
}
}
if(j==2)
{
if(c!='0')
{
printf("Input Error! ");
return 0;
}else
{
flag=0;
c=58;
b[i][1]=c;
break;
}

}
b[i][j]=c;
}else
{
if(flag==1)
{
printf("Input Error! ");
return 0;
}
if(j==2)
break;
j--;
}
}
}
resulta=asc(a);
if(resulta==0)
return 0;
resultb=asc(b);
if(resultb==0)
return 0;
result=isError(a,b);
if(result==0)
return 0;
compare(a,b);
for(i=0;i<3;i++)
{
a[i][2]='';
b[i][2]='';
}
printf("A: ");
for(i=0;i<3;i++)
{
if(a[i][1]>'2'&&a[i][1]<'9')
printf("%s ",a[i]);
else
{
if(a[i][1]==58)
{
printf("%c",a[i][0]);
printf("10 ");
}
if(a[i][1]==59)
{
printf("%c",a[i][0]);
printf("J ");
}
if(a[i][1]==60)
{
printf("%c",a[i][0]);
printf("Q ");
}
if(a[i][1]==61)
{
printf("%c",a[i][0]);
printf("K ");
}
if(a[i][1]==62)
{
printf("%c",a[i][0]);
printf("A ");
}
}
}
printf(" B: ");
for(i=0;i<3;i++)
{
if(b[i][1]>'2'&&b[i][1]<'9')
printf("%s ",b[i]);
else
{
if(b[i][1]==58)
{
printf("%c",b[i][0]);
printf("10 ");
}
if(b[i][1]==59)
{
printf("%c",b[i][0]);
printf("J ");
}
if(b[i][1]==60)
{
printf("%c",b[i][0]);
printf("Q ");
}
if(b[i][1]==61)
{
printf("%c",b[i][0]);
printf("K ");
}
if(b[i][1]==62)
{
printf("%c",b[i][0]);
printf("A ");
}
}
}
printf(" ");
return 0;
}

int asc(char p[][3])
{
int m,temp[2];
if(p[0][1]==p[1][1])
{
if(p[0][0]==p[1][0])
{
printf("Input Error! ");
return 0;
}
}
if(p[1][1]==p[2][1])
{
if(p[1][0]==p[2][0])
{
printf("Input Error! ");
return 0;
}
}
if(p[0][1]==p[2][1])
{
if(p[0][0]==p[2][0])
{
printf("Input Error! ");
return 0;
}
}
m=0;
if(p[m][1]<p[m+1][1])
{
temp[0]=p[m][0];
temp[1]=p[m][1];
p[m][0]=p[m+1][0];
p[m][1]=p[m+1][1];
p[m+1][0]=temp[0];
p[m+1][1]=temp[1];
}
if(p[m][1]<p[m+2][1])
{
temp[0]=p[m][0];
temp[1]=p[m][1];
p[m][0]=p[m+2][0];
p[m][1]=p[m+2][1];
p[m+2][0]=temp[0];
p[m+2][1]=temp[1];
}
m=1;
if(p[m][1]<p[m+1][1])
{
temp[0]=p[m][0];
temp[1]=p[m][1];
p[m][0]=p[m+1][0];
p[m][1]=p[m+1][1];
p[m+1][0]=temp[0];
p[m+1][1]=temp[1];
}
return 1;
}

intisError(char p1[][3],char p2[][3])
{
int n;
for(n=0;n<3;n++)
{
if(p1[n][0]==p2[0][0]&&p1[n][1]==p2[0][1])
{
printf("Input Error! ");
return 0;
}
if(p1[n][0]==p2[n][0]&&p1[1][1]==p2[1][1])
{
printf("Input Error! ");
return 0;
}
if(p1[n][0]==p2[n][0]&&p1[2][1]==p2[2][1])
{
printf("Input Error! ");
return 0;
}
}
return 1;
}

void compare(char p3[][3],char p4[][3])
{
int x;
for(x=0;x<3;x++)
{
if(p3[x][1]==p4[x][1])
continue;
if(p3[x][1]>p4[x][1]){
printf("Winner is A! ");
return;
}
if(p3[x][1]<p4[x][1]){
printf("Winner is B! ");
return;
}
}
printf("Winner is X! ");
}

这次对了。

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

这是以随机的形式发牌的。希望能帮到你。
int main(){ int a[60]; int b[60]; int w = 0; int wi,wj,wii; int i,j,index,x=0,m; for(i=0;i<54;i++) a[i]=i+1; srand((unsigned)time(0)); for(i=0;i<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 = 0;j < w;j++) { m = 0; printf("\n\n第%d个人的牌\n",j+1); wj --; if (wj>=0) wii = wi + 1; else wii = wi; //红桃 printf("红桃 %c ",3); printf(":"); for(i = j*wii;i<(j+1)*wii;i++) { 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 "); else printf("%d ",b[i]); } } //方块 printf("\n方块 %c ",4); printf(":"); for(i = j*wii;i<(j+1)*wii;i++) { 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 "); else printf("%d ",b[i]); } } //梅花 printf("\n梅花 %c ",5); printf(":"); for(i = j*wii;i<(j+1)*wii;i++) { 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 "); else printf("%d ",b[i]); } } //黑桃 printf("\n黑桃 %c ",6); printf(":"); for(i = j*wii;i<(j+1)*wii;i++) { 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 "); else printf("%d ",b[i]); } } //大小王 printf("\n大小王 A or a :"); for(i = j*wii;i<=(j+1)*wii;i++) { if (b[i]==53) { m++; printf("A "); } if (b[i]==54) { m++; printf("a "); } } printf("\n总共:%d张牌!!!",m); } }

❸ C语言 VC/TC环境下的麻将游戏,最好是长沙麻将代码,

发送到了

❹ C语言 怎么在21点小游戏中加入其他纸牌游戏,求个完整代码,共400行就行

如果你已经有其他牌戏的代码,只要在一开始加一个功能选择就行。
如果你没有其他代码,这个不是牌戏。
#include<dos.h>
#include<graphics.h>
#include<stdlib.h>
int
sheet[20][2],sheeter;
picture(int
x,int
y,int
aim)
{
setcolor(2);
setlinestyle(0,0,3);
setwritemode(0);
line(x+10+aim,y,x+5+aim,y);
line(x-10-aim,y,x-5-aim,y);
line(x,y+10+aim,x,y+5+aim);
line(x,y-10-aim,x,y-5-aim);
delay(15000);
}
target_sheet(int
x,int
y,int
aim)
{
int
i;
if(0==rand()%2)x+=rand()%aim;
else
x-=rand()%aim;
if(0==rand()%2)y+=rand()%aim-aim/2-aim/3;
else
y-=rand()%aim;
sheeter=(sheeter+1)%20;
sheet[sheeter][0]=x;
sheet[sheeter][1]=y;
}
sounding()
{
sound(1500);
delay(2000);
sound(1000);
delay(2000);
sound(500);
delay(2000);
nosound();
}
main()
{
int
x,y,i,aim;
int
gdriver,
gmode;
union
REGS
regs;
detectgraph(&gdriver,
&gmode);
initgraph(&gdriver,
&gmode,
"c:\\turboc2");
while(1)
{
cleardevice();
setcolor(7);
for(i=0;i<20;i++)
{
circle(sheet[i][0],sheet[i][1],0);
}
regs.x.ax=3;
int86(0x33,®s,®s);
x=regs.h.cl+regs.h.ch*255;
y=regs.h.dl+regs.h.dh*255;
if(regs.h.bl!=0)
{
sounding();
if(aim<4)aim=aim+1+rand()%2;
else
aim=aim+3+rand()%5;
if(aim>30)aim=25+rand()%15;
target_sheet(x,y,aim);
picture(x,y,aim-5);
}
else
if(aim>5)aim-=aim/3;
else
if(aim>0)aim-=1;
picture(x,y,aim);
setlinestyle(0,0,3);
}
closegraph();
}

❺ c语言纸牌发牌程序源代码(附注释)

其实发牌问题里有个随机的问题,就是模拟洗牌的问题,我来尝试下这个程序吧(每个花色的代码分别是:红桃 \x3,方块\x4,梅花\x5,黑桃\x6
#include <stdio.h>
#include <time.h>
char hua_se[4]={'\x3','\x4','\x5','\x6'}; //定义一个数组来存放花色
char *dight[14]={"Ace","two","three","four","five","six","seven","eight","nine","ten","jack","queen","king"};//定义一个指针型的数组来存放数字
int fa_pai[4][13]={0};//定义一个二维数组来发牌
void move(int fa_pai[4][13]);
void deal(int fa_pai[4][13],char huase[4],char *dight[4][13]);
int main(void){srand(time(NULL));
move(fa_pai);
deal(hua_se,dight,fa_pai);
printf("你是否想结束发牌?Y/N");
getch();return 0;}void move(int fa_pai[4][13]){int r,card,row,column;
for(card=1;card<=52;card++)
{
r=rand();
row=r%4;
r=rand();
column=r%13;
while(fa_pai[4][13]!=0)
{
r=rand();
row=r%4;
r=rand();
column=r%13;
}
fa_pai[row][column]=card;
}
}
void deal(int fapai[4][13],char hua_se[3],char *dight[13])
{
char c;int card,row,column;
for(card=1;card<=52;card++)
{
for(row=0;row<=3;row++)
{
for(column=0;column<=12;column++)
{
if(fapai[row][column]==card)
{
if(card%3=0)c='\n';
elsec='\t';
printf("%5sof%-8s%c",hua_se[row],dight[column],c);
}
}
}
}
}

❻ c语言掷骰子代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain(void)
{
intai[3];//甲的三个骰子的点数
intbi[3];//乙的三个骰子的点数
inti;
srand((unsigned)time(NULL));//播时间种子,产生随机数
for(i=0;i<3;i++)
{
ai[i]=rand()%6+1;//随机产生1-6的点数
bi[i]=rand()%6+1;
}
printf("甲的点数:");
for(i=0;i<3;i++)
{
printf("%d",ai[i]);
}

printf(" 乙的点数:");
for(i=0;i<3;i++)
{
printf("%d",bi[i]);
}

if(ai[0]+ai[1]+ai[2]>bi[0]+bi[1]+bi[2])
{
printf(" 甲获胜. ");
}
else{
printf(" 乙获胜. ");
}
return0;
}

❼ 求c语言的“纸牌游戏”代码

贪心算法,首先计算平均值,然后从左往右扫描,不够平均值的从右边拿,次数+1;超过平均值的往右边放,次数+1。#include
int
main(){
int
n,i,move=0;
long
a[101],num=0;
scanf("%d",&n);
for
(i=0;i
num){
a[i+1]+=(a[i]-num);
move++;
}
if
(a[i]

评论
0

0

加载更多

❽ C语言中关于掷骰子和赌注的代码编写

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#defineMONEY200

intget_num(void)
{
srand(clock());

return1+rand()%6;
}

intwin(intme_num,intcomputer_num,intn,int*me,int*computer)
{
if(me_num-computer_num>0)
{
printf("太厉害了,您这把赢了呢! ");
printf("您的财富+%d ",n*2);
*me+=n*2;
printf("计算机的财富-%d ",n);
*computer-=n;

printf("您当前的财富为%d 计算机当前的财富为%d ",*me,*computer);

if(*computer<0)
{
printf("太厉害了、太厉害了,计算机被你打败了! ");
return-1;
}

return0;
}
elseif(me_num-computer_num<0)
{
printf("不好,您输了! ");
printf("您的财富-%d ",n);
*me-=n;
printf("计算机的财富+%d ",n*2);
*computer+=n*2;

printf("您当前的财富为%d 计算机当前财富为%d ",*me,*computer);
if(*me<0)
{
printf("我们非常遗憾地通知您,由于您的帐户欠费,我们做了一个艰难的决定,把您赶出赌场,大赌伤身,小赌宜情,回家好好过日子吧! 您被赶出了赌场! ");
return-1;
}

return0;
}
else
{
printf("不分上下,打成平手,让我们再来决战一次吧! ");
printf("您的财富+%d ",n);
*me+=n;
printf("计算机的财富+%d ",n);
*computer+=n;

printf("您当前的财富为%d 计算机当前财富为%d ",*me,*computer);

return0;
}
}

intmain(intargc,char**argv)
{
intcomputer=MONEY;
intme=MONEY;
intme_n=0,computer_n=0;
intme_num=0,computer_num=0;
into;

printf("欢迎来到掷骰子游戏! 现在是人机对战模式,您和计算机现在都拥有%d财富! ",MONEY);
printf("游戏规则: 按1键进行下注,不设置则默认按上次下的注计算 按0键进行掷骰子 按9键查看帮助 按2键查看自己的财富 按3键查看计算机的财富 按4键退出游戏 ");

while(1)
{
printf("输入操作:");
scanf("%d",&o);

switch(o)
{
case0:
if(me_n==0)
{
printf("您还没有下注,请先下注! ");
break;
}

printf("开始掷骰子... ");
me_num=get_num();
printf("您掷得的骰子为%d ",me_num);

printf("计算机开始掷骰子... ");
computer_num=get_num();
printf("计算机掷得的骰子为%d ",computer_num);

if(win(me_num,computer_num,me_n,&me,&computer)==-1)
gotoend;
break;

case1:
while(1)
{
printf("请输入您的赌金:");
if(scanf("%d",&me_n)!=1)
{
printf("输入的赌金出错,请重新输入! ");
continue;
}

if(me_n>me)
{
printf("您的赌金不够,请重新输入! ");
continue;
}

if(me_n>computer)
{
printf("啊哦,计算机的财富没有这么多哦,您太厉害了,请输下一个计算机可承受的注吧! ");
continue;
}

break;
}
break;

case2:
printf("您当前的财富为:%d ",me);
break;

case3:
printf("计算机当前的财富为:%d ",computer);
break;

case4:
gotoend;
break;

case9:
printf("游戏规则: 按1键进行下注,不设置则默认按上次下的注计算 按0键进行掷骰子 按9键查看帮助 按2键查看自己的财富 按3键查看计算机的财富 按4键退出游戏 ");
break;

default:
printf(" 错误的操作,请看帮忙! ");
}
}

end:
printf("游戏结束! ");

return0;
}

❾ 求一个关于麻将程序的思路(c语言)

组成胡牌的规则只有两种,三个相同或者三个排成顺序(也就是相邻)
可能有很多对,那么分别挑出,这个是必须的,剩下的赋值新的数组中,这是这个新的数组有12个数据
如定义
int guize1(int *b) //这里b有三个数据,三个数相同
{
if(b[0]==b[1]&&b[1]==b[2]&&b[0]==b[1])
return 1;
return 0; //这里加不加else都可以
}
int guize2(int *c) //这里c有三个数据,三个数是顺序的
{
int x[3];
int i,j,t;
for(i=0;i<3;i++) //赋值新的数组,因为数组数组改变可以影响到调用它的函数中的数值
x[i]=c[i];
for(i=0;i<3;i++) //x数值排序,随便选一个,我的可能不对,呵呵
for(j=i+1;j<3;j++)
if(x[i]<x[j])
{
t=x[i];
x[i]=x[j];
x[j]=t;

}
if(x[0]=x[1]-1&&x[1]==x[2]-1) //顺序的话返回1
return 1;
return 0;
}
int huipai(int *a) //这里a数组有12个数据
{
//这里就需要枚举了,没别的办法
int i,j,k;
int y[3];

for(i=0;i<10;i++)
for(j=i+1;j<11;j++)
for(k=j+1;k<12;k++) //这三个循环就是所有的情况吧,你想想

{
y[0]=a[i];
y[1]=a[j];
y[2]=a[k];

if(guize1(y)||guize2(y)) //判断是否构成关系,直接调用子函数即可
return 1;
}

}

主函数中调用子函数的程序
int pai[14] ; //这里放14个数据,初始化自己搞定
int hpai[12];
//排序14个数据自己搞定
int i,j,k;

for(i=0;i<13;i++)
{
if(pai[i]==pai[i+1]) //如果有对

{
k=0;

for(j=0;j<i;j++) //分两段赋值新的数组

hpai[k++]=pai[j];
for(j=i+2;j<14;j++)
hpai[ k++]=pai[j];
}
if(hupai(hpai))
printf("yes");
else
printf("no");

}