四子棋课程设计报告.docx

上传人:b****5 文档编号:7475106 上传时间:2023-01-24 格式:DOCX 页数:10 大小:149.71KB
下载 相关 举报
四子棋课程设计报告.docx_第1页
第1页 / 共10页
四子棋课程设计报告.docx_第2页
第2页 / 共10页
四子棋课程设计报告.docx_第3页
第3页 / 共10页
四子棋课程设计报告.docx_第4页
第4页 / 共10页
四子棋课程设计报告.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

四子棋课程设计报告.docx

《四子棋课程设计报告.docx》由会员分享,可在线阅读,更多相关《四子棋课程设计报告.docx(10页珍藏版)》请在冰豆网上搜索。

四子棋课程设计报告.docx

四子棋课程设计报告

学院

计算15级C语言课程设计报告

 

题目:

四子棋游戏

 

院(系、部)信息科学与电气工程学院

专业计算机科学与技术

课程设计报告规范

课程设计任务书

 

题目四子棋课程设计

院(部)信息科学与电气工程学院

专业计算机科学与技术

3月7日至3月20日共2周

指导教师(签字)

负责人(签字)

年月日

一、设计内容及要求

内容:

设计一个四子棋游戏程序,棋盘为11X12,先达到4子成一条线即结束游戏。

 (该程序在DOS下运行)。

要求:

(1)画出棋盘界面。

(2)定义键盘的功能,可以实现棋子左右移动及落子。

(3)棋子不能悬空,落子后不能再移动。

(4)人、人分别落子。

(5)用不同的颜色区分各方的棋子。

(6)撰写设计说明书及调试心得。

二、设计原始资料

《C程序设计(第四版)》谭浩强著

《C语言程序设计实验指导与实训》中国水利水电出版社

三、设计完成后提交的文件和图表

1.计算说明书部分

课程设计报告(同时提交纸质版和电子版)

源程序(电子版)

程序的可执行文件(.exe)(电子版)

2.图纸部分:

程序主流程图:

流程图

开始

画棋盘

控制游戏开始,并且玩家落子

写棋子并计算棋子的位子

 

判断棋盘中是否有横,竖,斜线上是否有四子练成直线。

 

继续落子,直到下完

 

结束

 

四、进程安排

此处按照2周安排,前几天以查阅资料、分析问题、设计方案为主描述;中间以设计编程测试为主描述;最后以测试完善为主描述,第2周周五进行答辩,完成答辩后则整理资料撰写课程设计报告。

五、主要参考资料

《C程序设计(第四版)》谭浩强著

《C语言程序设计实验指导与实训》中国水利水电出版社

1课程设计的任务及要求

1.1设计任务

1.2任务要求

2程序设计思路

2.1主程序及流程图

2.2棋盘及棋子的绘制

2.3判断胜负

3程序测试

3.1开始界面

3.2输赢情况

4程序中未能解决的问题

5程序设计小结及心得

 

摘要

四子棋的程序中包含许多模块,其中有棋盘的绘制,棋子的绘制以及棋子坐标位置的计算,棋子胜负的算法等等,在主程序中需要将这些模块链接起来。

1.课程设计的任务及要求

1.1设计任务

设计一个四子棋游戏程序,棋盘为12X11,先达到4子成一条线即结束游戏。

(该程序在DOS下运行)。

1.2任务要求 

(1)画出棋盘界面。

 

(2)定义键盘的功能,可以实现棋子左右移动及落子。

(3)棋子不能悬空,落子后不能再移动。

 

(4)人、人分别落子。

 

(5)用不同的颜色区分各方的棋子。

 

(6)撰写设计说明书及调试心得。

2.程序设计思路

2.1主程序流程图 

程序主流程图:

开始

控制游戏开始,并且玩家落子

写棋子并计算棋子的位子

 

画棋盘

 

判断棋盘中是否有横,竖,斜线上是否有四子练成直线。

 

继续落子,直到下完

结束

2.2棋盘及棋子的绘制

开始划线

画出上边框

 

利用循环画出竖线加棋子

 

画出上边框

 

完成划线

 

绘制棋盘代码:

voidqipan()

{

inti,j;

printf("退出请选择0!

\n");

printf("┏━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┓\n");

printf("┃⑴┃⑵┃⑶┃⑷┃⑸┃⑹┃⑺┃⑻┃⑼┃⑽┃⑾┃⑿┃\n");

printf("┣━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━┫\n");

for(i=10;i>=0;i--)

{

printf("┃");

for(j=0;j<=11;j++)

{

if(L[i][j]==0)

printf("┃");

if(L[i][j]==2)

printf("●┃");

if(L[i][j]==3)

printf("○┃");

}

if(i>0)

printf("\n┣━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━┫\n");

if(i==0)

printf("\n┗━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┛\n");

}

}

2.3判断胜负

胜负判断的算法:

该算法的作用主要是判断玩家的落子后是否构成胜负关系,以及给出胜负的具体一方,该算法主要是通过一个二维数组来表示棋子的位置,通过计算某个棋子周围3个棋子的颜色来判断是否胜利。

程序源代码:

(以黑棋胜利为例,白棋同理)

{inta,b,c,d;a,b代表所下棋子的坐标

d=0;c代表向各个方向找3个棋子

for(a=0;a<=11;a++)d代表相同棋子的个数

for(b=0;b<=10;b++)

{if(L[a][b]>0)

{if(L[a][b]==2)

{for(c=3;c>=-3;c--)

{if(L[a-c][b]==2)

d++;

else

d=0;

if(d==4)

{d=0;

printf("黑方胜。

");竖4子胜利情况

return0;

}

}

for(c=3;c>=-3;c--)

{if(L[a][b-c]==2)

d++;

elsed=0;

if(d==4)

{d=0;

printf("黑方胜。

");横4子胜利情况

return0;

}

}

for(c=3;c>=-3;c--)

{if(L[a+c][b+c]==2)

d++;

elsed=0;

if(d==4)

{d=0;

printf("黑方胜。

");撇4子胜利情况

return0;

}

}

for(c=3;c>=-3;c--)

{if(L[a+c][b-c]==2)

d++;

elsed=0;

if(d==4)

{d=0;

printf("黑方胜。

");捺4子胜利情况

return0;}

 

3.程序测试

3.1进入游戏

3.2胜利情况测试

4程序中未能解决的问题

这个程序有个很大的不足之处,在填满整个棋盘的过程中游戏会中途崩盘,自动退出到开始界面。

希望在今后的学习中能够解决这一问题。

5程序设计心得

这次课程设计使我使我认识到我在C语言学习上的很多严重不足,现在算法编制不简洁,程序冗长,出现即使是自己编写的也造成很难读懂的情况,对一些命令认识有很大的疏漏,对命令的含义和使用方法理解的不够深刻。

通过这次的课程设计,对我编程方法掌握时有很大帮助,我发现并解决了平常一些不明显但实际上却很严重的问题,我对模块化的编程方式也有了更深的理解,我想我会在以后的课程设计中克服这次课程设计所暴露的问题,不在犯类似的错误。

对于程序中难以解决的问题,可以尝试通过小组合作解决,小组合作解决不了就一定要多请教老师不能放着不管。

软件的设计依靠团体中的每一个人共同努力,相互协作,才能做到最好。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1