三种玩法(悔棋、更换先手)
1. 本机对战
2. 人机对战
(1)入门
(2)进阶
(3)高手
3. 联网
(1)局域网
(2)因特网 多人匹配系统
()
三种玩法(悔棋、更换先手)
1. 本机对战
2. 人机对战
(1)入门
(2)进阶
(3)高手
3. 联网
(1)局域网
(2)因特网 多人匹配系统
()
对于aithree的小结:
我们首先要知道我们的启动函数是什么?是playChess()。接下来就是对对于棋的整个流程的说明。
首先我们应该创建一个父节点(结点的成员变量有颜色,位置,子节点,值)然后通过foreach对子节点进行遍历取得最大值,其中我们还要通过alphabeta对树进行剪枝,以便减少计算量,最后让chessboard中的playchess生成棋子。
一父结点
就是创建一个类,并声明成员变量
二子节点Getlist() 我们在这个方法中首先应该创建一个放置兄弟结点的集合,然后在定义一个空的子结点。通过forr看看当前的位置是否可以放子,如果不行的话,就从来;如果可以的话就构建子结点。接着判断子集合中的个数是否为4(因为我们已经规定子结点的个数为4),不够加,够就判断是否为我方,我方寻找最大值;敌方需要最小值。经过筛选后返回集合。
三 创建树一给成员grid chid赋初值chid
CheckOneLine()作为一个判断函数大概的意思是这样的:我们首先确定扫棋的方向,是用左边lfirst,接着就是安全校验了,接着就是获取当前的棋子,判断它到底是什么类型的,是同类型的就+a,是空子就加_这个就说明扫棋已经碰壁了,我,们就要启动让右边扫的工作了,同时结束左边;是异子就也是要停止当前,向右边扫。总之结束左边的情况就三种:空子,异子,和出界。
右边也是一样
左边两个标志为 lfirst lstop
右边一个标志位 r'stop
这里的坐标限制其实直接优化到棋盘内部范围就好了,用7.5f的限制值,比那个函数直观也没有bug,如果用了那个函数就意味着按非棋盘的非UI区域依旧会下棋,这并不是希望的。