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

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
五子棋源码实验报告及人机对战说明

五子棋对战说明 实验报告 源代码 五 子 棋 作品特点:C语言程序 五子棋 作品功能:五子棋人机对战,人人对战。 目录:1 五子棋介绍。 五子棋棋型介绍。 人人对战的实现。 电脑下子的实现。 棋型价值的计算。 胜利及棋型的判断。 补充说明 五子棋介绍。 五子棋是一种两人对弈的纯策略型棋类游戏。只要任意一方在棋盘上且同一个回合上连为五子为胜。还有禁手规则,在本程序中不作讨论。 五子棋棋型介绍。 本程序中的棋型均为本人自定义。本程序总共设计35种棋型。●表示玩家的棋子,◎表示电脑的棋子。以下称电脑方为己方,玩家方为对方。从一空点向某一方向判断该方向的棋型。某一方向指1-8方向 从右顺时针开始数。 空棋型。从一空点向一方向看连续2个为空的棋型。空棋型共1种。 如图,从左端的空点向右看会发现 有连续2个空点。 活棋型。2端无挡的棋型为活棋型。活棋型共8种:己方4种,对方4种。 左图为 己活3 。从左端的空点向右看会发现己方有连续的3个子,且右端无挡。故 该点的1方向为己活3。 左图为 对活2 冲棋型。1端无挡的棋型为冲棋型。冲棋型共9种:己方4种,对方4种,边界1种。 左图为边界冲棋型。空点的右端为边界。 或 左图为 己冲2。从左端的空点向右看会发现己方有连续的2个子,且右端有挡(此处有挡表示有对方的子或为边界)。故该点的1方向为己冲2。 左图为 对冲4。 空活棋型。从一空点向一方向看有1个空点,继续看有己方或对方的活棋型。空活棋型共8种:己方4种,对方4种。 左图为 己空活2。从左端的空点向右看有1个空点,继续看会发现己方有连续的2个子,且右端无挡。故该点的1方向为己空活2。 左图为 对空活1。 空冲棋型。从一空点向一方向看有1个空点,继续看有己方或对方或边界冲棋型。空冲棋型共9种:己方4种,对方4种,边界1种。 左图为边界空冲棋型。空点的右端为空点再右看为边界。 或左图为 己空冲2。从左端的空点向右看有1个空点,继续看会发现己方有连续的2个子,且右端有挡。故该点的1方向为己空冲2。 人人对战的实现。 双方玩家轮流下子,直到一方形成五连即判为胜方。下子时输入棋盘上显示的对应坐标。如果某方需要悔棋,则输入 15 15 即可。悔棋只能悔一步。在人机对战中亦可悔棋。 电脑下子的实现。 人机对战中电脑下子是通过AI(int *p,int *q)这个函数实现的。用p 、q返回下子的坐标。先历遍棋盘上所有点,如发现一个空点则调用函数value(int p,int q)计算该空点的价值。每个点又由8个方向的棋型组成。调用函数qixing(int n,int p,int q)判断空点p q在n方向上的棋型号。对每种棋型进行赋值,然后对各个方向的棋型进行分析。最后计算出该空点的价值。如此找到棋盘上价值最大的空点,则电脑在该处下子。 5 棋型价值的计算。 棋型价值的计算是通过函数value(int p,int q)实现的。先调用函数qixing(int n,int p,int q) 判断空点p q在n方向上的棋型号。n为1-8方向 从右顺时针开始数。对8个方向的棋型进行分析后给出该点的价值。各种棋型的价值存在数组a[2][4][4]中。本程序将两相反方向的棋型进行合在一起进行分析。本程序分为六类进行讨论。 空棋型and其他。 边界冲棋型and其他。 边界空冲棋型and其他。 己活己活 己活己冲 对活对活 对活对冲。 己活对活 己活对冲 己冲对活 己冲对冲。 其他棋型。 6 胜利及棋型的判断。 胜利及棋型的判断都调用了函数yiwei(int n,int *i,int *j)。在n方向上对坐标 i j 移位。 n为1-8方向 从右顺时针开始数。 胜利的判断:每下一次子从该点向1方向移位,移位后判断新点是否与下的子相同。如相同则继续移位判断,否则转向判断即n+=4;如转向后仍然没五连,则换下一个方向判断即n-=3;直到出现五连则胜利,如果8个方向判断完都没有五连则返回0,表示还未胜利。 棋型的判断:棋型的判断主要运用switch语句。在某一方向移位后判断该点的状态。最后得出该方向上的棋型号。 7 补充说明 1.在WIN7环境下用VC++运行棋盘之间有空隙,影响美观。建议在XP操作系统下运行。 2.程序经过多次修改。各次修改如下: V1.1 修改了胜负判断函数win的算法。 V1.2 加上了人人对战的功能,并加上了开始界面。 V1.3 增加了一些注释,并对棋型值数组做了更改。 V1.4 修正了2个BUG,进一步对棋型值数组做了更改。 V1.5 修改了画棋盘draw的算法,改变了主函数main,增加函数start,并增加了赢棋之后是否继续的功能,

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档