(游戏类代码判断情况比较多 往往是核心最多)
以下代码ckeck部分亦待修改
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#include<string.h>
#define n 14
#define m 4
void paixu(int v[])
{
int i=0,j=0,t=0;
for(i=0;i<20;i++)
{
for(j=0;j<19-i;j++) { if(v[j]>v[j+1]) {t=v[j+1];v[j+1]=v[j];v[j]=t;} }
}
}
void display(int v[])
{
int i=0;
printf("\n");
paixu(v);
for(i=0;i<20;i++)
{
if (v[i]!=0&&v[i]<11) printf("%3d",v[i]);
if (v[i]==11) printf(" J ");
if (v[i]==12) printf(" Q ");
if (v[i]==13) printf(" k ");
if (v[i]==14) printf(" A ");
if (v[i]==15) printf(" 2 ");
if (v[i]==16) printf(" 小王 ");
if (v[i]==17) printf(" 大王 ");
}
printf("\n");
}
void fapai(int a[],int b[],int c[])
{
printf("\n 玩家 n1 a的牌 \n");
display(a);
printf("\n 玩家 n2 b的牌 \n");
display(b);
printf("\n 玩家 n3 c的牌 \n");
display(c);
}
int check(int v[])
{
int i=0,count=0;
if(v[i]!=0) count++;
if(count==0) { printf(" \n win\n ");}
return count;
}
void player(int aa[],int c[],int cc[])
{
int i,j,k;
int count=0;
int xx=0,x;
for(i=0;i<20;i++)
{ cc[i]=0; if(aa[i]!=0) count++; }
printf(" \n count=%d \n ",count);
if(count==0) {printf(" \n enter anycard \n ");scanf("%d",&x);cc[0]=x;printf(" \n cc%d \n ",cc[0]);for(i=0;i<20;i++)if(c[i]==c[0])c[i]=0; }
if(count==1) {printf(" \n enter onecard \n ");scanf("%d",&x);cc[0]=x;printf(" \n cc%d \n ",cc[0]);for(i=0;i<20;i++)if(c[i]==c[0])c[i]=0; }
if(count==2) {printf(" \n enter twocards \n ");scanf("%d",&x);cc[0]=x;scanf("%d",&x);cc[1]=x;printf(" \n cc%d , %d \n ",cc[0],cc[1]); }
paixu(cc);
}
void playee(int cc[],int b[],int bb[])
{
int i,j,k;
int count=0;
int xx=0,x;
for(i=0;i<20;i++)
{ bb[i]=0; if(cc[i]!=0) count++; }
printf(" \n count=%d \n ",count);
if(count==0)
{
printf(" \n enter anycard \n ");//for(i=0;i<20;i++)if(b[i]>cc[19]){ bb[0]=b[i]; b[i]=0;}
}
paixu(bb);
}
void play(int a[],int b[],int c[])
{
int aa[20]={0},na=0;
int bb[20]={0},nb=0;
int cc[20]={0},nc=0;
int num=5;
while(num--)
{
player(aa,c,cc); nc=check(c);
playee(cc,b,bb); nb=check(b);
playee(bb,a,aa); na=check(a);
//if(na<num)num=a; if(nb<num)num=b; if(nc<num) num=c;
}
}
void main()
{
int r,l;
int x[n][m]={0};
int a[20]={0},b[20]={0},c[20]={0};
int i,j,k=0;
time_t t;
srand((unsigned)time(&t));
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
x[i][j]=i+3;
// printf("%3d",x[i][j]);
}
}
//x[13][0]=16;
x[13][1]=17;
x[13][2]=0;
x[13][3]=0;
while(k<17)
{
r=rand()%14;
l=rand()%4;
if(x[r][l]!=0){ a[k]=x[r][l];x[r][l]=0;k++;}
// else continue;
}
k=0;
while(k<17)
{
r=rand()%14;
l=rand()%4;
if(x[r][l]!=0){ b[k]=x[r][l];x[r][l]=0;k++;}
// else continue;
}
k=0;
for(i=0;i<14;i++)
{ for(j=0;j<4;j++)
{
if(x[i][j]!=0) { c[k]=x[i][j]; k++; }
}
}
fapai(a,b,c);
play(a,b,c);
//num();
}原文:http://wzsts.blog.51cto.com/10251779/1749701