任少斌
摘要:本文針對目前VB學習過程中,控件事件參數的使用方法進行了有效的探索。過程參數的使用是程序設計中的重要環節,現行的教材中很少介紹。學生在學習過程中沒有得到足夠的重視。本文著重探討了鼠標事件中坐標參數的使用方法,并以此為例說明程序學習的基本方法。
關鍵詞:VB程序設計;事件過程;控件;參數
中圖分類號:G642 文獻標識碼:A
1引言
Visual Basic(以下簡稱VB)是一種可視化的、面向對象和采用事件驅動方式的結構化高級程序設計語言,可用于開發Windows 環境下的各類應用程序。它簡單易學、效率高、功能又強,所以目前很多院校將它作為非計算機專業軟件技術基礎課程講授的編程語言之一。
在長期的教學過程中發現,學生對于教材中介紹的內容能夠很快掌握,參加學期考試甚至是計算機相關等級考試成績也很好,但進入到具體的課程設計或項目工作時往往出現無從下手的情況。這一現象在目前的本科生教學中普遍存在。對于絕大多數的學校由于條件限制,特別是教學計劃的限制,很難保證充足的上機時間。因此如何通過有限的時間讓學生掌握學習程序設計的基本方法,是每一個從事計算機基礎教學老師關心的問題。
2問題分析
程序教學目前普遍使用的教學模式是選用經典教材,課堂教學與實驗教學。在此過程中,通過講解教材中典型例題介紹基本概念;通過課后作業檢查學生對于教材的理解;通過上機實驗檢查學生實際運用能力。這期間最突出的問題是學生在完成作業與實驗時基本順利,但將具體要求變化之后,特別是教材當中沒有相似內容時,感覺無從下手。通過長期的教學發現問題集中在教學環節。
教材中的例題、習題與教學環節中的實驗內容主要是為了配合教學計劃。其主要目的是為了掌握基本概念,對于概念的綜合理解沒有效果。學生在教材中可以找到幾乎完全相似的內容。但進入到實際項目后,90%的內容是教材中沒有的內容,它要求學生能夠綜合運用知識解決問題。
3實驗創新
3.1事件說明
VB是基于事件方式的可視化程序設計。針對不同的事件在執行過程中有不同的參數傳遞。參數傳遞在程序設計中很重要,但在教材中或MSDN中都沒有詳細介紹具體的應用方式。在學習的過程中成為教學空白。下面結合教學內容介紹關于鼠標參數中X,Y參數的綜合運用。
鼠標的事件為:
Private Sub Form_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)
Private Sub MDIForm_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)
Private Sub object_MouseDown([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single)
Private Sub Form_MouseUp(button As Integer, shift As Integer, x As Single, y As Single)
Private Sub MDIForm_MouseUp(button As Integer, shift As Integer, x As Single, y As Single)
Private Sub object _MouseUp([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single)
其中概念與含義見表1。

3.2實驗設計
實驗中要求學生能夠利用X與Y值的變化進行設計。典型應用一:模仿CAD軟件中的定位功能,通過調整X,Y值畫線與特定圖形。典型應用二:利用X,Y值結合其它控件編制一個小型游戲。其中對于第一個應用方式比較容易實現,絕大多數學生能夠通過文本框結合Line,Circle及Shape控件完成。對于第二種應用方式則比較困難。下面重點說明如何解決。游戲內容能夠吸引學生的主要原因是它的集聲音、動畫、情節一體,模擬逼真。設計游戲軟件可以使用專用的平臺,要求具備多學科知識,同時需要具備一定的美工基礎。VB中完全可以綜合利用控件技術實現簡單的游戲設計。
本實驗主要使用控件為按鈕(也可以使用Picture控件),時間控件,滾動條控件。利用在鼠標在按鈕對象上點擊時X,Y值確定是否點擊有效,利用程序代碼調整區域改變難度,同時也可以通過改變對象的大小或時間間隔調控難度。使用Command按鈕作為操作對象。
設計效果如表2所示。

利用數組化標準控件的功能產生8個按鈕Command1,當程序啟動后,利用隨機函數控制按鈕的移動方向,利用鼠標點擊特定區域確定是否點擊成功并計數,利用滾動條Hscroll1調整時間控件Timer的時間間隔,當鼠標點擊成功時利用Visible屬性將其隱藏。當窗體中的所有按鈕被隱藏則游戲結束,并統計使用時間。按鈕控件通過修改Style屬性值為Graphical,并將按鈕對象的Caption清空,通過Picture屬性修改為圖案。設計界面如圖1所示,運行界面如圖2所示。

3.3設計代碼
Dim bl% '用于控制目標點擊區域比例
Dim jsq%
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case Index
If X > Command1(Index).Width / 200 * ((100 - bl) / 200) _
And X < Command1(Index).Width / 200 * ((100 + bl) / 200) _
And Y > Command1(Index).Height / 200 * ((100 - bl) / 200) _
And Y < Command1(Index).Height / 200 * ((100 + bl) / 200) Then
Command1(Index).Visible = False
jsq = jsq + 1
If jsq = 8 Then
pdtj = MsgBox("終于完成任務了,是否繼續", vb YesNo, "系統提示") 'pdtj用于確定是否繼續
If pdtj = 6 Then
For i = 0 To 7
Command1(i).Visible = True
Next i
Else
End
End If
End If
End If
End Select
End Sub
Private Sub Form_Load()
Randomize
Form1.Caption = "Visual Basic創新實驗設計"
Label1.Caption = "快"
Label2.Caption = "慢"
Label3.Caption = "小"
Label4.Caption = "大"
Frame1.Caption = ""
Frame2.Caption = "調整內容"
For i = 0 To 7
Command1(i).Caption = ""
Command1(i).Left = Int((Frame1.Width - Command1(i).Width) * Rnd)
Command1(i).Top = Int((Frame1.Height - Command1(i).Height) * Rnd)
Next i
Timer1.Interval = 200
bl = 50
HScroll2.Value = bl
HScroll1.Value = Timer1.Interval
HScroll1.Max = 500
HScroll1.Min = 50
HScroll2.Max = 100
HScroll2.Min = 5
End Sub
Private Sub HScroll1_Change()
Timer1.Interval = HScroll1.Value
End Sub
Private Sub HScroll1_Scroll()
Timer1.Interval = HScroll1.Value
End Sub
Private Sub Timer1_Timer()
For i = 0 To 7
If Rnd > 0.5 Then fx = 1 Else fx = -1
'產生控制隨機變化的方向
Command1(i).Left = Command1(i).Left + fx * Rnd * Command1(i).Width * 0.1 '調整控件水平位置
If Command1(i).Left < 0 Then Command1(i).Left = Form1.Width - Command1(i).Width '控件越界處理
If Command1(i).Left + Command1(i).Width > Form1.Width Then Command1(i).Left = 0
Command1(i).Top = Command1(i).Top + fx * Rnd * Command1(i).Height * 0.1
'調整控件垂直位置
If Command1(i).Top < 0 Then Command1(i).Top = Form1.Height - Command1(i).Height '控件越界處理
If Command1(i).Top + Command1(i).Height > Form1.Height Then Command1(i).Top = 0
Next i
End Sub
4結束語
本文通過對VB基本概念中典型參數的綜合運用,實現了一個簡單的小游戲。在實踐教學過程中效果非常明顯。學生普遍將注意力由簡單概念背誦轉變到學習綜合運用中。從本質而言,這個游戲程序遠不及正規軟件,但它介紹了一種教學思路。這個實驗可以引導學生從玩游戲到自己設計游戲,增加了學習興趣。教學的任務就是讓學生掌握一種技能,而不是單純記憶代碼。如何能夠讓學生綜合運用知識,不是通過一兩個實驗能解決的,需要大家共同研究。
參考文獻:
[1] 龔沛曾,楊志強,陸慰民.Visual Basic 程序設計教程[M]. 3版. 北京:高等教育出版社,2007.
[2] (美)James D.Foxall.Visual Basic 編程標準[M]. 王建華,譯.北京:機械工業出版社,2000.
[3] 賈穎.“VB 程序設計”課程教學中的變量類型使用問題研究[J]. 計算機教育,2008(20).
[4] 董榮勝.計算機科學導論-思想與方法[M]. 北京:高等教育出版社,2007.
[5] 謝紅霞,杜建生.“VB 程序設計”教學與實踐[J]. 計算機教育,2007(10).
Parameters Control the Incident by the Use of VB to Explore About Experimental Innovation
REN Shao-bin
(Department of Computer Foundation Education, TaiYuan University of Technology, Taiyuan 030024, China)
Abstract: In this paper, the current process of learning VB, the control parameters to use the incident to an effective exploration. The use of process parameters in program design is an important part of the existing materials are rarely introduced. Students in the learning process has not been given sufficient attention. This article focused on the parameters of the mouse event coordinates the use of methods and procedures as an example of the fundamental ways of learning.
Key words: VB programming language; function; VB controls; parameter