摘要:在VB環境下利用第三方控件TilePuzzle開發拼圖游戲,以及給游戲開發出進一步完善的效果,并給出了源代碼。通過小游戲的開發,提高學習者的興趣。
關鍵詞:VB;拼圖游戲;TilePuzzle
中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2008)30-0609-02
The Exploitation of Jigsaw Puzzle Based on Visual Basic
HUANG Min
(Xuzhou Normal Higher School, Xuzhou 221116, China)
Abstract: makeing use of the third party control tilepuzzle to explore jigsaw puzzle,and to improve the effect of the game.it will offer the code of the game.by the exploitation of this small game,it will boost the interest of learner.
Key words: VB; Jigsaw Puzzle; Tilepuzzle
1 引言
大家都玩過拼圖游戲,但有沒有想過自己也開發一個。在Bisual Basic的環境下,我們可以開發出功能非常完善的拼圖游戲。
VB的基本概念的學習很簡單,但實際編程時卻常常感到無從著手,尤其是一些綜合的實例更感覺遙不可及。對于任何學習者,想一步完成所有的效果,那是不可能的。將實例分解,先解決其中主要的一個或兩個問題,其他的再慢慢解決,即使解決不了,也只是程序的效果不算完善,并不算是沒有解決。
2 TilePuzzle控件
如何把圖片分割成小圖片,并且能設置圖片的移動呢?在拼圖游戲中,要用到一個第三方控件TilePuzzle 控件,是另外軟件供應商提供的控件。要先裝入VB的控件工具箱。它有一些常用的屬性和事件:
Cols屬性:該屬性是指把拼圖圖像分割的列數。
Rows屬性:該屬性是指把拼圖圖像分割的行數。
Picture屬性:該屬性是指設置拼圖控件中的圖形。
Moved方法:該方法在圖像移動時發生。
Solved方法:該方法在拼圖完成時發生。
利用這些屬性和事件,以及VB的其他控件。我們就可以去開發拼圖游戲了。
3 拼圖游戲的初步效果
先來做一個有初步拼圖效果的程序。在這個程序里用兩個按鈕,第一個按鈕是“開局”,點擊按鈕后,需要向
TilePuzzle中加載圖片,還需要將圖片分成2行2列打亂次序。
Private Sub Command1_Click()
TilePuzzle1.Cols = 2
TilePuzzle1.Rows = 2
TilePuzzle1.Randomize
End Sub
第二個按鈕是“下一關”,當拼圖游戲完成后點擊按鈕進入下一關,拼圖的行和列都要增加:
Private Sub Command2_Click()
TilePuzzle1.Cols = TilePuzzle1.Cols + 1
TilePuzzle1.Rows = TilePuzzle1.Rows + 1
TilePuzzle1.Randomize
End Sub
在進行拼圖游戲的時候,定義窗體變量m記錄移動的次數。可以通過標簽在窗體上顯示出m的值。讓玩家在游戲時看到自己的成績。
Private Sub TilePuzzle1_Moved()
m = m + 1
Label1.Caption = m
End Sub
當本次拼圖完成時,彈出消息框,“恭喜過關,下關更要努力”,同時進入下一關:
Private Sub TilePuzzle1_Solved()
MsgBox \"恭喜過關,下關更要努力\"
TilePuzzle1.Cols = TilePuzzle1.Cols + 1
TilePuzzle1.Rows = TilePuzzle1.Rows + 1
TilePuzzle1.Randomize
m=0
Label1.Caption = m
End Sub
到此為止,這個游戲的雛形就算完成了。但是我們還需要對它做進一步的完善。
4 拼圖游戲的效果完善
4.1 拼圖圖片的更改
先增加第三按鈕“加載圖片”,點擊按鈕,玩家可以從電腦里選擇自己喜歡的圖片來進行拼圖游戲。還需要增加對話框控件,用來顯示打開文件對話框。由于TilePuzzle是第三方控件,所以它不能應用loadpicture來加載圖片,所以必須借助image控件來加載。這兩個控件的大小位置均設置相同,加載的圖片也是一樣的。在游戲開始前,只需要一個控件顯示就可以。游戲開始時,讓TilePuzzle控件顯示,image控件隱藏。
Private Sub Command3_Click()
CommonDialog1.Filter = \"Jpg(*.jpg)|*.jpg|Gif(*.gif)|*.gif\"
CommonDialog1.ShowOpen
pic = CommonDialog1.FileName
If pic <> \"\" Then
Image1.Picture = LoadPicture(pic)
TilePuzzle1.Visible = False
Image1.Visible = True
End If
End Sub
同時要修改開局按鈕的代碼:
Private Sub Command2_Click()
Set TilePuzzle1.Picture = Image1.Picture
TilePuzzle1.Left = Image1.Left
TilePuzzle1.Top = Image1.Top
Image1.Visible = False
TilePuzzle1.Visible = True
TilePuzzle1.Cols = 2
TilePuzzle1.Rows = 2
TilePuzzle1.Randomize
End Sub
4.2 拼圖的時間的記錄
玩家在進行拼圖游戲的時候,除了用走的步數來衡量之外,還需要拼圖時間。定義窗體變量n記錄時間。并設置時鐘控件的屬性和變量n的值。注意,在每一局游戲完成之后,n要清零。
Private Sub Timer1_Timer()
n=n+1
Label3.Caption = n
End Sub
這樣,一個效果比較完善拼圖游戲就完成了。全部完成之后,可以把程序生成可執行的EXE文件,就可以在脫離VB的環境下玩自己設計的拼圖游戲了。
5 結束語
本文利用第三方控件和VB內部控件,開發了一個益智小游戲,從簡單的步步完善,引發學習者的探究和思考,從而不斷擴展知識。同時也讓學習者同枯燥的程序設計中找到樂趣。
參考文獻:
[1] 劉恩濤.VB6.0編程技巧與實例分析[M].北京:中國水利水電出版社,1999.
[2] 劉炳文.Visual Basic 6.0程序設計[M].北京:人民郵電出版社,1999.
[3] 伍俊良.VB6控件應用實例教程[M].北京:北京希望電子出版社,2002.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文