Public Function HToD(ByVal SourceNum$) As Integer
'十六进制到十进制转换函数,用于读入棋谱函数的调用
Dim i%, j%, t%, S$
For i = 1 To Len(SourceNum)
S = Mid(SourceNum, i, 1)
Select Case S
Case "0" To "9"
t = Val(S)
Case "A" To "F"
t = Asc(S) - Asc("A") + 10
End Select
j = j * 16 + t
Next i
HToD = j
End Function
可以用一个小巧的函数让通用对话框空间更容易使用。只要保证每次打开通用对话框后清空文件名,就能根据文件名是否为空判断用户是否选择了取消操作。
Public Function OpenDialog(ByRef TarDialog As CommonDialog, ByVal Action As Byte) As Boolean
'如果成功返回非空文件名则返回真;OpenMode与通用对话框本身的Action属性相同
TarDialog.Action = Action
If TarDialog.FileName <> "" Then OpenDialog = True Else OpenDialog = False
End Function
程序运行效果如图2所示。
图2 程序运行效果
五、结语
权重估值算法本身的特点,使程序在智力不低的基础上有了不错的反应速度。算法流程中未加入递归预测,主要原因是权重估值时我们利用了得分无穷小的近似计算,但以此为依据递归并不能用归纳法推证,使其所算分值不一定接近事实;即使在特殊情况下恰巧满足了归纳法的条件,也会因为得分无穷小的存在而使递归预测所得电脑智力的提高受到限制。总的来说,本文为VB编程环境下五子棋的完整实现提供了较为详实的参考,也为五子棋在权重估值算法上的可行性与效果提供了一定的理论依据。
|