java五子棋核心算法_五子棋的核心算法概述

五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置。介绍五子棋程序的数据结构、评分规则、胜负判断方法和搜索算法过程。

一、相关的数据结构

关于盘面情况的表示,以链表形式表示当前盘面的情况,目的是可以允许用户进行悔棋、回退等操作。

1.CList StepList; 2.//其中Step结构的表示为: 3. 4.struct Step 5.{ 6. int m; //m,n表示两个坐标值 7. int n; 8. char side; //side表示下子方 9.}; 10.//以数组形式保存当前盘面的情况, 11.//目的是为了在显示当前盘面情况时使用: 12.char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE]; 13. 14.//其中FIVE_MAX_LINE表示盘面最大的行数。 15. 16.//同时由于需要在递归搜索的过程中考虑时间和空间有效性,//只找出就当前情况来说相对比较好的几个盘面,而不是对所有的可下子的位置都进行搜索,//这里用变量CountList来表示当前搜索中可以选择的所有新的盘面情况对象的集合: 17. 18.CList CountList; 19.//其中类CBoardSituiton为: 20.class CBoardSituation 21.{ 22. CList StepList; //每一步的列表 23. char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE]; 24. struct Step machineStep; //机器所下的那一步 25. double value; //该种盘面状态所得到的分数 26.}

二、评分规则

对于下子的重要性评分,需要从六个

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值