哪位高手能帮小弟我的程序写PVS(主要变例搜索)
发布时间:2011-07-03 09:18:19 文章来源:www.iduyao.cn 采编人员:星星草
谁能帮我的程序写PVS(主要变例搜索)
各位帮帮忙了!~
REM 将116、士115、士114、象113、象112、车111、车110、马109、马108、包107、包106、卒105、卒104、卒103、卒102、卒101(黑)
REM 帅216、仕215、仕214、相213、相212、车211、车210、马209、马208、炮207、炮206、兵205、兵204、兵203、兵202、兵201(红)
Public Function SearchFull(ByVal Cer As Byte, ByVal Steps As Integer, ByVal UpMax As Long, ByVal Alpha As Integer, ByVal Beta As Integer) As Integer
''Cer=1计算黑方的棋子 Cer=2计算红方的棋子 棋盘ChessBoard(90)
''返回分数
Dim i As Integer, j As Integer
Dim T As Byte, T1 As Integer, T3 As Integer, T4 As Integer ''临时变量
Dim ChessValue As Long ''记录棋子当前落子点的分数
Dim MaxValue As Long
Dim Sc(scMAXDOWNPOINT) As CHESSER ''用来存储我方搜索到的每种走法
Dim k As Integer
n = n + 1
MaxValue = -10000
Steps = Steps - 1
If Steps < 1 Then
Return qSearch(Cer, 10, Alpha, Beta, False) ''返回估值
Exit Function
End If
k = MakeMove(Sc, Cer)
'排序程序,略过
''搜索找到的所有落子点(Sc数组)
For i = 0 To k - 1
''落子点不能有自己的棋
If Int(ChessBoard(Sc(i).ObjXy) / 100) <> Cer Then
''GetLocateValue判断落子点的分数
T1 = CchessValue(Cer, ChessBoard(Sc(i).ObjXy), Sc(i).ObjXy)
T3 = ChessBoard(Sc(i).InitXy) ''保存(起点的棋子)
T4 = ChessBoard(Sc(i).ObjXy) ''(终点的棋子)
''如果吃到王就不再运算
If T4 Mod 100 = 16 Then Return -9999
ChessBoard(Sc(i).InitXy) = 0 ''移动棋子
ChessBoard(Sc(i).ObjXy) = T3 ''试下棋
''如果有吃子,Eval减分
If T4 <> 0 Then
Eval = Eval + CchessValue(0, T4, Sc(i).ObjXy)
End If
Eval = -Eval : Ply = Ply + 1
ChessValue = SearchFull(NextCer(Cer), Steps - 1, MaxValue, -Beta, -Alpha)
Eval = -Eval : Ply = Ply - 1
ChessBoard(Sc(i).InitXy) = T3 ''恢复棋盘
ChessBoard(Sc(i).ObjXy) = T4
If T4 <> 0 Then
Eval = Eval - CchessValue(0, T4, Sc(i).ObjXy) ''恢复Eval
End If
If MaxValue < ChessValue Then MaxValue = ChessValue
End If
'新增
If MaxValue > Alpha Then Alpha = MaxValue
If (MaxValue > Beta) Then Return -MaxValue
Next i
Return -MaxValue
End Function
------解决方案--------------------
Public Function SearchFull(ByVal Cer As Byte, ByVal Steps As Integer, ByVal UpMax As Long, ByVal Alpha As Integer, ByVal Beta As Integer) As Integer
''Cer=1计算黑方的棋子 Cer=2计算红方的棋子 棋盘ChessBoard(90)
''返回分数
Dim i As Integer, j As Integer
Dim T As Byte, T1 As Integer, T3 As Integer, T4 As Integer ''临时变量
Dim ChessValue As Long ''记录棋子当前落子点的分数
Dim MaxValue As Long
Dim Sc(scMAXDOWNPOINT) As CHESSER ''用来存储我方搜索到的每种走法
Dim k As Integer
dim fFoundPv as Boolean = FALSE
n = n + 1
MaxValue = -10000
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
现在神经网络有什么的用途
神经网络听说不少了,可是就没听说应用什么上面了.
神经网络真的有作用吗?
------解决方案----------...
-
懂得DTP和测试的人过来指点哈
我现在招聘了两家公司一个是DTP排版,一个是博彦的软件测试在武汉,我想问哈哪个公司好一点?发展空间更...
-
SOS~~关于蚁群算法解决机器人路径规划问题的参数设置
rt。急求高人解答~·
有大大知道么?
各个常量参数的设置应该是怎样的?
...
-
我能学人工智能吗?
我对人工智能有点兴趣,本来想考研的时候选人工智能的研究方向的,但是由于我本科专业是软件工程,并没有学人工智能,...
-
如何用matlab编写模糊关系中的合成运算
如题,想请教各位高手,怎么来求两个矩阵的合成运算
------解决方案--------------------
...
-
用什么方法识别是不是人?
哪位大虾能指点:
我现想识别人和桌椅等,就是我现在想做一小实验,就是当人在他前它知道是人,把其他无生命的物...
-
ANFIS
谁有ANFIS MATLAB源代码啊?不胜感激
------解决方案--------------------
直接在help文件里面anfis就可以了撒
自己看看...
-
谁了解BP神经网络啊?
谁了解BP神经网络啊?
一个朋友写了篇论文,让我帮看看,修正一下。
可是我一点也不懂。丢人啊!
------解决方案---...
-
请问各位在哪里可以下载到 Visual Lisp 编程工具
本人最近正在学习人工智能,但是一直用VC++做为练习工具,现在想用一下Lisp,请求各位...
-
求BP仿真算法
网上只有大量的BP学习算法
我已经写了一个BP学习算法程序
网络可以训练成功
但是训练好的网络如何根据输入产生输...