黃忠浩
摘 要:現(xiàn)下流行著這么一個(gè)Flash小游戲,那就是比較出名的《吉普賽人讀心術(shù)》,剛開始按照游戲規(guī)則去試驗(yàn)時(shí),當(dāng)真下了一跳,這個(gè)東東真的能猜出你心里想的。一旦揭秘,才發(fā)現(xiàn)原來如此。筆者并用VB編程語言重新編寫了這個(gè)游戲。
關(guān)鍵詞:游戲 讀心術(shù) Visual Basic6.0
“吉普賽人祖?zhèn)鞯纳衿孀x心術(shù),它能測(cè)算你的內(nèi)心感應(yīng)。”
最近網(wǎng)絡(luò)上一直流行著這樣的一個(gè)Flash心理測(cè)試,是某位Flash高手用Flash軟件制作的,名字叫The Flash Mind Reader。
這個(gè)Flash心理測(cè)試的界面是由三部分組成,左邊上半部分是用矢量圖制作的一個(gè)比較逼真的水晶球,還熠熠發(fā)光呢,左邊下半部分是Flash心理測(cè)試的介紹和說明部分(見下文),而右半部分出現(xiàn)按照順序標(biāo)明的0至99這一百個(gè)數(shù)字,并且每個(gè)數(shù)字后面畫有一個(gè)小符號(hào)圖形。
下面為大家介紹一下這個(gè)Flash心理測(cè)試的說明:
任意選擇一個(gè)兩位數(shù)(或者說,從10-99之間任意選擇一個(gè)數(shù)),把這個(gè)數(shù)的十位數(shù)字和個(gè)位數(shù)字相加得到一個(gè)新數(shù)字,再把任意選擇的數(shù)減去這個(gè)新數(shù)字。
例如:你選的數(shù)字是23,然后2+3=5,再23-5=18。
在圖表中找出與最后得出的數(shù)字所對(duì)應(yīng)的小符號(hào)圖形,并把這個(gè)小圖形牢記心中,然后點(diǎn)擊水晶球,你會(huì)發(fā)現(xiàn),水晶球里所顯示出來的圖形正是你剛才記在心里的那個(gè)。
如果大家按照這個(gè)Flash心理測(cè)試的說明去做的話,大家會(huì)驚奇地發(fā)現(xiàn),這個(gè)Flash心理測(cè)試每次都能測(cè)出你看到或記住的數(shù)字后面的圖形,于是大家會(huì)開始懷疑這個(gè)世界上是否真的有內(nèi)心感應(yīng)這回事,而這個(gè)Flash心理測(cè)試真的能看透你的心思。
今天,筆者就為大家解析一下這個(gè)Flash心理測(cè)試的奧秘以及如何用VB6.0編寫這個(gè)心理測(cè)試。
大家只要細(xì)心地觀察這個(gè)Flash心理測(cè)試,一定會(huì)發(fā)現(xiàn)這么一個(gè)在數(shù)學(xué)方面常見的規(guī)律:從10到99任意的一個(gè)兩位數(shù)按照Flash心理測(cè)試提供的那個(gè)法則運(yùn)算得出的新數(shù)字都是9的倍數(shù)。
上面已經(jīng)有一個(gè)例子,再舉兩個(gè)例子:
85的十位數(shù)字是8,個(gè)位數(shù)字是5,8+5=13,85-13=72,72是9的倍數(shù);
64的十位數(shù)字是6,個(gè)位數(shù)字是4,6+4=10,64-10=54,54是9的倍數(shù)。
下面咱們?cè)儆脭?shù)學(xué)表達(dá)式來演算一下,看看結(jié)果如何:
假設(shè)一個(gè)兩位數(shù)的十位數(shù)字是m,個(gè)位數(shù)字是n,即這個(gè)兩位數(shù)字是10m+n,十位數(shù)字和個(gè)位數(shù)字相加得m+n,則原來兩位數(shù)字和新數(shù)字相減是(10m+n)-(m+n)=9m,因此所得數(shù)字永遠(yuǎn)是9的倍數(shù)。
綜上所述,這個(gè)Flash心理測(cè)試的奧秘已經(jīng)浮出水面。
每次啟動(dòng)這個(gè)Flash心理測(cè)試,首先要做的是圖形的初始化,即隨機(jī)抽取圖形賦值給0至99,然后把是9的倍數(shù)的數(shù)字后面的圖形統(tǒng)一賦值成相同的圖形,于是除了9的倍數(shù)的其他圖形就只是個(gè)幌子而已,使大家不容易看出所有9的倍數(shù)的圖形相同。大家此時(shí)用鼠標(biāo)點(diǎn)擊水晶球就看到剛才記住的那個(gè)圖形。
而后這個(gè)Flash心理測(cè)試把右邊所有圖形遮蓋,再出現(xiàn)一個(gè)返回按鈕,其實(shí)這樣做也是有目的的,因?yàn)橹谱髡卟幌胱尨蠹抑?大家點(diǎn)擊返回按鈕時(shí)所有9的倍數(shù)的圖形已經(jīng)被替換了,以便為大家下一次再點(diǎn)擊水晶球時(shí)做鋪墊。
解析到這里,大家應(yīng)該清楚這個(gè)Flash心理測(cè)試的奧秘在哪里了吧?
下面就繼續(xù)我們的下半部分內(nèi)容,用VB6.0為大家編寫一下這個(gè)心理測(cè)試:
一、需要準(zhǔn)備的文件
1.大約300px×300px的10張符號(hào)圖片,編號(hào)分別為00~09(JPG格式);
2.大約30px×30px的10張縮小的符號(hào)圖片,編號(hào)分別為0~9(JPG格式),與符號(hào)圖片一一對(duì)應(yīng)(可以用Fireworks、Photoshop等軟件制作);
3.背景圖片(JPG格式,任意選擇,但要與界面大小一致);
4.圖標(biāo)圖片(ICO格式)。
二、界面設(shè)計(jì)
1.啟動(dòng)VB6.0,會(huì)出現(xiàn)一個(gè)缺省窗體Form1,命名為frm1,做為啟動(dòng)窗體;
2.點(diǎn)擊“工程”,選擇“添加窗體”,添加一個(gè)新窗體,命名為frm2,作為心理測(cè)試窗體;
3.在frm1中用標(biāo)簽控件寫上心理測(cè)試的說明,標(biāo)簽控件的BackStyle屬性設(shè)為0,BorderStyle屬性設(shè)為0,再添加三個(gè)按鈕控件,命名為cmdkaishi,cmdfanhui,cmdjieshu,相應(yīng)地把frm1的窗體BorderStyle屬性設(shè)為0;
4.在frm2中添加三組控件數(shù)組,第一組是標(biāo)簽控件lblshuzi(0)-lblshuzi(99),第二組是圖片控件picfuhao(0)-picfuhao(99),第三組是圖片控件pictuxing(0)-pictuxing(19),再添加一個(gè)圖片控件picshuijing和一個(gè)標(biāo)簽,用于寫上說明心理測(cè)試的說明;
5.把背景圖片添加到frm1、frm2的picture屬性中;
6.把圖標(biāo)圖片添加到frm1、frm2的icon屬性中。
三、代碼設(shè)計(jì)
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() '結(jié)束按鈕事件
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”) '加載有關(guān)圖片
Next i For i=10 to 19
pictuxing(i).Picture=LoadPicture(App.Path&“