《C语言程序设计》 游戏五子棋

《C语言程序设计》 游戏五子棋,第1张


一、 内容
游戏五子棋:
这是一个可实现双人进行五子棋对战的程序。



主要功能是双人可以自由的进行五子棋对战,并可以按自己的意愿随意的改变棋盘的长、宽(注意:长和宽必须相等)。



如何应用本系统;本系统的应用较为简单,对战双方只需坐在电脑前面,当看到屏幕上出现A:inputx&y:时,其中一个人就可以输入自己要放的位置,如输入2空格3后,按回车键,这个人的棋子就会出现在第三行、第二列的位置。


这时,屏幕上会出现B:inputx&y:的字样,第二个人就可以输入自己要走的位置了,同样,输完之后也按回车。


就这样双方重复下去,直到屏幕上出现The winner is A或者The winner is B为止,这时就可以根据英文的意思直到是第一个人赢还是第二个人赢了。


只要根据这些就可以轻松的运行本程序了。



二、 上机环境
*** 作系统:Windows XP或Windows 2000
开发工具:VC6.0


三、 各函数功能说明
主函数功能说明:本程序的功能是为了实现两个人之间的五子棋对战。


这一功能主要是通过两个较大的switch语句实现的,先定义了三个二维数组,其中a[NUM1][NUM2]和b[NUM1][NUM2]是表示两个人的,而c[NUM1+1][NUM2+2]是表示棋盘和两个人的棋子位置的。


两个switch语句是分别判断a[NUM1][NUM2]和b[NUM1][NUM]两个数组的,其中每一个switch语句包含四个case语句,这四个语句是用来判断前后数值、上下数值、右倾斜数值和左倾斜数值是否与自己相同的,通过这四个case语句可以判断是否右五个连在一起的棋子,从而判断两个人的输赢。



四、 算法描述或流程图



![在这里插入图片描述](http://www.kaotop.com/file/tupian/20220411/15e10723be114df8afa3672a21761aff.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bKa5bWF,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center



七、体会
通过对本程序的编写和分析,体会颇多。


首先,对C语言有了一个新的认识,虽然说C语言学习计算机的基础类语言,但是通过编写本程序发现,可能并且完全能够使用C语言编写程序来完成一个较大的任务。


其次,对C语言中典型语句有了更深的理解,尤其是对本程序中反复涉及到的switch语句、while语句、if语句和for语句的理解最为深刻,通过这次课程设计,更熟练了对这些语句以及他们彼此之间相互嵌套的使用。



但是通过对本程序的进一步分析,也发现了本程序的一些不足,比如说本程序中的switch语句、while语句、if语句和for语句之间的彼此嵌套过于繁琐,如果可以用函数调用代替的话,那么整个程序的层次感就会更加分明,效果也会更好,程序本身也更加容易理解。


还有一个较大的缺点就是在编写流程图时,遇到的很多问题不能很恰当的解决,导致所编的流程图存在着几处缺陷。


这些不足都需要在以后的学习中加以弥补和改进。




八、参考文献
谭浩强.C程序设计(第三版).清华大学出版社,2005
九、程序清单

#include"stdio.h"
#include"math.h"
#define NUM1 9
#define NUM2 9
#define W 83
#define V 84
main()
{static int a[NUM1][NUM2],b[NUM1][NUM2],c[NUM1+1][NUM2+1];

int x,y,i,j,m,n,f=1;
int p=0;
int zuo_biaox=0,zuo_biaoy=0;

for(zuo_biaox=1;zuo_biaox c[0][zuo_biaox]=zuo_biaox-1;
for(zuo_biaoy=1;zuo_biaoy c[zuo_biaoy][0]=zuo_biaoy-1;
for(p=0;p<=NUM1*NUM2;p=p+1)
{int e=1;
int m1=1,n1=1,t1=0,s1=0,flag1=0,flak1=0,z1=0;
int m2=1,n2=1,t2=0,s2=0,flag2=0,flak2=0,z2=0;
int m3=1,n3=1,t3=0,s3=0,flag3=0,flak3=0,z3=0;
int m4=1,n4=1,t4=0,s4=0,flag4=0,flak4=0,z4=0;
f=-f;
if(f<0)
printf(“A: inputx&y:\n”);
if(f>0)
printf(“B: inputx&y:\n”);
scanf(“%d %d”, &x,&y );
if((x>=NUM2)||(y>=NUM1))
{f=-f;printf(“the number is too big !\n”);continue;}
if(c[y+1][x+1]!=0)
{f=-f;printf(“you can not put here!\n”);continue;}
i=x;
j=y;
if(f<0){c[j+1][i+1]=1,c[0][0]=1;}
if(f>0){c[j+1][i+1]=2,c[0][0]=2;}

 if(f<0)
  {a[j][i]=1;
   for(e=1 ;e<=4;e=e+1)
   {switch(e)
    {case 1:
       while((m1<=5)&&(flag1==0))
             {if(a[j][i+m1]/1==1) 
     {m1=m1+1,t1=t1+1,printf("t1=%d \n",t1);}
             else flag1=1;
             } 

        while ((n1<=5)&&(flak1==0))
             {if(a[j][i-n1]/1==1) 
      {n1=n1+1,s1=s1+1,printf(" s1=%d \n",s1);}
               else flak1=1;
              } 
              z1=s1+t1+1;
        if(z1>=5) {p=W ;e=10;} 
              break;
     case 2:
        while ((m2<=5)&&(flag2==0))
              {if(a[j+m2][i]/1==1) 
     {m2=m2+1,t2=t2+1,printf("t2=%d \n",t2);}
               else flag2=1;
               }
        while ((n2<=5)&&(flak2==0))
               {if(a[j-n2][i]/1==1) 
     {n2=n2+1,s2=s2+1,printf(" s2=%d \n",s2);}
                 else flak2=1;
                }
        z2=s2+t2+1;
        if(z2>=5)  {p=W ;e=10;}
                break;
     case 3:
        while ((m3<=5)&&(flag3==0))
             {if(a[j-m3][i+m3]/1==1) 
     {m3=m3+1, t3=t3+1,printf("t3=%d \n",t3);}
              else flag3=1;
                } 
        while ((n3<=5)&&(flak3==0))
              {if(a[j+n3][i-n3]/1==1) 
     {n3=n3+1,s3=s3+1,printf(" s3=%d \n",s3);}
               else flak3=1;
              }
        z3=s3+t3+1;
        if(z3>=5)  {p=W; e=10;}
                 break;
     case 4:
        while ((m4<=5)&&(flag4==0))
              {if(a[j-m4][i-m4]/1==1) 
     {m4=m4+1,t4=t4+1,printf("t4=%d \n",t4);}
               else flag4=1;
              }
        while ((n4<=5)&&(flak4==0))
              {if(a[j+n4][i+n4]/1==1) 
     {n4=n4+1,s4=s4+1,printf(" s4=%d \n",s4);}
               else flak4=1;
               }
        z4=s4+t4+1;
        if(z4>=5)  {p=W; e=10;}
                 break;
   }  
  }
 }
 if(f>0) /*判断b 数组*/
  {b[j][i]=2;
    for(e=1 ;e<=4;e=e+1)
    {switch(e)
     {case 1:
        while ((m1<=5)&&(flag1==0))
           {if(b[j][i+m1]/2==1) 
     {m1=m1+1,t1=t1+1,printf("t1=%d \n",t1);}
            else flag1=1;
            }
        while ((n1<=5)&&(flak1==0))
            {if(b[j][i-n1]/2==1) 
     {n1=n1+1,s1=s1+1,printf(" s1=%d \n",s1);}
             else flak1=1;
             } 
        z1=s1+t1+1;
        if(z1>=5)  {p=V; e=10;}
              break;
     case 2:
        while ((m2<=5)&&(flag2==0))
             {if(b[j+m2][i]/2==1) 
     {m2=m2+1, t2=t2+1,printf("t2=%d \n",t2);}
              else flag2=1;
             }
        while ((n2<=5)&&(flak2==0))
             {if(b[j-n2][i]/2==1) 
     {n2=n2+1,s2=s2+1,printf(" s2=%d \n",s2);}
              else flak2=1;
              }
         z2=s2+t2+1;
         if(z2>=5)  {p=V; e=10;}
               break;
     case 3:
        while ((m3<=5)&&(flag3==0))
             {if(b[j-m3][i+m3]/2==1) 
     {m3=m3+1, t3=t3+1,printf("t3=%d \n",t3);}
              else flag3=1;
              }
        while ((n3<=5)&&(flak3==0))
              {if(b[j+n3][i-n3]/2==1) 
     {n3=n3+1,s3=s3+1,printf(" s3=%d \n",s3);}
               else flak3=1;
               }
        z3=s3+t3+1;
        if(z3>=5) {p=V; e=10;}
                break;
     case 4:
        while ((m4<=5)&&(flag4==0))
             {if(b[j-m4][i-m4]/2==1) 
     {m4=m4+1, t4=t4+1,printf("t4=%d \n",t4);}
              else flag4=1;
              }                                while ((n4<=5)&&(flak4==0))
         {if(b[j+n4][i+n4]/2==1) 
    {n4=n4+1,s4=s4+1,printf(" s4=%d \n",s4);}
          else flak4=1;
          }
       z4=s4+t4+1;
       if(z4>=5)  {p=V; e=10;}
                break;
   }
  }
 }
 for(m=0;m=NUM1*NUM2+1) break;

}
for(m=0;m {printf(“\n”);
for(n=0;n printf(”\n”);}
printf(“p=%d\n”,p);
if(pW) printf(“The winner is A!\n”);
if(p
V) printf(“The winner is B!\n”);
if(p==NUM1*NUM2+1)printf(“Noone win!”);}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/579916.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-11
下一篇2022-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存