人工智能课程设计-五子棋博弈算法.docx

人工智能课程设计-五子棋博弈算法.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
人工智能 博弈算法程序设计—— 五子棋博弈 学院: 计算机科学学院 专业: 网络工程 班级: 姓名: 学号: 实验名称 五子棋博弈算法 全套设计加扣 3346389411或3012250582 实验内容 启发式有哪些信誉好的足球投注网站算法。熟悉和掌握启发式有哪些信誉好的足球投注网站的定义、估价函数和算法过程,并求解博弈问题,理解求解流程和有哪些信誉好的足球投注网站顺序。 五子棋是一-种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个人-人,人-机对下的五子棋程序,采用了博弈树的方法,应用了权值大小原理进行有哪些信誉好的足球投注网站发现最好的下子位置。介绍五子棋程序的面板结构、评分规则、胜负判断方法和有哪些信誉好的足球投注网站算法过程。 实验环境 Windows10,eclipse,jdk1.8 实验目的 1、能够用编程语言实现一个简单的五子棋程序。 2、在实际系统中使用、实现人工智能的相关算法。 3、进一步加深对人工智能算法的理解。 实验步骤 相关面板情况 关于面板情况,以数组形式表示当前盘面的情况,目的是可以很容易知道用户下子的位置,并且盘面要允许用户进行悔棋、 人人对战,人机对战等操作。 javax.swing.JButton jbu1 = new javax.swing.JButton(悔棋); jp1.add(jbu1); javax.swing.JButton jbu2=new javax.swing.JButton(人机); jp1.add(jbu2); javax.swing.JButton jbu3 = new javax.swing.JButton(人人); jp1.add(jbu3); 以数组形式保存当前盘面的情况: 其中SIZE表示盘面最大的行数 private int point[][]=new int [SIZE][SIZE]; 利用paint函数画出五子棋棋盘格数,根据下棋先后顺序将黑棋子,白棋子画出来,并且将用户下棋的位置定为格子交叉处。 if(point[i][j]==1){ //画黑棋 g.setColor(Color.BLACK); g.fillOval(i-WID/2, j-WID/2, WID, WID); } else if(point[i][j]==2){ //画白棋 g.setColor(Color.WHITE); g.fillOval(i-WID/2, j-WID/2, WID, WID); } 由干需要在递归有哪些信誉好的足球投注网站的过程中考虑时间和空间有效性,只找出就当前情况来说相对比较好的几个盘面,而不是对所有的可下子的位置都讲行有哪些信誉好的足球投注网站,这里用变量hm来表示当前有哪些信誉好的足球投注网站中可以选择的所有新的盘面情况对象的集合,哈希表用来存放不同棋子布局下的不同权值: public HashMap String,Integer hm = new HashMap String,Integer(); 二、胜负判断 实际上,是根据当前最后一个落子的情况来判断胜负的。实际上需要从四个位置判断,以该子为出发点的水平,竖直和两条分别为45度角和135度角的线,目的是看在这四个方向是否最后落子的一方构成连续五个的棋子,如果是的话:就表示该盘棋局F经分出胖负。 三、核心算法实现 权值算法 分别向左、向右、左下、、、、、等8个方向检测棋子布局情况并累加在该点的权值上,再找出图片上没有棋子并且权值最大的点下棋子,记得每次下棋将各个空位置的权值归0,以便下一次计算权值累加。 这里只举一个向右寻找的例子:其他类似 for(int j=Y0;jY0+WID*(LINE+1);j+=WID){ if(point[i][j]==0){ //向右寻找 int color=0; String code=; for(int k=i+WID;k=X0+WID*LINE;k+=WID){ if(point[k][j]!=0){ if(color==0){ color=point[k][j]; code+=point[k][j]; } else{ if(point[k][j]==color){ code+=point[k][j]; } else{ co

文档评论(0)

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

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

1亿VIP精品文档

相关文档