原创开源 VB6 小程序: 缘分测试

还记得很久很久以前,有个人传了个名为“缘”的程序给我,输入男女方姓名,界面上就会显示测出的缘分值,还会给出相应的提示语句。真怀念哪!当时也没正式接触到编程,不知道这么神奇的东西是如何做出来的。呃,现在随着编程技术的提高,我心血来潮地想要编写一个相类似的程序,以作纪念。这就是“缘分测试”这个小程序的来源了。

现在让我分享一下编写这个程序过程吧。

要计算出“缘分值”,就要有个好算法。那什么算法算是好算法呢?我认为这样一个算法必须满足以下几点——

  1. 算法得出来的值是一定的,不能随机输出数,至少短期内得出的结果要一样;
  2. 得出的结果从 0 到 100 都要有,至少 100 要有可能得到吧;
  3. 交换男女方姓名,通常会得到不同的结果;
  4. 符合心理预期,将历史上、传说中的一些情侣代入进去,结果要基本符合。

现在我们有了这样几点了。具体该怎么做呢?让我们分析其本质,其本质就是要将汉字或字母转换为数,也就是要办法建立字符与数之间的联系。想到用什么办法了吗?对,最容易想到的,就是利用字符与其 ASCII 码的关系啦。

于是乎,通过获取各个字符的 ASCII 码,再进行加减乘除运算,“缘分测试”小程序就完成啦!下面分享下这个程序的关键代码:

  Dim countM As Integer
  Dim countF As Integer
  countM = 0
  countF = 0
  i = 1
  Do
     countM = Abs(Right(countM - Right(Asc(Mid(txtM.Text, i, 1)), 2), 2))
     i = i + 1
  Loop Until i > Len(txtM.Text)
  i = 1
  Do
     countF = Right(countF + Right(Asc(Mid(txtF.Text, i, 1)), 2), 2)
     i = i + 1
  Loop Until i > Len(txtF.Text)
  result = 10 * Right(countM - countF, 1) + Right(countM + countF, 1)
  If Right(countM, 1) < 5 And Right(countF, 1) <> 9 Then result = result + 1
  result = 100 - result

这是程序的动态浏览图:

“缘分测试”动态浏览图

下载地址(含源码):!下载提示本地下载 | 来自闪星空间 | 百度网盘下载

最后提醒一下,这个程序也是开源的,使用源码时要遵守开源协议哦!至于注释,嗯,代码简单就不注释了,嘿嘿。

若无特别说明,本文系原创,遵循 署名-非商业性使用 3.0 (CC BY-NC 3.0) 协议,转载文章请注明来自【闪星空间】,或链接上原文地址:http://shansing.com/read/326/

4 条评论

  1. 刘翔表示他保留起诉你的权利

    1. 凤姐呢?叫凤姐一起来。。。。

  2. Local $CountM = 0, $CountF = 0
    Local $i = 1, $j = 1
    Local $Result
    
    Do
        $CountM = Abs(StringRight($CountM - StringRight(Asc(StringMid($Male, $i, 1)), 2), 2))
        $i += 1
    Until $i > StringLen($Male)
    
    Do
        $CountF = StringRight($CountF + StringRight(Asc(StringMid($Female, $j, 1)), 2), 2)
        $j += 1
    Until $j > StringLen($Female)
    
    $Result = 10 * StringRight($CountM - $CountF, 1) + StringRight($CountM + $CountF, 1)
    If (StringRight($CountM, 1) < 5 And StringRight($CountF, 1)  9) Then $Result += 1
    $Result = 100 - $Result
    

    好吧,神奇了,同一个代码为什么我用 AutoIt3 敲出来运算的结果就是不同的?

    1. 我怀疑是 ASCII 码转出来不同。。。

发表评论»

NO SPAMS! 不要发垃圾评论哦!

表情