1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 《C语言程序设计》 游戏五子棋

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

时间:2019-06-27 07:01:13

相关推荐

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

一、 内容

游戏五子棋:

这是一个可实现双人进行五子棋对战的程序。

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

如何应用本系统;本系统的应用较为简单,对战双方只需坐在电脑前面,当看到屏幕上出现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语句可以判断是否右五个连在一起的棋子,从而判断两个人的输赢。

四、 算法描述或流程图

![在这里插入图片描述](https://img-/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程序设计(第三版).清华大学出版社,

九、程序清单

#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<NUM1+1;zuo_biaox=zuo_biaox+1)

c[0][zuo_biaox]=zuo_biaox-1;

for(zuo_biaoy=1;zuo_biaoy<NUM2+1;zuo_biaoy=zuo_biaoy+1)

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+1;m=m+1){printf("\n");for(n=0;n<NUM2+1;n=n+1)printf("%d ",c[m][n]);}printf("\n");if(p>=NUM1*NUM2+1) break;

}

for(m=0;m<NUM1+1;m=m+1)

{printf(“\n”);

for(n=0;n<NUM2+1;n=n+1)printf(“%d “,c[m][n]);

printf(”\n”);}

printf(“p=%d\n”,p);

if(pW) printf(“The winner is A!\n”);

if(pV) printf(“The winner is B!\n”);

if(p==NUM1*NUM2+1)printf(“Noone win!”);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。