任少斌
摘要:本文針對目前VB學(xué)習(xí)過程中,控件事件參數(shù)的使用方法進行了有效的探索。過程參數(shù)的使用是程序設(shè)計中的重要環(huán)節(jié),現(xiàn)行的教材中很少介紹。學(xué)生在學(xué)習(xí)過程中沒有得到足夠的重視。本文著重探討了鼠標事件中坐標參數(shù)的使用方法,并以此為例說明程序?qū)W習(xí)的基本方法。
關(guān)鍵詞:VB程序設(shè)計;事件過程;控件;參數(shù)
中圖分類號:G642 文獻標識碼:A
1引言
Visual Basic(以下簡稱VB)是一種可視化的、面向?qū)ο蠛筒捎檬录?qū)動方式的結(jié)構(gòu)化高級程序設(shè)計語言,可用于開發(fā)Windows 環(huán)境下的各類應(yīng)用程序。它簡單易學(xué)、效率高、功能又強,所以目前很多院校將它作為非計算機專業(yè)軟件技術(shù)基礎(chǔ)課程講授的編程語言之一。
在長期的教學(xué)過程中發(fā)現(xiàn),學(xué)生對于教材中介紹的內(nèi)容能夠很快掌握,參加學(xué)期考試甚至是計算機相關(guān)等級考試成績也很好,但進入到具體的課程設(shè)計或項目工作時往往出現(xiàn)無從下手的情況。這一現(xiàn)象在目前的本科生教學(xué)中普遍存在。對于絕大多數(shù)的學(xué)校由于條件限制,特別是教學(xué)計劃的限制,很難保證充足的上機時間。因此如何通過有限的時間讓學(xué)生掌握學(xué)習(xí)程序設(shè)計的基本方法,是每一個從事計算機基礎(chǔ)教學(xué)老師關(guān)心的問題。
2問題分析
程序教學(xué)目前普遍使用的教學(xué)模式是選用經(jīng)典教材,課堂教學(xué)與實驗教學(xué)。在此過程中,通過講解教材中典型例題介紹基本概念;通過課后作業(yè)檢查學(xué)生對于教材的理解;通過上機實驗檢查學(xué)生實際運用能力。這期間最突出的問題是學(xué)生在完成作業(yè)與實驗時基本順利,但將具體要求變化之后,特別是教材當(dāng)中沒有相似內(nèi)容時,感覺無從下手。通過長期的教學(xué)發(fā)現(xiàn)問題集中在教學(xué)環(huán)節(jié)。
教材中的例題、習(xí)題與教學(xué)環(huán)節(jié)中的實驗內(nèi)容主要是為了配合教學(xué)計劃。其主要目的是為了掌握基本概念,對于概念的綜合理解沒有效果。學(xué)生在教材中可以找到幾乎完全相似的內(nèi)容。但進入到實際項目后,90%的內(nèi)容是教材中沒有的內(nèi)容,它要求學(xué)生能夠綜合運用知識解決問題。
3實驗創(chuàng)新
3.1事件說明
VB是基于事件方式的可視化程序設(shè)計。針對不同的事件在執(zhí)行過程中有不同的參數(shù)傳遞。參數(shù)傳遞在程序設(shè)計中很重要,但在教材中或MSDN中都沒有詳細介紹具體的應(yīng)用方式。在學(xué)習(xí)的過程中成為教學(xué)空白。下面結(jié)合教學(xué)內(nèi)容介紹關(guān)于鼠標參數(shù)中X,Y參數(shù)的綜合運用。
鼠標的事件為:
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實驗設(shè)計
實驗中要求學(xué)生能夠利用X與Y值的變化進行設(shè)計。典型應(yīng)用一:模仿CAD軟件中的定位功能,通過調(diào)整X,Y值畫線與特定圖形。典型應(yīng)用二:利用X,Y值結(jié)合其它控件編制一個小型游戲。其中對于第一個應(yīng)用方式比較容易實現(xiàn),絕大多數(shù)學(xué)生能夠通過文本框結(jié)合Line,Circle及Shape控件完成。對于第二種應(yīng)用方式則比較困難。下面重點說明如何解決。游戲內(nèi)容能夠吸引學(xué)生的主要原因是它的集聲音、動畫、情節(jié)一體,模擬逼真。設(shè)計游戲軟件可以使用專用的平臺,要求具備多學(xué)科知識,同時需要具備一定的美工基礎(chǔ)。VB中完全可以綜合利用控件技術(shù)實現(xiàn)簡單的游戲設(shè)計。
本實驗主要使用控件為按鈕(也可以使用Picture控件),時間控件,滾動條控件。利用在鼠標在按鈕對象上點擊時X,Y值確定是否點擊有效,利用程序代碼調(diào)整區(qū)域改變難度,同時也可以通過改變對象的大小或時間間隔調(diào)控難度。使用Command按鈕作為操作對象。
設(shè)計效果如表2所示。
利用數(shù)組化標準控件的功能產(chǎn)生8個按鈕Command1,當(dāng)程序啟動后,利用隨機函數(shù)控制按鈕的移動方向,利用鼠標點擊特定區(qū)域確定是否點擊成功并計數(shù),利用滾動條Hscroll1調(diào)整時間控件Timer的時間間隔,當(dāng)鼠標點擊成功時利用Visible屬性將其隱藏。當(dāng)窗體中的所有按鈕被隱藏則游戲結(jié)束,并統(tǒng)計使用時間。按鈕控件通過修改Style屬性值為Graphical,并將按鈕對象的Caption清空,通過Picture屬性修改為圖案。設(shè)計界面如圖1所示,運行界面如圖2所示。
3.3設(shè)計代碼
Dim bl% '用于控制目標點擊區(qū)域比例
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("終于完成任務(wù)了,是否繼續(xù)", vb YesNo, "系統(tǒng)提示") 'pdtj用于確定是否繼續(xù)
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創(chuàng)新實驗設(shè)計"
Label1.Caption = "快"
Label2.Caption = "慢"
Label3.Caption = "小"
Label4.Caption = "大"
Frame1.Caption = ""
Frame2.Caption = "調(diào)整內(nèi)容"
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
'產(chǎn)生控制隨機變化的方向
Command1(i).Left = Command1(i).Left + fx * Rnd * Command1(i).Width * 0.1 '調(diào)整控件水平位置
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
'調(diào)整控件垂直位置
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結(jié)束語
本文通過對VB基本概念中典型參數(shù)的綜合運用,實現(xiàn)了一個簡單的小游戲。在實踐教學(xué)過程中效果非常明顯。學(xué)生普遍將注意力由簡單概念背誦轉(zhuǎn)變到學(xué)習(xí)綜合運用中。從本質(zhì)而言,這個游戲程序遠不及正規(guī)軟件,但它介紹了一種教學(xué)思路。這個實驗可以引導(dǎo)學(xué)生從玩游戲到自己設(shè)計游戲,增加了學(xué)習(xí)興趣。教學(xué)的任務(wù)就是讓學(xué)生掌握一種技能,而不是單純記憶代碼。如何能夠讓學(xué)生綜合運用知識,不是通過一兩個實驗?zāi)芙鉀Q的,需要大家共同研究。
參考文獻:
[1] 龔沛曾,楊志強,陸慰民.Visual Basic 程序設(shè)計教程[M]. 3版. 北京:高等教育出版社,2007.
[2] (美)James D.Foxall.Visual Basic 編程標準[M]. 王建華,譯.北京:機械工業(yè)出版社,2000.
[3] 賈穎.“VB 程序設(shè)計”課程教學(xué)中的變量類型使用問題研究[J]. 計算機教育,2008(20).
[4] 董榮勝.計算機科學(xué)導(dǎo)論-思想與方法[M]. 北京:高等教育出版社,2007.
[5] 謝紅霞,杜建生.“VB 程序設(shè)計”教學(xué)與實踐[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