java 编写的带Alpha-Beta剪枝极大极小博弈AI算法五子棋程序454、功能非常齐全、界面简洁漂亮

  今天为大家继续分享一个带Alpha-Beta剪枝极大极小博弈AI算法开发与制作 454。在之前的多篇博客中从普通五子棋程序,到带AI功能的人机对战、人人对战介绍了多个关于五子棋项目的开发。今天这篇博客主要介绍Alpha-Beta剪枝极大极小博弈AI算法在五子棋开发中的应用,目前带Alpha-Beta剪枝极大极小博弈AI算法五子棋程序已经完成了初步功能,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步!!

Alpha-beta剪枝算法简介

 人机博弈是人工智能的重要分支,人们在这一领域探索的过程中产生了大量的研究成果,而极小化极大算法(minimax)是其中最基础的算法,它由Shannon在1950年正式提出。Alpha-beta剪枝的本质就是一种基于极小化极大算法的改进方法。

在人机博弈中,双方回合制地进行走棋,己方考虑当自己在所有可行的走法中作出某一特定选择后,对方可能会采取的走法,从而选择最有利于自己的走法。这种对弈过程就构成了一颗博弈树,双方在博弈树中不断搜索,选择对自己最为有利的子节点走棋。在搜索的过程中,将取极大值的一方称为max,取极小值的一方称为min。max总是会选择价值最大的子节点走棋,而min则相反。这就是极小化极大算法的核心思想。

开发环境 

   开发语言为Java,开发环境Eclipse或者IDEA都可以。运行主程序,或者执行打开JAR文件即可以运行本程序

系统框架

  利用JDK自带的SWING框架开发,不需要安装第三方JAR包。纯窗体模式,直接运行Main文件即可以。选中Main.java,点右键 run as application启动相关程序。也客户把程序打包成JAR包,双击JAR即可以启动相关的程序。

游戏主要功能

    五子棋游戏简介

五子棋起源于中国,是全国智 竞技项目之一,是一种两人对弈的纯策略型棋类游戏。双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连珠者获胜。

    游戏规则

(1)对局双方各执一色棋子。

(2)空棋盘开局。

(3)黑先、白后,交替下子,每次只能下一子。

(4)棋子下在棋盘的空白点上,棋子下定后不得移动或拿走。

(5)黑方的第一枚棋子必须下在天元点上,即中心交叉点

五子棋对局,执行黑方指定开局、三手可交换、五手两打的规定。整个对局过程中黑方有禁手,白方无禁手。黑方禁手有三三禁手、四四禁手和长连禁手三种。

   人机对战功能 

      本程序的最大特色是有人对战功能,其中人为黑方,机器和白方。机器有较高的AI水平,能打败90%以上的用户。人下完一颗棋后,机器能在1秒时间完成下棋。游戏结束后,系统会给出相关的提示,并且恭喜获胜选手。

    人人对战功能

     人人对战也是我们程序的一个特色,人下一步、其他一个人下一步。直到有一个人获胜为止。

    悔棋功能

       原则上,五子棋不可以悔棋。理论上,任何棋都不可以悔棋。不过现实当中,只要对方答应悔棋了,就可以悔棋。所谓悔棋,意思就是后悔走错了一步棋,想要拿回来从新走一步。可以简单理解为后悔下这一步棋,想反悔重新下。本程序提供了悔棋功能,可以有效的对下的每一步棋进行回溯。

    Alpha-Beta剪枝权值计算

     用户在下棋的过程中,可以在一个位置,点击,查看下棋的位置的攻击+ 防御权值,供用户参考。(9,5)HENG    00022200000    
      (9,5)SHU    00000200000    
     (9,5)PIE    00000200000    
       (9,5)NA    00000200000    点(9,5)的攻击:6 防御:206 总和:212

运行效果

  1 主界面和游戏设置

   

  2 运行效果

  3 胜负提示  

 

项目总结

(1)在写代码之前,在大脑里一定要把思路理清楚,不能模模糊糊,一定要把功能图和流程图画出来,然后根据它去实现每一个功能块,要多分析,培养一种良好的逻辑思维能力。

(2)在写代码的过程中,一定要采取就近原则,同一个功能,或者对同一个组件的设置一般要写在一块,这样写的程序比较清晰,不容易出错,也便于查找。

(3)要养成良好的注释习惯,一是有利于别人阅读你的程序,同时也有利于自己以后再看,就能很快的读懂程序,提高效率。

(4)把功能模块化,即把实现相同功能的代码段封装成一到一个类或者一个方法中,实现的时候调用即可,这样能提高代码的可读性

(5)养成创建包来存放不同功能的类,使系统的结构更加模块化和规范化。

(6)在编写代码的时候,一定要边写边调试,要适时的设置断点,或者把某些变量的值输出到控制台,通过观察和分析变量的值,便于判断问题所在,同时,需要捕获异常的一定要把异常信息打印出来,便于分析问题。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值