您的位置:首页 > 其它

模拟游戏过程的一个程序

2010-06-25 20:46 225 查看
两位玩家手中各有相同的七张牌,牌面大小1-7。游戏时每人出一张牌,谁大谁把对方的牌拿来,赢的一方把比较的两张牌置于牌堆底部。如果牌大小相同就比下一张直到分出大小,赢得一方把比较的所有牌拿来置于牌堆底部。如果都一样则游戏结束。写一个程序模拟比赛过程。

#include<stdio.h>

#include<conio.h>

//初始化AB数组

void initialize(int a[],int b[])

{

 int i;

 printf("a[7]=");

 for(i=0;i<7;++i)

    scanf("%d",&a[i]);

 printf("b[7]=");

 for(i=0;i<7;++i)

    scanf("%d",&b[i]);

 for(i=7;i<14;++i)

    b[i]=a[i]=0;

}

//每步游戏后输出两人手中的牌

void consequence_print(int a[],int b[],FILE *fp)

{

 int i;

 for(i=0;i<14;++i)

    fprintf(fp,"%d",a[i]);

 fprintf(fp,"   ");

 for(i=0;i<14;++i)

    fprintf(fp,"%d",b[i]);

 fprintf(fp,"/n");

}

//判断游戏是否结束

void judge(int a[],int b[],FILE *fp)

{

 if(0==a[0]||0==b[0])

   {

    consequence_print(a,b,fp);

    fprintf(fp,"game is over!");

    fclose(fp);

    exit(1);

   }

}

//游戏过程

void process(int a[],int b[],FILE *fp)

{

  int i,k,n,fab,c[14];

 

  for(i=0,k=0;i<9&&a[i]!=0&&b[i]!=0;++i)

     {

      if(a[i]!=b[i])

        {

         c[k]=a[i];

         n=++k;

         c[k]=b[i];

         if(a[i]>b[i])

           fab=1;

         else

           fab=-1;

         break;

        }

      else

        {

          c[k]=a[i];

          ++k;

          c[k]=b[i];

          ++k;

         if(0==a[i+1]||0==b[i+1])

           {

            fprintf(fp,"game is over!");

            fclose(fp);

            exit(1);

            }

         }

      }

 

  ++i;

  for(k=0;k<14-i;++k)

     {

       a[k]=a[k+i];

       b[k]=b[k+i];

      }

  for(k=14-i;k<14;++k)

      a[k]=b[k]=0;

     

 

  if(fab==1)

    {

     for(i=0;a[i]!=0;++i);

     for(k=0;k<=n;++i,++k)

        a[i]=c[k];

    }

  else

    {

     for(i=0;b[i]!=0;++i);

     for(k=0;k<=n;++i,++k)

        b[i]=c[k];

     }

}

void main()

{

 FILE *fp;

 int a[14],b[14];

 char *filename="D://游戏结果.txt";

 if((fp=fopen(filename,"wt"))==NULL)

   {

    exit(0);

   }

 initialize(a,b);

 consequence_print(a,b,fp);

 while(1)

      {

       judge(a,b,fp);

       process(a,b,fp);

       consequence_print(a,b,fp);

      }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  游戏 fp file c null
相关文章推荐