斗地主数组模拟实现(仅大体部分)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了斗地主数组模拟实现(仅大体部分)相关的知识,希望对你有一定的参考价值。
(游戏类代码判断情况比较多 往往是核心最多) 以下代码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(); }
以上是关于斗地主数组模拟实现(仅大体部分)的主要内容,如果未能解决你的问题,请参考以下文章