一、 内容
游戏五子棋:
这是一个可实现双人进行五子棋对战的程序。
主要功能是双人可以自由的进行五子棋对战,并可以按自己的意愿随意的改变棋盘的长、宽(注意:长和宽必须相等)。
如何应用本系统;本系统的应用较为简单,对战双方只需坐在电脑前面,当看到屏幕上出现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-blog.csdnimg.cn/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<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!”);}

《C语言程序设计》 游戏五子棋相关推荐

  1. C语言小游戏-五子棋

    C语言小游戏-五子棋 全部代码如下: #include <easyx.h> #include <graphics.h> #include <conio.h> #in ...

  2. C语言小游戏---------------------五子棋

    这是一个用C语言实现的控制台小游戏--五子棋,棋盘大小和获胜棋子数目是用宏定义的,可以自定义,所以可以轻松改为三子棋.六子棋等等.此游戏设定为人机对战(PVE),电脑走棋是随机的. 编译环境:VS20 ...

  3. c语言手机游戏五子棋代码,C语言案例:控制台版本的五子棋游戏【代码】

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 return true; } x++; } return false; } bool isLeftInclinedWin(bool isBlack,int ...

  4. c语言程序设计五子棋论文,C语言程序设计 课程设计(论文) 五子棋游戏

    内容简介: C语言程序设计 课程设计(论文) 五子棋游戏,正文共21页,4231字. 目 录 第1章 课程设计的目的与要求1 1.1 课程设计目的1 1.2 课程设计的实验环境1 1.3 课程设计的预 ...

  5. C语言扫地雷游戏的题目简介,C语言程序设计课程设计(论文)-扫地雷游戏.doc...

    C语言程序设计课程设计(论文)-扫地雷游戏 辽 宁 工 业 大 学 C语言程序设计 课程设计(论文) 题目: 扫地雷游戏 院(系): 软件学院 专业班级: 电子商务091班 学 号: 学生姓名: 指导 ...

  6. c语言程序设计 猜数字,C语言程序设计(猜数字游戏)报告.doc

    C语言程序设计(猜数字游戏)报告 <高级语言程序设计>课程设计 题目:班级:09R3 学生姓名:谢泽雄 学生学号:200931000622 指导老师:提交时间:华南农业大学信息(软件)学院 ...

  7. 用c语言做一个五子棋程序,C语言制作简单五子棋游戏

    原标题:C语言制作简单五子棋游戏 C语言制作简单的五子棋游戏 学习C语言的人很多,但是用C语言很少,而用来为自己所用,来做游戏的人就更少了,很多人都是跟着学校学习,学校讲到哪就坐到哪,但是以后却还是不 ...

  8. c语言程序设计 猜数字,猜数字游戏c语言编程,c语言编程 编一个猜数字游戏

    c语言编程 编一个猜数字游戏 #include #include #include #include void main()/*主函数*/ { int a,b,times=0,i,j,guess=0, ...

  9. c语言俄罗斯方块程序设计论文,c语言俄罗斯方块游戏程序设计报告

    c语言俄罗斯方块游戏程序设计报告 俄罗斯方块程序设计报告 2018-7-1511 计本(2)班 卢文俊C 语言课程设计报告主标题: C 语言课程设计 副标题: 俄罗斯方块游戏 ----界面设计姓 名: ...

最新文章

  1. SiteMesh介绍
  2. R语言ggplot2可视化:可视化堆叠的直方图、添加每个分组的每个bin的计数标签、在堆叠直方图的bin中的每个分组部分添加数值标签
  3. [HOW TO]-官网拉取Trusty-TEE的代码
  4. HDU4577(2013年ACM杭州赛区邀请赛B题)
  5. 性能优化实战|使用eBPF代替iptables优化服务网格数据面性能
  6. python字典导入mongodb_python连接mongoDB进行数据提取→常用操作指南
  7. linux usb键盘驱动详解
  8. 【python】类的封装、多态
  9. eZ Publish 2013.4 发布,CMS 内容管理系统
  10. 背水一战 Windows 10 (53) - 控件(集合类): ItemsControl 的布局控件 - ItemsStackPanel, ItemsWrapGrid...
  11. springCloud Finchley 实战入门(基于springBoot 2.0.3)【五 Hystrix 服务容错保护】
  12. 天网防火墙的最新破解方法
  13. RHEL7挂载本地yum源
  14. beego框架:static目录下的apk文件浏览器下载使用正常,手机浏览器下载无法解析安装
  15. 凭证 金蝶_5分钟学会金蝶软件凭证录入!
  16. 微信小程序 录音之获取、保存、读取
  17. Java8流处理正序倒序排序
  18. 超详细的WMS仓储管理系统介绍——盘点篇
  19. Junit单元测试报错Class not found可能原因
  20. 太给力了!40000字整理了机器学习面试200题!

热门文章

  1. 利用Python实现高斯混合模型(GMM)
  2. ROS2与C++入门教程-编写服务端和客户端 - 创客智造
  3. 入职一个月的总结——实习生
  4. ONF组织的SDN架构文档——原理与架构构件(二/一)
  5. PPT背景图片怎么设置?4个详细教程在这!
  6. 计算平均分(C语言)
  7. 弗洛伊德算法Floyed(求各顶点间最短路径):可打印最短路径
  8. php万人同时连接,5G能容纳多少人同时上网?号称100万,实际1万人就卡了!
  9. 设置Windows 7锁屏背景图片
  10. 深圳梅林中学2021年高考成绩查询,梅林中学高考上重本79人