关于吉普赛人读心术的解析

2009-10-27 10:22黄忠浩
新课程·中旬 2009年1期
关键词:水晶球窗体控件

黄忠浩

摘 要:现下流行着这么一个Flash小游戏,那就是比较出名的《吉普赛人读心术》,刚开始按照游戏规则去试验时,当真下了一跳,这个东东真的能猜出你心里想的。一旦揭秘,才发现原来如此。笔者并用VB编程语言重新编写了这个游戏。

关键词:游戏 读心术 Visual Basic6.0

“吉普赛人祖传的神奇读心术,它能测算你的内心感应。”

最近网络上一直流行着这样的一个Flash心理测试,是某位Flash高手用Flash软件制作的,名字叫The Flash Mind Reader。

这个Flash心理测试的界面是由三部分组成,左边上半部分是用矢量图制作的一个比较逼真的水晶球,还熠熠发光呢,左边下半部分是Flash心理测试的介绍和说明部分(见下文),而右半部分出现按照顺序标明的0至99这一百个数字,并且每个数字后面画有一个小符号图形。

下面为大家介绍一下这个Flash心理测试的说明:

任意选择一个两位数(或者说,从10-99之间任意选择一个数),把这个数的十位数字和个位数字相加得到一个新数字,再把任意选择的数减去这个新数字。

例如:你选的数字是23,然后2+3=5,再23-5=18。

在图表中找出与最后得出的数字所对应的小符号图形,并把这个小图形牢记心中,然后点击水晶球,你会发现,水晶球里所显示出来的图形正是你刚才记在心里的那个。

如果大家按照这个Flash心理测试的说明去做的话,大家会惊奇地发现,这个Flash心理测试每次都能测出你看到或记住的数字后面的图形,于是大家会开始怀疑这个世界上是否真的有内心感应这回事,而这个Flash心理测试真的能看透你的心思。

今天,笔者就为大家解析一下这个Flash心理测试的奥秘以及如何用VB6.0编写这个心理测试。

大家只要细心地观察这个Flash心理测试,一定会发现这么一个在数学方面常见的规律:从10到99任意的一个两位数按照Flash心理测试提供的那个法则运算得出的新数字都是9的倍数。

上面已经有一个例子,再举两个例子:

85的十位数字是8,个位数字是5,8+5=13,85-13=72,72是9的倍数;

64的十位数字是6,个位数字是4,6+4=10,64-10=54,54是9的倍数。

下面咱们再用数学表达式来演算一下,看看结果如何:

假设一个两位数的十位数字是m,个位数字是n,即这个两位数字是10m+n,十位数字和个位数字相加得m+n,则原来两位数字和新数字相减是(10m+n)-(m+n)=9m,因此所得数字永远是9的倍数。

综上所述,这个Flash心理测试的奥秘已经浮出水面。

每次启动这个Flash心理测试,首先要做的是图形的初始化,即随机抽取图形赋值给0至99,然后把是9的倍数的数字后面的图形统一赋值成相同的图形,于是除了9的倍数的其他图形就只是个幌子而已,使大家不容易看出所有9的倍数的图形相同。大家此时用鼠标点击水晶球就看到刚才记住的那个图形。

而后这个Flash心理测试把右边所有图形遮盖,再出现一个返回按钮,其实这样做也是有目的的,因为制作者不想让大家知道,大家点击返回按钮时所有9的倍数的图形已经被替换了,以便为大家下一次再点击水晶球时做铺垫。

解析到这里,大家应该清楚这个Flash心理测试的奥秘在哪里了吧?

下面就继续我们的下半部分内容,用VB6.0为大家编写一下这个心理测试:

一、需要准备的文件

1.大约300px×300px的10张符号图片,编号分别为00~09(JPG格式);

2.大约30px×30px的10张缩小的符号图片,编号分别为0~9(JPG格式),与符号图片一一对应(可以用Fireworks、Photoshop等软件制作);

3.背景图片(JPG格式,任意选择,但要与界面大小一致);

4.图标图片(ICO格式)。

二、界面设计

1.启动VB6.0,会出现一个缺省窗体Form1,命名为frm1,做为启动窗体;

2.点击“工程”,选择“添加窗体”,添加一个新窗体,命名为frm2,作为心理测试窗体;

3.在frm1中用标签控件写上心理测试的说明,标签控件的BackStyle属性设为0,BorderStyle属性设为0,再添加三个按钮控件,命名为cmdkaishi,cmdfanhui,cmdjieshu,相应地把frm1的窗体BorderStyle属性设为0;

4.在frm2中添加三组控件数组,第一组是标签控件lblshuzi(0)-lblshuzi(99),第二组是图片控件picfuhao(0)-picfuhao(99),第三组是图片控件pictuxing(0)-pictuxing(19),再添加一个图片控件picshuijing和一个标签,用于写上说明心理测试的说明;

5.把背景图片添加到frm1、frm2的picture属性中;

6.把图标图片添加到frm1、frm2的icon属性中。

三、代码设计

1.frm1中的代码:

Private Sub cmdkaishi_Click() '开始按钮事件

Unload frm1 frm2.ShowEnd Sub

Private Sub cmdfanhui_Click() '返回按钮事件

frm2.Show unload frm1

frm2.Enabled=True

frm2.picshuijing.Picture=LoadPicture(“”)

End Sub

Private Sub cmdjieshu_Click() '结束按钮事件

End End Sub

2.frm2中的代码:

Public op As Integer '定义通用声明

Public Sub bianhuan() '显示水晶球里图片的事件

picshuijing.Picture=pictuxing(op+10).Picture

Dim t As Integert=Int(Rnd*10)

For i=1 To 9

picfuhao(9*i)=pictuxing(t).Picture

op=t Next i End Sub

多功能

Dim i As Integer,j As Integer,m As Integer

For i=0 to 9

pictuxing(i).Picture=LoadPicture(App.Path&“”& i &“.jpg”) '加载有关图片

Next i For i=10 to 19

pictuxing(i).Picture=LoadPicture(App.Path&“”&i-10&“.jpg”)

Next i

For i=0 To 99 '随机分布符号图片

Randomize m=Int(Rnd*10)

picfuhao(i).Picture=pictuxing(m).Picture

picfuhao(i).BorderStyle=0

If i Mod 9=0 Then

picfuhao(i).Picture=picfuhao(9).Picture

End If Next i

For j=0 To 99 '0-99数字初始化

lblshuzi(j).Caption=99-j

lblshuzi(j).BackStyle=0

Next j End Sub

Private Sub picshuijing_Click() '点击水晶球事件

Call bianhuan frm2.Show

frm2.cmdkaishi.Visible=False

frm1.Enabled=False End Sub

以上程序在VB6.0中运行通过。

结束语:

这只是一个简单的VB程序,用一些比较基本的代码和结构就可以轻松写出来,只能为那些初学者提供一个进阶参考。

在学习编程语言的时候,大家都一定会感觉比较枯燥,此时最好的方法是找一些大家比较感兴趣的东西试图着用编程语言去编写,如此做不仅可以提高编程水平,而且可以增加对编程学习的兴趣。

随着VB语言学习的不断加深,大家会逐渐掌握许多编写VB程序的技巧,也会使大家进一步对VB产生更高层次的研究,最终逐步把自己练就成一个VB语言编程高手。

作者单位:山东省山东万杰医学院影像系影像专业教研室

猜你喜欢
水晶球窗体控件
试谈Access 2007数据库在林业档案管理中的应用
大自然的水晶球
手指上的“水晶球”
ASP.NET服务器端验证控件的使用
巧设WPS窗体控件让表格填写更规范
WinCE.net下图形用户界面的开发
Spreadsheet控件在Delphi数据库系统中的编程与应用