㈠ 紙牌游戲程序設計 c語言
先定義一個牌的數組A,這樣如是一負牌,A是這樣,A[54],前放入牌
那麼開始發牌,54/4=12……2
所以每個玩家都有可能得到13張牌,
那麼發牌前我們不得不洗牌,比如我們洗100次
for(int i=0;i<100;i++)
{
生成一個0—53隨機數a
再生成一個0-53的隨機婁b
if(a==b)
{
重新生成
}
else
{
交換下標為a和b的內容
}
}
這樣我們洗牌就完了
發牌就容易了,
如是不能平均分牌,就隨機出多拿牌的玩家,這樣
就可以從下標0開始分別為每一個玩家發牌了,這樣完成發牌
再向下就不好說了,也就不說了
㈡ c語言 紙牌游戲的程序設計
void main改為:
void main()
for(i=1,i<=n,i++)的逗號全部改為分號「;」
㈢ 紙牌游戲:十點半c語言編程
參考下面代碼
#include<stdio.h>
struct card{
int num;//
bool ex;//真為正面,假為反面
};
void show(struct card a[],int n){// 顯示正面朝上的紙牌
int i = 0,j = 0;
printf("第%02d次:",n);
for(i = 0;i < 52;i ++){
if(a[i].ex){
j++;
printf("%02d ",a[i].num);
if(j == 23){
printf("\n ");
}
}
}
printf("\n\n");
}
void main()
{
int i,j;
struct card a[52];
for(i = 0;i < 52;i ++){
a[i].num = i+1;
a[i].ex = true;
}//初始化紙牌
for(i = 2;i < 53;i ++){
for(j = 0;j < 52;j ++){
if((j+1)%i == 0)
a[j].ex = !a[j].ex;
}
show(a,i-1);
}
㈣ c語言 一個紙牌程序
#include <stdio.h>
#include <string.h>
char card1[5],card2[5];
int main(){;
printf("Type in your card:\n");
gets(card1);
gets(card2);
while(card1[0]!=card2[0]){
strcpy(card1,card2);
gets(card2);}
printf("snap");
}
㈤ 求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 <math.h>
#include <stdlib.h>
#include <dos.h>
#include <graphics.h>
#include <conio.h>
#define ESC 0x1b
struct card
{
char color;
int number;
int signin;
}a[52]={{3,2,1},{3,3,1},{3,4,1},{3,5,1},{3,6,1},{3,7,1},{3,8,1},{3,9,1},{3,10,1},{3,74,1},{3,81,1},{3,75,1},{3,65,1},
{4,2,1},{4,3,1},{4,4,1},{4,5,1},{4,6,1},{4,7,1},{4,8,1},{4,9,1},{4,10,1},{4,74,1},{4,81,1},{4,75,1},{4,65,1},
{5,2,1},{5,3,1},{5,4,1},{5,5,1},{5,6,1},{5,7,1},{5,8,1},{5,9,1},{5,10,1},{5,74,1},{5,81,1},{5,75,1},{5,65,1},
{6,2,1},{6,3,1},{6,4,1},{6,5,1},{6,6,1},{6,7,1},{6,8,1},{6,9,1},{6,10,1},{6,74,1},{6,81,1},{6,75,1},{6,65,1}},b[52];
char s[10];
int d[52];
fan(int n)
{
if(a[n].signin==0)
a[n].signin=1;
else a[n].signin=0;
return;
}
suiji()
{
int t=0,j,i=0,struction;
for(i=0;i<=51;i++)
d[i]=-1;
i=0;
randomize();
while(i<52)
{
struction=random(52);
for(j=0;j<i;j++)
{
if(d[j]==struction)
{
t=1;
break;
}
}
if(t==0)
{
d[i]=struction;
i++;
}
else t=0;
}
return;
}
card(int n)
{
int y,x=n%13,x1=d[n]%13,y1;
char s1[2],r[2];
y=(n-x)/13;
setcolor(15);
line(49*x,80*y+42,49*x,80*y+117);
line(49*x+47,80*y+42,49*x+47,80*y+117);
line(49*x,80*y+42,49*x+47,80*y+42);
line(49*x,80*y+117,49*x+47,80*y+117);
for(y1=1;y1<75;y1++)
{
setcolor(15);
line(49*x+1,80*y+y1+42,49*x+45,80*y+y1+42);
}
if(a[n].signin==1)
{
setcolor(1);
if(a[d[n]].color==3||a[d[n]].color==4)
setcolor(RED);
sprintf(s1,"%c",a[d[n]].color);
outtextxy(49*x+3,80*y+45,s1);
if(x1<9)
sprintf(r,"%d",a[d[n]].number);
else sprintf(r,"%c",a[d[n]].number);
outtextxy(49*x+3,80*y+54,r);
}
else against(n);
setcolor(WHITE);
return;
}
against(int n)
{
int y,y1,x=n%13;
y=(n-x)/13;
for(y1=1;y1<75;y1++)
{
setcolor(BLUE);
line(49*x+1,80*y+y1+42,49*x+45,80*y+y1+42);
}
setcolor(15);
return;
}
draw(int n,int m)
{
int i4;
setcolor(YELLOW);
sprintf(s,"Base: %d",n);
outtextxy(150,420,s);
if(d[m-1]%13<9&&d[m-1]%13>=0)
sprintf(s,"Card: %c %d",a[d[m-1]].color,a[d[m-1]].number);
else sprintf(s,"Card: %c %c",a[d[m-1]].color,a[d[m-1]].number);
outtextxy(150,430,s);
setcolor(15);
for(i4=0;i4<52;i4++)
{
card(i4);
}
return;
}
frame(int n)
{
int y,x=n%13;
y=(n-x)/13;
setcolor(RED);
line(49*x,80*y+42,49*x,80*y+117);
line(49*x+47,80*y+42,49*x+47,80*y+117);
line(49*x,80*y+42,49*x+47,80*y+42);
line(49*x,80*y+117,49*x+47,80*y+117);
setcolor(15);
return;
}
huatu(int i,int j)
{
int n,m,i1=i,b,b2,j1=j,sign=0,tar=0,i2=2,k=1,p,sign1=0;
char u='',u1='',c[7][8],chh;
setbkcolor(3);
while(1)
{
loop:
sprintf(c[0],"File");
sprintf(c[1],"Option");
sprintf(c[2],"Help");
sprintf(c[3],"New");
sprintf(c[4],"Exit");
sprintf(c[5],"Auto");
sprintf(c[6],"Manual");
while(i2<=52)
{
k=1;
while(i2*k<=52)
{
setcolor(9);
for(n=0;n<=18;n++)
line(0,n,639,n);
setcolor(15);
outtextxy(290,10,"Card Game");
setcolor(YELLOW);
for(n=19;n<=40;n++)
line(0,n,639,n);
for(m=0;m<=2;m++)
{
setcolor(0);
line(58*m+3,22,58*m+3,38);
line(58*m+3,38,58*m+58,38);
line(58*m+58,22,58*m+58,38);
line(58*m+3,22,58*m+58,22);
outtextxy(8+58*m,27,c[m]);
if(m==i1)
{
setcolor(0);
for(n=0;n<=16;n++)
line(58*m+3,22+n,58*m+58,22+n);
setcolor(YELLOW);
outtextxy(8+58*m,27,c[m]);
}
if(kbhit())
{
chh=getch();
if(chh==0x1b)
{
u='';
u1='';
goto loop;
}
}
}
if(u!='N')
{
sign1=1;
break;
}
if(u=='N')
{
if(u1!='A'&&u1!='M')
{
p=i2*k;
draw(i2,p);
sign1=1;
break;
}
if(u1=='A'||u1=='M')
{
p=i2*k;
draw(i2,p);
sign1=0;
fan(i2*k-1);
frame(i2*k-1);
if(u1=='M')
{
outtextxy(150,440,"Press any key to continue!");
getch();
}
cleardevice();
k++;
}
}
}
if(sign1==1)break;
i2++;
}
if(i2>=52)
{
setcolor(9);
for(n=0;n<=18;n++)
line(0,n,639,n);
setcolor(15);
outtextxy(290,10,"Card Game");
setcolor(YELLOW);
for(n=19;n<=40;n++)
line(0,n,639,n);
outtextxy(150,420,"Press any key to continue!");
for(m=0;m<=2;m++)
{
setcolor(0);
line(58*m+3,22,58*m+3,38);
line(58*m+3,38,58*m+58,38);
line(58*m+58,22,58*m+58,38);
line(58*m+3,22,58*m+58,22);
outtextxy(8+58*m,27,c[m]);
if(m==i1)
{
for(n=0;n<=16;n++)
line(58*m+3,22+n,58*m+58,22+n);
setcolor(YELLOW);
outtextxy(8+58*m,27,c[m]);
}
} /*列印一級菜單*/
getch();
cleardevice();
setcolor(9);
for(n=0;n<=18;n++)
line(0,n,639,n);
setcolor(15);
outtextxy(290,10,"Card Game");
setcolor(YELLOW);
for(n=19;n<=40;n++)
line(0,n,639,n);
for(m=0;m<=2;m++)
{
setcolor(0);
line(58*m+3,22,58*m+3,38);
line(58*m+3,38,58*m+58,38);
line(58*m+58,22,58*m+58,38);
line(58*m+3,22,58*m+58,22);
if(m==i1)
{
for(n=0;n<=16;n++)
line(58*m+3,22+n,58*m+58,22+n);
setcolor(YELLOW);
}
outtextxy(8+58*m,27,c[m]);
}
draw(52,52);
}
if(u1=='M'||u1=='A')
{
u1='';
u='';
}
b=getch();
while(1)
{
if(b==100)
{
i1=(i1+1)%3;
break;
}
if(b==97)
{
if(i1==0)
{
i1=2;
break;
}
else
{
i1=i1-1;
break;
}
}
/* if(b==0x1b)
{
closegraph();
exit(1);
} */
if(b==13)
{
while(1)
{
if(i1!=2)
{
if(sign!=1)
{
setcolor(YELLOW);
for(m=1;m<=2;m++)
{
line(58*i1+3,38+15*(m-1),58*i1+3,53+15*(m-1));
line(58*i1+3,53+15*(m-1),58*i1+58,53+15*(m-1));
line(58*i1+58,38+15*(m-1),58*i1+58,53+15*(m-1));
line(58*i1+3,38+15*(m-1),58*i1+58,38+15*(m-1));
setcolor(3);
for(n=0;n<=13;n++)
{
line(58*i1+4,39+15*(m-1)+n,58*i1+57,39+15*(m-1)+n);
}
if(m==j1+1)
{
setcolor(3);
for(n=0;n<=13;n++)
{
line(58*i1+4,39+15*(tar)+n,58*i1+57,39+15*(tar)+n);
}
setcolor(BLUE);
for(n=0;n<=13;n++)
{
line(58*i1+4,39+15*(j1)+n,58*i1+57,39+15*(j1)+n);
}
tar=j1;
}
setcolor(YELLOW);
}
setcolor(YELLOW);
if(i1==0)
{
outtextxy(8+58*i1,43,c[i1+3]);
outtextxy(8+58*i1,58,c[i1+4]);
}
else
{
outtextxy(8+58*i1,43,c[i1+4]);
outtextxy(8+58*i1,58,c[i1+5]);
}
}
if(sign==1)break;
setcolor(YELLOW);
while(1)
{
b2=getch();
if(b2==115)
{
j1=(j1+1)%2;
break;
}
if(b2==119)
{
if(j1==1)
{
j1=0; break;
}
if(j1==0)
{
j1=1; break;
}
}
if(b2==0x1b)
{
sign=1;
j1=0;
break;
}
if(b2==13)
{
if(i1==0&&j1==1)
{
closegraph();
exit(1);
}
if(i1==0&&j1==0)
{
u='N';
suiji();
for(n=0;n<52;n++)
{
a[n].signin=1;
}
n=0;
}
if(i1==1&&j1==0)
{
u1='A';
if(u!='N') u1='';
}
if(i1==1&&j1==1)
{
u1='M';
if(u!='N') u1='';
}
sign=1;
j1=0;
break;
}
else continue;
}
}
else
{
sign=1;
outtextxy(100,100,"Copyright");
circle(180,104,5);
outtextxy(177,101,"C");
getch();
break;
}
}
}
else break;
if(sign==1)
{
sign=0;
break;
}
}
cleardevice();
i2=2;
k=1;
}
}
main()
{
int k,gm=2,gd=9;
initgraph(&gd,&gm,"");
huatu(0,0);
getch();
}
㈦ C語言程序設計 撲克牌發牌游戲
嗯嗯,清華北大的都不會
㈧ c語言程序設計撲克牌游戲
定義一個結構類型表示一張牌,結構包含3個成員,第一個成員char:取值2,3~K,A表示牌名字,第二個成員int:取值2~14表示牌真實大小。第三個成員:結構鏈表指針。
寫一個初始化函數,定義52大小的結構數組,成員值初值分別和牌對應,遍歷數組並將每個元素的鏈表指針依次指向下一個元素地址。這樣得到一個初始鏈表。(相當於一盒新牌)
所有涉及隨機數都用rand函數,洗牌分四份就是循環取隨機數m=1~n,n是隨循環自減,初值52,直到n變成0。每隨一次循環就從初始鏈表中遍歷取出對應第m個節點,並從初始鏈表中將這個節點斷開(既前一個節點指針直接指向後一個節點指針)。每取13張就組成一個新的鏈表。這樣獲得4個新鏈表分別表示4個玩家。
最後出牌就是分別遍歷自己的鏈表,利用循環取牌比較結構數值大小。(取出的牌要從鏈表斷開和上面一樣,你把取出節點寫成獨立函數就能反復使用)。
㈨ 如何用c語言編寫紙牌發牌程序
發牌原程序見我的空間(http://hi..com/crazycola/blog/item/52402bd4b3f68705a08bb746.html),可選是否包含大小王,可選發牌列數。
以下為改過的版本,不包含大小王(即總數52張),只能發4堆。
另外附加了用戶菜單,原程序中不含菜單部分。
代碼如下:
---------------------------------------
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
int menu()
{
int choice;
printf("1 發牌/0 退出:");
scanf("%d",&choice);
return choice;
}
void main( void )
{
int i1, j, total;
int *iArr;
int tag = 0;
char* pok_C[] = { "黑桃", "紅桃", "梅花", "方塊" };
char* pok_N[] = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
if(!menu()) exit(0);
total = 52;
srand( (unsigned)time( NULL ) );
iArr = (int*)malloc(total*sizeof(int));
for( i1=0; i1<total; i1++ )
{
iArr[i1]=rand()%total;
if( i1==0 ) continue;
do {
tag = 0;
for( j=0; j<i1; j++ )
if( iArr[j] == iArr[i1] )
{
iArr[i1]=rand()%total;
tag = 1;
}
} while( tag==1 );
}
for( i1=0; i1<total; i1++ )
{
printf("%s%s\t",pok_C[iArr[i1]%4],pok_N[iArr[i1]%13]);
if(i1%4==3) printf("\n");
}
free(iArr);
}