1. c语言 纸牌游戏——比大小 题目描述 葱葱跟巴豆玩游戏。游戏规则很简单,就是比大小。
#include <iostream>
#include <memory.h>
#include <algorithm>
using namespace std;
#define N 11
int main()
{
int cc[N] ;
bool b[210] ;
int i, j ;
int x ;
int count ;
bool flag ;
while(true)
{
memset(b, false, sizeof(b)) ;
count = 0 ;
for(i = 0; i < N; i++)
cin >> cc[i] ; //输入葱葱的牌
for(i = 0; i < N; i++) //输入巴豆的牌
{
cin >> x ;
b[x] = true ;
}
sort(cc, cc+N) ; //将葱葱手里的牌排序
j = 1 ;
for(i = 0; i < N; i++)
{
x = cc[i] ;
flag = false ;
for( ; j < x && !flag; j++)
{
if(b[j])
{
flag = true ;
b[j] = false ; //j已经被比较过
count ++ ;
}
}
}
cout << count << endl ;
}
return 0;
}
//结果不一定完全正确。
2. c语言程序设计扑克牌游戏
定义一个结构类型表示一张牌,结构包含3个成员,第一个成员char:取值2,3~K,A表示牌名字,第二个成员int:取值2~14表示牌真实大小。第三个成员:结构链表指针。
写一个初始化函数,定义52大小的结构数组,成员值初值分别和牌对应,遍历数组并将每个元素的链表指针依次指向下一个元素地址。这样得到一个初始链表。(相当于一盒新牌)
所有涉及随机数都用rand函数,洗牌分四份就是循环取随机数m=1~n,n是随循环自减,初值52,直到n变成0。每随一次循环就从初始链表中遍历取出对应第m个节点,并从初始链表中将这个节点断开(既前一个节点指针直接指向后一个节点指针)。每取13张就组成一个新的链表。这样获得4个新链表分别表示4个玩家。
最后出牌就是分别遍历自己的链表,利用循环取牌比较结构数值大小。(取出的牌要从链表断开和上面一样,你把取出节点写成独立函数就能反复使用)。
3. 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();
}
4. 扑克牌问题(C语言)
其实这是典型的利用链表求解的问题,但是此题用链表的话还需要应用一个长度为13的数组做辅助,所以我直接用数组来进行演示,将在手中的牌进行标记,将放到桌子上的牌进行赋值。
我在很小的时候我的姥爷就曾给我表演过这个魔术,当时我自己用扑克牌弄了将近两个小时才终于知道了这13张牌的顺序是什么,有兴趣的话你可以自己试一试,很有意思。
下面的代码你可以进行调试来帮助理解整个过程
#include <stdio.h>
void main()
{
int poker[13];//十三张扑克牌
for(int i = 0;i<13;i++)//初始化
poker[i] = 0;//0代表牌还在手中,不为0代表放到了桌子上
int remain = 13;//手中剩余的扑克数
int j = 12;//从最下边开始抽牌
int order = 1;//当order为2时,将此时的牌放到桌子上
int number = 1;//从A开始
while(remain != 0)
{
if(j == -1)
{
j = 12;//返回最后一张牌
continue;
}
if(poker[j] != 0)//如果牌已不在手中,则到下一张牌
{
j--;
continue;
}
if(order == 2)
{
poker[j]= number++;//将扑克赋值
remain--;//手中剩余的牌数减1
order = 1;
continue;
}
order++;
j--;
}
//输出一开始小明手中扑克牌的顺序
for(i = 0; i < 13;i++)
printf("%d ",poker[i]);
}
想要写出一个程序重点在于理解这个过程,只有对这个过程熟悉了才有可能把它用代码来演示出来。
5. 纸牌游戏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开始分别为每一个玩家发牌了,这样完成发牌
再向下就不好说了,也就不说了
6. C语言设计憋七纸牌游戏
/* 纸牌模拟程序 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
struct card
{ char suit[2];
char face[3];
};
typedef struct card CARD;
void initcard(CARD deck[],char s[][2],char f[][3]);
void shuffle(CARD deck[]);
void print(CARD deck[]);
int main()
{ CARD deck[52];
char s[4][2]={"\003","\004","\005","\006"};
char f[13][3]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
initcard(deck,s,f);
srand(time(NULL));
shuffle(deck);
print(deck);
system("pause");
return 0;
}
void initcard(CARD deck[],char s[][2],char f[][3])
{ int i;
for(i=0;i<52;i++)
{ strcpy(deck[i].suit,s[i/13]);
strcpy(deck[i].face,f[i%13]);
}
}
void shuffle(CARD deck[])
{ int i,j;
CARD temp;
for(i=0;i<52;i++)
{ j=rand()%52;
if(j!=i)
{ temp=deck[i];
deck[i]=deck[j];
deck[j]=temp;
}
}
}
void print(CARD deck[])
{ int i;
for(i=0;i<52;i++)
{ printf("%2s--%2s",deck[i].suit,deck[i].face);
printf("%c",(i+1)%4? '\t' : '\n');
}
}
7. C语言程序设计课程设计扑克牌游戏,怎么做
#include<conio.h>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
int jisuan(int);
int comptotal;
char s1[]="A234567890JQK";
//char s2[4][5]={"红桃","黑桃","草花","方块"};
char s2[4]={3,4,5,6};
int poke[52];
int ch;
int win=0;
int computer[5],user[5];
int usertotal;
int users;
int k;
int main()
{ void xipai(int poke[]);
void ai();
int i,j;
////////////////////////////////////////////////////////上面是变量和声明
printf("\n这是简单的廿一点游戏:\n");
for(i=0;i<52;i++)
{
if(i%13==0)putchar('\n');
poke[i]=i;
printf("%c%c%c ",s2[i/13],s1[i%13]=='0'?'1':' ',s1[i%13]);
}
putchar('\n');
/////////////////////////////////////////////////////////主代码
k=0;
xipai(poke);
while(ch!=27)
{ comptotal=0;
usertotal=0;
if(k>=42)
{
printf("\n剩余牌数不足十张,重新洗牌");
xipai(poke);
k=0;
}
printf("\n\n\n\n\n\n\n\n新局开始:\n");
printf("现在共有牌%2d张\n",52-k);
if(win==0)
{
computer[0]=k++;
user[0]=k++;
printf("\n电脑做庄,要牌:");
ai();
}
else
{
printf("\n玩家做庄,要牌:\n\t回车要牌\n\t空格过牌");
user[0]=k++;
computer[0]=k++;
}
printf("\n玩家开始要牌:\n");
usertotal=jisuan(poke[user[0]]);
printf("%c%c%c 共%2d点\t",s2[poke[user[0]]/13],s1[poke[user[0]]%13]=='0'?'1':' ',s1[poke[user[0]]%13],usertotal);
users=0;
ch=1;
while(ch!=32&&users<4)
{
ch=getch();
switch(ch)
{
case 27:
goto end;
break;
case 32:
break;
case 13:
user[++users]=k;
usertotal+=jisuan(poke[user[users]]);
printf("\b\b\b\b\b\b\b\b\b%c%c%c 共%2d点\t",s2[poke[k]/13],s1[poke[k]%13]=='0'?'1':' ',s1[poke[k]%13],usertotal);
k++;
if(usertotal>=21)ch=32;
break;
default:
break;
}
}
if(win==1)
{
printf("\n电脑开始要牌:\n");
ai();
}
printf("\n\n\n玩家的点数是%2d",usertotal);
printf("\n电脑的点数是%2d",comptotal);
printf("\n\n本局结算:");
if(comptotal>21&&usertotal<=21)
{
printf("\n\n电脑爆牌了");
win=1;
printf("\n恭喜,你赢了");
}
if(usertotal>21&&comptotal<=21)
{
printf("\n\n你爆牌了");
printf("\n下次小心点");
win=0;
}
if(usertotal>21&&comptotal>21)
{
printf("\n\n你们两个,怎么都这么不小心啊,都撑死了还要吗");
}
if(usertotal<=21&&comptotal<=21)
{
if(usertotal>comptotal)
{
win=1;
printf("\n\n不错,你赢了");
}
else if(usertotal<comptotal)
{
win=0;
printf("\n\n撑死胆大的,饿死胆小的,没胆子,输了吧");
}
else
printf("\n\n平了,算你走运");
}
getch();
}
end:
return 0;
}
void xipai(int poke[])
{
int y,tmp,i,j;
for(j=0;j<7;j++)
for(i=0;i<52;i++)
{
srand(time(0));
y=rand()%10;
tmp=poke[i];
poke[i]=poke[(y*i*i)%52];
poke[(y*i*i)%52]=tmp;
}
}
///////////////////////////////////////////////子函数
void ai()
{
int i;
comptotal=jisuan(poke[computer[0]]);
printf("\n%c%c%c 共%2d点\t",s2[poke[computer[0]]/13],s1[poke[computer[0]]%13]=='0'?'1':' ',s1[poke[computer[0]]%13],comptotal);
for(i=0;i<4;i++)
{
if(comptotal<17)
{
computer[i+1]=k++;
comptotal+=jisuan(poke[computer[i+1]]);
printf("\b\b\b\b\b\b\b\b\b%c%c%c 共%2d点\t",s2[poke[computer[i+1]]/13],s1[poke[computer[i+1]]%13]=='0'?'1':' ',s1[poke[computer[i+1]]%13],comptotal);
}
}
}
int jisuan(int i)
{int dian;
switch(i%13)
{
case 0:
case 10:
case 11:
case 12:
dian=1;
break;
default:
dian=i%13+1;
}
return dian;
}
8. 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();
}
9. 纸牌游戏程序设计 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开始分别为每一个玩家发牌了,这样完成发牌
再向下就不好说了,也就不说了
10. 纸牌游戏:十点半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);
}