摘要:VisualBasic是windows平臺(tái)上一個(gè)強(qiáng)大的開(kāi)發(fā)工具。本文通過(guò)用VB語(yǔ)言設(shè)計(jì)一個(gè)具體的小游戲,和大家共同探討VB制作游戲的方法和思路。
關(guān)鍵詞:VB 程序 控件 屬性 事件
編程前,首先,我們要掌握游戲的規(guī)則和功能。我們要編的是一個(gè)“找不同”的小游戲,在玩家進(jìn)入游戲后,界面上出現(xiàn)兩幅基本相同圖片,在兩幅圖片中有幾處細(xì)節(jié)不同的地方,找到后用鼠標(biāo)單擊。如果找對(duì)了,界面上就會(huì)出現(xiàn)紅色的圈把不同的地方圈起來(lái),如果點(diǎn)錯(cuò)了,則沒(méi)有任何反應(yīng)。游戲中兩幅圖片一共有四處不同,在30秒內(nèi),如果不同處全部找出來(lái),則彈出“闖關(guān)成功”對(duì)話框;如果沒(méi)有全部找出來(lái),則彈出“時(shí)間到,闖關(guān)失敗,是否重新再來(lái)?”對(duì)話框,單擊“是”重新闖關(guān),單擊“否”則退出。
其次,我們要清楚基本的制作思路:①首先我們?cè)诰W(wǎng)上下載兩副基本上相同,上面有多處細(xì)節(jié)不同的圖片。②在窗體里制作一個(gè)圖片框,將下載好的圖片插入到圖片框中。③在圖片的不同處上面加標(biāo)簽,并把標(biāo)簽的Backstyle屬性設(shè)置為“0-Transpare”,這樣把標(biāo)簽隱藏在圖片里。然后再在標(biāo)簽的單擊事件中制作出選中不同處畫(huà)圓的程序。這樣我們可以繞過(guò)復(fù)雜的程序,并能實(shí)現(xiàn)單擊不同處畫(huà)出紅圈的效果。④在窗體中我們用一個(gè)時(shí)鐘控件,將時(shí)鐘控件的Interval屬性設(shè)置為“1000”,時(shí)鐘控件Interval屬性中數(shù)值的單位是毫秒,設(shè)置為1000,就表示每隔1秒調(diào)用一次Timer事件中的程序。再在Timer事件中設(shè)置一個(gè)變量s,做一個(gè)變量減1,這樣形成每1秒減1的倒計(jì)時(shí)的效果。⑤制作一個(gè)文本框控件,將Timer事件中的變量s的值隨時(shí)顯示在文本框中。⑥在標(biāo)簽的單擊事件和時(shí)鐘的Timer事件中分別編寫(xiě)彈出對(duì)話框語(yǔ)句,并用if語(yǔ)句控制對(duì)話框的返回值,如果返回“是”的值,那么重置游戲的初始值。如果返回“否”的值,則退出程序。
下面我們就進(jìn)入編程狀態(tài),各對(duì)象主要屬性設(shè)置為:Form1的Caption為“找不同游戲”;Picture1的Picture屬性為“插入圖片的路徑”;Label1—label8的Caption屬性都為空,Backstyle屬性為“0-Transpare”,label9、label10的Caption屬性分別為“兩圖中有四處不同找出來(lái)”和“抓緊啊!”;Text1的Text1屬性為空;Timer1的Interval屬性為“1000”。
具體程序如下:(說(shuō)明:下列程序中Label2、Label3、Label4、Label5、Label6、Label7、Label8的Click事件和Label1的Click事件程序相同,只是名稱相應(yīng)地改變了,這里就不一一列出來(lái)了。續(xù)行表示該行在VB中與上一行是同一行)
Dim s As Integer ‘設(shè)置s作為整形全局變量
Dim g As Integer‘設(shè)置z作為整形全局變量
Private Sub Form_Load()
g=30‘為計(jì)時(shí)器賦初始值
End Sub
Private Sub Label1_Click()
Picture1.Circle (Label1.Top, Label1.Left), 500, vbRed ‘以標(biāo)簽1的中心作為圓心,500為半徑,繪制紅色圓圈
Picture1.Circle (Label11Top, Label11.Left), 500, vbRed‘以標(biāo)簽11的中心作為圓心,500為半徑,繪制紅色圓圈
Label1.Enabled=False‘隱藏標(biāo)簽1
Label2.Enabled=False‘隱藏標(biāo)簽2
s=s+1‘累加找對(duì)的次數(shù)
If s=4 Then‘如果找對(duì)四次
Y=MsgBox(\"恭喜您成功了!??!\", 0, \"過(guò)關(guān)了!\")‘彈出成功消息框
If Y = 1 Then‘消息框返回確定值
End
End If
End If
End Sub
Private Sub Timer1_Timer()
Text1.Text=g‘給文本框賦初始值
g=g–1‘每隔1秒,文本框中的數(shù)值減1
If g=0 Then‘如果時(shí)間到
z=MsgBox(\"失敗了,繼續(xù)努力!\",4,\"時(shí)間到!\") ‘彈出失敗消息框
If z=6 Then‘如果單擊繼續(xù)努力
s=0‘計(jì)數(shù)器清零
g=30‘重新賦初始值
Else
End‘如果點(diǎn)否,退出程序
End If
End If
End Sub
參考文獻(xiàn):
彭波編著.Visual Basic[M].北京:清華大學(xué)出版社,2002.
(作者單位:遼寧省機(jī)電工程學(xué)校)