- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
人机对战五子棋设计
——算法设计
一、五子棋基本规则
五子棋行棋时,黑棋先下第一子,后白棋在黑棋周围的交叉点落子,之后黑白双方相互顺序落子。
最先在棋盘线交点横向,纵向,斜向形成连续的五个棋子的一方为胜。
二、五子棋程序设计
1.程序设计思想
本程序要实现五子棋的游戏功能,必须先有一个棋盘。所以,通过LinearLayout线性布局上画出一个棋盘。另外还需要四个按钮:开局、模式(人机对弈)、退出,提醒用户进行相应的操作。
对于下棋的操作,通过增加鼠标事件监听器MouseListener,每次当用户点击鼠标时,先取得点击的坐标值,然后换算成对应棋盘上(即棋盘数组)的位置(数组的下标)。
判断此处是否已经有棋子,如果有则提示玩家重新下子,否则通过java里的画图函数在此处画上棋子,重新刷新输出棋盘。
判断该颜色棋子的上下左右是否满足连续五个,是的话提醒相应玩家获胜,不是的话,更换玩家下棋。
对于玩家的更换是程序自动的,每次用户点击鼠标后,若本局还未结束则会变换玩家,从而画出对应黑方白方的棋子,直到有一方获胜程序结束。
2.程序设计分析
本款游戏有开始游戏、人机对战,关于我们、退出游戏四个选项;玩家可以根据具体需要选择使用。
程序默认对弈模式是人机对弈模式,并且是玩家先手,玩家是黑方,电脑是白方。。
棋盘处于鼠标监听状态,当鼠标在棋盘上有点击操作的时候,程序会获得鼠标点击的坐标然后换算成对应的棋盘的位置,再判断此处是否有棋子。假如没有,那么在此处画出对应颜色的实心棋子;假如已经有棋子了,则提示玩家此处已经有棋子请重新下棋。
当选择的是人机对弈模式的时候,轮到电脑下子时,电脑会通过算法来计算每个没有棋子的位置的分数,从而来选择最重要的位置下子。
三、五子棋算法分析
1.人机对弈算法概述
人工智能五子棋游戏最核心的地方就是算法,因为这是整个程序最难的模块。算法的中心思想是:利用分数代表每个位置的重要程度,越重要的位置的分数值会越高,当电脑下棋时会先将电脑和玩家棋型的分数分别计算一遍,然后选择二者中分数最高的点下子。如果玩家的分数高,那么代表电脑应该防守,如果电脑的分数高,那么代表电脑应该进攻。
2.数据结构设计
以10×10大的棋盘为例:
两个获胜表(ptable[10][10][192], ctable[10][10][192]):也就是获胜组合,因为五个子一线则胜,不在一线上的五个子就不在一个组合中,对于10×10的棋盘获胜的组合有192种(下面将会详细说明),获胜表用来表示棋盘上的每个位置是否在玩家或计算机的获胜组合中。
一个二维数组([2][192]):记录玩家与计算机在各种获胜组合中填入了多少棋子。
两个10×10的数组:用来记录玩家与计算机在各个棋盘位置上的分数,分数高的将是计算机下一步的走法。
3.获胜组合情况分析
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
图9 10×10棋盘获胜组合情况
垂直方向:垂直方向上获胜组合数为10×6=60种;
水平方向:水平方向上获胜组合数为10×6=60种;
两个对角方向:倾斜方向上获胜组合数为(1+2+3+4+5)×2+6=36种。
所以10×10的五子棋棋盘所有的获胜组合为:60*2+36*2=192种。
4.棋型的估值分析
不同的棋型,其优先级不同。例如,四个棋子连成一线且还能继续落子的棋型(活四)显然要比只有三个棋子连成一线(活三或死三)好。要使计算机正确地做出这种判断,就要把第一种棋型的估值设高。事实上,对于每一种特定的棋型,都需要相应的估值来反映其优劣情况。另外,由于搜索模块频繁地调用估值函数,为了尽可能地加快搜索速度,估值函数应设计的越仔细越好。
估值时,需要从四个方向上来考虑所下棋子对当前盘面的影响。这八个方向分别是以该棋子为出发点,水平、竖直和两条为45度角和135度角的线。
为方便分析棋盘上的格局,约定以“A”代表黑子,“B”代表白子,“?”代表棋盘上空位。算法中关于棋子死活的规定如下:一方落子后,它的落子连成的一条线有两条不损伤的出路,则称该棋型是活的。否则称该棋型是死的。比如关于活三的定义:不论对手如何落子,仍然至少有一种方法可以冲四。因此,B?AAA? B中的三个A,不能算是活三;B?AAA??B中的三个A,也不是活三,尽管它有可能成为活四。这样,棋型的估值设计才能比较细致。本文算法对特定棋型的估值如图1
您可能关注的文档
最近下载
- 2025年2月党支部“三会一课”会议记录模板(详版).docx VIP
- ISO 9001(DIS)-2026《质量管理体系——要求》(含附录使用指南-中文版-雷泽佳译-2025年9月10日).pdf VIP
- 番茄收获机的设计.doc VIP
- 2025小红书电商双11-大健康保健品行业运营指南.pptx VIP
- 培智六年级上册人教版生活语文第6课《勤劳的双手》4课时教案.doc VIP
- 我爱你中国F调正谱伴奏艺术歌曲.pdf VIP
- 3.2细胞器之间的分工合作 课件(共26张PPT) 人教版(2025)高中生物学必修1(含音频+视频).ppt VIP
- 抗病毒治疗(国家免费艾滋病抗病毒药物治疗手册(第5版)课件).pptx VIP
- 日常生活活动能力评定量表.docx VIP
- 2025年管理百年南昌大学章节答案和期末答案.docx VIP
原创力文档


文档评论(0)