- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Java的六子棋人工智能系统的设计研究.doc
基于Java的六子棋人工智能系统的设计研究
邱烨,,,(221008)
摘 要:关键词:
中图分类号:TP311
引 言
人工智能(Artificial Intelligence)英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学[1]。人工智能计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种复杂工作的理解是不同的。被认为是人工智能领域最具挑战性的研究方向之一它涉及人工智能中的推理技术、搜索方法和决策规划等,它的研究为人工智能带来了很多重要的方法和理论,产生了广泛的社会影响和学术影响以及大量的研究成果。代表计算机博弈技术的各种棋类游戏在其各自的计算机博弈技术研究中已经取得了相当丰硕的成果,且其计算机博弈系统也日趋完善,基本上能达到大师级水平六子棋作为最近几年才兴起的棋类游戏,其计算机博弈技术和算法的研究相对较少。六子棋的发明者台湾吴毅成教授给出了六子棋的公平性问题以及基于迫(Threats)的胜利策略,但是对于其计算机博弈问题没有给出更加深刻的阐述,同时也没有全面解决六子棋计算机博弈问题。2.1系统设计目标
本系统开发的总体任务是实现具有一定棋力的六子棋程序,其能够与一般的六子棋爱好者对弈。当然,也要能实现人人对弈。
图1 结构模型
图2 系统流程图
2.2开发设计思想
(1)该系统的实现主要是对六子棋的数据结构,棋子触发,搜索算法[2],评估函数等进行设计和实现的过程。
(2)界面操作应当简单化,做到实用、方便,以满足不同层次使用者的需要。
(3)系统总体实现以下规范:删除不必要的冗余,实现程序代码标准化,软件统一化,确保软件的可扩展性,可维护性和实用性。
主要技术实现
3.1界面设计及事件响应
本系统界面包括棋盘部分,用户面板部分,游戏信息及选项部分,当前状态部分和系统选项部分。其中为了实现的方便,棋盘背景和棋盘触发面板是分开设计的,即在主框架中添加了背景,并放置了用户面板部分(游戏信息及游戏选项部分),当前状态部分和系统选项部分,然后另外单独设计了棋盘触发面板覆盖于棋盘背景之上。也许你会问怎么没有棋子信息的部分呢?其实,棋子信息部分就隐藏在了棋盘触发面板里了。同时,为了方便触发,当前状态部分,系统选项部分和游戏选项部分是直接嵌入到了主框架中的[3]。下面是具体的各个类:
ChessFrame //主框架类,直接实现了棋盘背景,当前状态,系统选项和游戏选项
ChessJPanel //棋盘触发面板类
GameJPanel //游戏信息类,用于显示游戏信息
PlayerJPanel //用户面板类,用于用户信息显示及选择
ChessShow //棋子信息类,用于棋子的显示,其嵌入到了类ChessJPanel中
图3 界面
对于事件的处理,本系统主要处理单击事件和鼠标点击事件,并设立线程监视按钮的可用情况(如在开始游戏之前是不能悔棋的,在游戏开始后但没有悔棋
前是不能重下的等等)以及是否该电脑走棋,游戏一方是否胜利等。对于游戏是否胜利,为了防止局面评估的不完善造成结果的失常,系统中还单独设立了检查函数checkBlackWin()和checkWhiteWin()。
下面是checkBlackWin()的算法:
(1)得到当前下的棋子的坐标P(x,y)(N+S)=7,(W+E)=7,(WN+ES)=7,(WS+EN)=7之一是否成立,成立则修改标志isBlackWin为true,然后其会被相应的处理函数(其他线程)做进一步处理。
checkWhiteWin()算法类似。
3.2评估函数的设计
3.2.1理论分析
评估函数是对棋局的综合评估,简单来说,就是对当前局面的黑白棋分别评分,以确定当前的形势,为搜索引擎提供评判标准。该函数的好坏直接决定解题能力强与弱,只有有了良好的评估函数才能对结果予以保证,否则搜索得到的结果很可能与期望相距甚远。一个优秀的棋手通常都能对当前棋局做出合理的判断,以便取舍和协调棋子的关系,同时合理地组织己方棋子的进攻,以控制棋局向着利于自己的方向发展。由此可见,想依靠几个简单的评估函数是不可能良好地抽象这整套评价模式的,因为要考虑和变化的因素实在是太多。
3.2.2评估函数的实现
考虑到六子棋是靠连接的同色棋子的数目取胜的,因此单独考虑每个棋子的值,然后求和是不合适的。于是,我们可以对棋型进行估值,也即是对
文档评论(0)