我写了一个五子棋人机算法的人机对战算法,但是只能通过对每个点的分值估计,判断当前棋盘分值最高的位置,我想让

      我知道正规的对弈机器人都是把棋谱集合再筛选那样工程量太大,我想写一个简易的电脑水平不用多高,可是算法没有眉目大家能给我个思路吗?电脑要怎样来判斷走法比较好 是中国象棋

上周花了一周时间做的课程设计嘚项目实现的功能如下:

(1) 该APP能够通过蓝牙自动搜索周围其他使用了该APP的手机,用户可选择其中某一个APP发起对战的要求被发起方可鉯同意或者拒绝;
(2) 双方可以实现五子棋人机算法蓝牙对战;
(3) 具备悔棋等功能。 
(4) 实现人机对战提供难度选择。
(5)提供用户戰绩排名系统

下面是界面截图和实现原理代码分析。

1、简单人机算法实现

2、普通人机算法实现。

3、蓝牙模块客户端服务端实现

1、简單难度电脑算法实现:

因为时间比较赶,所以人机算法这块实现得比较简单没有去学习使用专业的五子棋人机算法人机算法,比如五元組分值比较法或者正规的博弈算法

简单难度算法就是随机在落子点周围生成一个点:

* 简单模式自动下棋的电脑

这里要保存已经下过的点位,并判断是否已经下过难点是在于如果下的位置在角落处(或周围已经没有棋子可以自动生成位置了,这时要递归判断并随机生成一個新的位置直到全图都没有位置了为止终止递归):

* 递归判断是否已经下过 //递归防止周围没有字落下时直接崩掉 }2、普通难度算法实现:

普通难度的算法实现地比较纠结,在简单人机的基础上(这里可以称之为“随机落子算法”~!)加入了三点判断功能,就是黑白双方一旦有3點相连会自动往这三点的两端随机堵一个点并继续递归判断下过的位置,这个循环写得比较长因为没有把重复的代码抽取出来。

* 普通模式自动下棋的电脑 //根据我方颜色推测出对手颜色 //判断我方是否有3个连成一线了 //如果有三个点相连了 //先判断是否已经测试过这三个点 //如果這三个点已经存在 //在两边端点位置随机下一个 //如果有三个点相连了 //先判断是否已经测试过这三个点 //在两边端点位置随机下一个 //左上到右下3個相连 //如果有三个点相连了 //先判断是否已经测试过这三个点 //右上到左下3个相连 //如果有三个点相连了 //先判断是否已经测试过这三个点

3、蓝牙連接实现代码:

整个项目是客户端与服务端一体的所以蓝牙部分大概可以分为三个模块:

实首先打开一个广播扫描周围设备:

* 接受广播,并显示尚未配对的可用的周围所有蓝牙设备 //如果是正在扫描状态 //只要BluetoothReceiver接收到来自于系统的广播,这个广播是什么呢,是我找到了一个远程蓝牙设备 //Intent代表刚刚发现远程蓝牙设备适配器的对象,可以从收到的Intent对象取出一些信息 // 如果该设备已经被配对则跳过 //设备数组获得新的设备信息并更新adapter
//扫描周围的蓝牙设备按钮监听器


 //获得已配对的蓝牙设备
 //开始扫描周围的可见的蓝牙设备

}
服务端等待连接模块:

这里服务端比较简單,通过accpet方法监听连接就可以了

//开启子线程等待连接





 //初始化线程来传输数据
 
//先停止扫描,以防止之后的连接被阻塞 //开始连接发送连接請求 //之后关闭socket,清除内部资源

其他初始化的代码都在项目里面就不赘述了可以自己下载来看。

本来有很多课程设计项目可供选择的= =不过朂后还是选了比较有挑战性的这个

之前一直没接触过蓝牙开发,网上的demo或者例子又都很难理解(可能是没有科学上网的原因)

最终还昰靠着官网的API才慢慢写出了一开始的连接demo,然后一步步测试传输数据

哎,你们呐还是要多看API!

我写了一个五子棋人机算法的人機对战算法但是只能通过对每个点的分值估计,判断当前棋盘分值最高的位置我想让计算机可以考虑多步情况,选出最好的走法这個考虑多步该怎么写?... 我写了一个五子棋人机算法的人机对战算法但是只能通过对每个点的分值估计,判断当前棋盘分值最高的位置峩想让计算机可以考虑多步情况,选出最好的走法这个考虑多步该怎么写?

先假设你单步评估点分值的算法是没问题的那么考虑3步的算法如下:

对每一个点pi,算出其单步分值score(pi);

在棋盘摆放了Pi的情况下计算对手能选择的最高分值点pi2及其单步分值score(pi2);

在棋盘摆放了pi,pi2的情况下,计算自己能够选择的最高分值点pi3及其单步分值score(pi3);

你对这个回答的评价是

不太懂,你用什么语言写的

好中选优,这是你的思路你说可鉯对每一步的分值进行估定,这样的话你对每一步的分值计算完后,用for或者别的进行循环做个大小比较,你看看可以不

你对这个回答嘚评价是

我要回帖

更多关于 五子棋人机算法 的文章

 

随机推荐