没有合适的资源?快使用搜索试试~ 我知道了~
五子棋的核心算法尽在其中!!!这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置。介绍五子棋程序的数据结构、评分规则、胜负判断方法和搜索算法过程。
资源推荐
资源详情
资源评论
五子棋的核心算法
五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣
味性和消遣性。这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应
用了剪枝和最大最小树原理进行搜索发现最好的下子位置。介绍五子棋程序的数据结构、
评分规则、胜负判断方法和搜索算法过程。
一、相关的数据结构
关于盘面情况的表示,以链表形式表示当前盘面的情况,目的是可以允许
用户进行悔棋、回退等操作。
CList StepList;
其中 Step 结构的表示为:
struct Step
{
int m; //m,n 表示两个坐标值
int n;
char side; //side 表示下子方
};
以数组形式保存当前盘面的情况,
目的是为了在显示当前盘面情况时使用:
char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE];
其中 FIVE_MAX_LINE 表示盘面最大的行数。
同时由于需要在递归搜索的过程中考虑时间和空间有效性,只找出就当前情
况来说相对比较好的几个盘面,而不是对所有的可下子的位置都进行搜索,这里用变量
CountList 来表示当前搜索中可以选择的所有新的盘面情况对象的集合:
CList CountList;
其中类 CBoardSituiton 为:
class CBoardSituation
{
CList StepList; //每一步的列表
char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE];
struct Step machineStep; //机器所下的那一步
double value; //该种盘面状态所得到的分数
}
二、评分规则
对于下子的重要性评分,需要从六个位置来考虑当前棋局的情况,分别为:-,
¦,/,\,//,\
资源评论
- 格伟2017-09-03我把资料还给你,你把十个积分还给我,行吗?这什么,,,,
learneding
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功