还记得很久很久以前,有个人传了个名为“缘”的程序给我,输入男女方姓名,界面上就会显示测出的缘分值,还会给出相应的提示语句。真怀念哪!当时也没正式接触到编程,不知道这么神奇的东西是如何做出来的。呃,现在随着编程技术的提高,我心血来潮地想要编写一个相类似的程序,以作纪念。这就是“缘分测试”这个小程序的来源了。
现在让我分享一下编写这个程序过程吧。
要计算出“缘分值”,就要有个好算法。那什么算法算是好算法呢?我认为这样一个算法必须满足以下几点——
- 算法得出来的值是一定的,不能随机输出数,至少短期内得出的结果要一样;
- 得出的结果从 0 到 100 都要有,至少 100 要有可能得到吧;
- 交换男女方姓名,通常会得到不同的结果;
- 符合心理预期,将历史上、传说中的一些情侣代入进去,结果要基本符合。
现在我们有了这样几点了。具体该怎么做呢?让我们分析其本质,其本质就是要将汉字或字母转换为数,也就是要办法建立字符与数之间的联系。想到用什么办法了吗?对,最容易想到的,就是利用字符与其 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/
刘翔表示他保留起诉你的权利
凤姐呢?叫凤姐一起来。。。。
好吧,神奇了,同一个代码为什么我用 AutoIt3 敲出来运算的结果就是不同的?
我怀疑是 ASCII 码转出来不同。。。