五子棋源码实验报告及人机对战说明

五子棋源码实验报告及人机对战说明

ID:35209235

大小:239.50 KB

页数:25页

时间:2019-03-21

五子棋源码实验报告及人机对战说明_第1页
五子棋源码实验报告及人机对战说明_第2页
五子棋源码实验报告及人机对战说明_第3页
五子棋源码实验报告及人机对战说明_第4页
五子棋源码实验报告及人机对战说明_第5页
资源描述:

《五子棋源码实验报告及人机对战说明》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、1.五子棋对战说明2.实验报告3.源代码五子棋作品特点:C语言程序五子棋作品功能:五子棋人机对战,人人对战。目录:1五子棋介绍。2五子棋棋型介绍。3人人对战的实现。4电脑下子的实现。5棋型价值的计算。6胜利及棋型的判断。7补充说明1五子棋介绍。五子棋是一种两人对弈的纯策略型棋类游戏。只要任意一方在棋盘上且同一个回合上连为五子为胜。还有禁手规则,在本程序中不作讨论。2五子棋棋型介绍。25本程序中的棋型均为本人自定义。本程序总共设计35种棋型。●表示玩家的棋子,◎表示电脑的棋子。以下称电脑方为己方,玩家方为

2、对方。从一空点向某一方向判断该方向的棋型。某一方向指1-8方向从右顺时针开始数。(1)空棋型。从一空点向一方向看连续2个为空的棋型。空棋型共1种。如图,从左端的空点向右看会发现有连续2个空点。(2)活棋型。2端无挡的棋型为活棋型。活棋型共8种:己方4种,对方4种。左图为己活3。从左端的空点向右看会发现己方有连续的3个子,且右端无挡。故该点的1方向为己活3。左图为对活2(3)冲棋型。1端无挡的棋型为冲棋型。冲棋型共9种:己方4种,对方4种,边界1种。左图为边界冲棋型。空点的右端为边界。或左图25为己冲2。

3、从左端的空点向右看会发现己方有连续的2个子,且右端有挡(此处有挡表示有对方的子或为边界)。故该点的1方向为己冲2。左图为对冲4。(1)空活棋型。从一空点向一方向看有1个空点,继续看有己方或对方的活棋型。空活棋型共8种:己方4种,对方4种。左图为己空活2。从左端的空点向右看有1个空点,继续看会发现己方有连续的2个子,且右端无挡。故该点的1方向为己空活2。左图为对空活1。(2)空冲棋型。从一空点向一方向看有1个空点,继续看有己方或对方或边界冲棋型。空冲棋型共9种:己方4种,对方4种,边界1种。左图为边界空冲

4、棋型。空点的右端为空点再右看为边界。或左图为己空冲2。从左端的空点向右看有1个空点,继续看会发现己方有连续的2个子,且右端有挡。故该点的1方向为己空冲2。2人人对战的实现。25双方玩家轮流下子,直到一方形成五连即判为胜方。下子时输入棋盘上显示的对应坐标。如果某方需要悔棋,则输入1515即可。悔棋只能悔一步。在人机对战中亦可悔棋。1电脑下子的实现。人机对战中电脑下子是通过AI(int*p,int*q)这个函数实现的。用p、q返回下子的坐标。先历遍棋盘上所有点,如发现一个空点则调用函数value(intp,

5、intq)计算该空点的价值。每个点又由8个方向的棋型组成。调用函数qixing(intn,intp,intq)判断空点pq在n方向上的棋型号。对每种棋型进行赋值,然后对各个方向的棋型进行分析。最后计算出该空点的价值。如此找到棋盘上价值最大的空点,则电脑在该处下子。5棋型价值的计算。棋型价值的计算是通过函数value(intp,intq)实现的。先调用函数qixing(intn,intp,intq)判断空点pq在n方向上的棋型号。n为1-8方向从右顺时针开始数。对8个方向的棋型进行分析后给出该点的价值。各

6、种棋型的价值存在数组a[2][4][4]中。本程序将两相反方向的棋型进行合在一起进行分析。本程序分为六类进行讨论。25①空棋型and其他。②边界冲棋型and其他。③边界空冲棋型and其他。④己活己活己活己冲对活对活对活对冲。⑤己活对活己活对冲己冲对活己冲对冲。⑥其他棋型。⑦6胜利及棋型的判断。胜利及棋型的判断都调用了函数yiwei(intn,int*i,int*j)。在n方向上对坐标ij移位。n为1-8方向从右顺时针开始数。胜利的判断:每下一次子从该点向1方向移位,移位后判断新点是否与下的子相同。如相同

7、则继续移位判断,否则转向判断即n+=4;如转向后仍然没五连,则换下一个方向判断即n-=3;直到出现五连则胜利,如果8个方向判断完都没有五连则返回0,表示还未胜利。棋型的判断:棋型的判断主要运用switch语句。在某一方向移位后判断该点的状态。最后得出该方向上的棋型号。7补充说明251.在WIN7环境下用VC++运行棋盘之间有空隙,影响美观。建议在XP操作系统下运行。2.程序经过多次修改。各次修改如下:V1.1修改了胜负判断函数win的算法。V1.2加上了人人对战的功能,并加上了开始界面。V1.3增加了一

8、些注释,并对棋型值数组做了更改。V1.4修正了2个BUG,进一步对棋型值数组做了更改。V1.5修改了画棋盘draw的算法,改变了主函数main,增加函数start,并增加了赢棋之后是否继续的功能,还完善了各棋型的赋值,进一步对棋型值数组做了更改。实验报告2014–2015学年第一学期任课老师:课程名称结构化程序综合设计班级学号姓名实验题目设计一个简单五子棋游戏程序实验时间实验开始日期:报告提交日期:实验目的、要求实验题目设计一个简单五子棋游

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。