當前位置:首頁 » 編程語言 » 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");

}