visual basic繼承了basic語(yǔ)言易學(xué)易用的特點(diǎn),特別適合于初學(xué)者學(xué)習(xí)windows系統(tǒng)編程。隨著21世紀(jì)信息社會(huì)的到來(lái),計(jì)算機(jī)在人們的工作和生活中的深入,要求我們?cè)絹?lái)越多地與計(jì)算機(jī)打交道,為了使用戶在繁忙的日程工作中得到放松,于是出現(xiàn)了各種各樣的休閑軟件,如聊天工具,游戲等等。于是我們小組著手設(shè)計(jì)開(kāi)始一個(gè)這樣的游戲軟件。通過(guò)這學(xué)期來(lái)Visual Basic的學(xué)習(xí),我初步掌握了Visual Basic語(yǔ)言的最基本的知識(shí),于是在牛榮和李鵬等老師的指導(dǎo)下動(dòng)手用Visual Basic編寫(xiě)俄羅斯方塊游戲。
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比桑日網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式桑日網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋桑日地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
我們之所以選擇開(kāi)發(fā)俄羅斯方塊游戲,無(wú)可爭(zhēng)議,《俄羅斯方塊》是有史以來(lái)最偉大的游戲之一。 在曾經(jīng)發(fā)布過(guò)的所有游戲中,《俄羅斯方塊》還被認(rèn)為是僅有的一個(gè)能夠真正吸引廣泛人群的作品。誰(shuí)能說(shuō)清楚,迄今為止人們究竟花了多少萬(wàn)個(gè)小時(shí)在這個(gè)游戲上?也許這些時(shí)間本來(lái)可以被花在更具生產(chǎn)力的活動(dòng)上。某些批評(píng)家也許會(huì)聲稱,《俄羅斯方塊》要比過(guò)去二十年間出現(xiàn)的任何東西都要浪費(fèi)人們的時(shí)間。至于我們,則要欣然提名它為GameSpot評(píng)選出的歷史上最偉大游戲之一。
為了懷念經(jīng)典,也為了能夠給大多的計(jì)算機(jī)用戶在工作之余找到一個(gè)休閑、娛樂(lè)的一個(gè)方式,我們小組開(kāi)始著手用VB語(yǔ)言開(kāi)發(fā)一個(gè)經(jīng)典的俄羅斯方塊游戲。
工程概況
2.1 項(xiàng)目名稱
俄羅斯方塊游戲
2.2 設(shè)計(jì)平臺(tái)
VB 全稱Visual Basic,它是以Basic語(yǔ)言作為其基本語(yǔ)言的一種可視化編程工具。
Vb是microsoft公司于1991年退出的windows應(yīng)用程序開(kāi)發(fā)工具visual意思是“可視化的”。在它剛推出來(lái)時(shí),自身還存在一些缺陷,功能也相對(duì)少一些。但是經(jīng)過(guò)多年的開(kāi)發(fā)研究。最近microsoft公司又推出了VB6.0版本
VB6.0運(yùn)行環(huán)境:硬件,要求486以上的處理器、16MB以上內(nèi)存,50MB 以上的硬盤(pán),cd-rom驅(qū)動(dòng)器,鼠標(biāo)。軟件:要求windows 95以上版本。
2.3程序設(shè)計(jì)思想
游戲是用來(lái)給大家?jiàn)蕵?lè)的,所以要能在使用的過(guò)程中給大家?guī)?lái)快樂(lè),消除大家的疲勞,所以我們?cè)谟螒蛑刑砑恿似恋膱?chǎng)景和動(dòng)聽(tīng)的音樂(lè),設(shè)置了過(guò)關(guān)升級(jí)的功能,激發(fā)大家的娛樂(lè)激情。
從游戲的基本玩法出發(fā),主要就是俄羅斯方塊的形狀和旋轉(zhuǎn),我們?cè)谠O(shè)計(jì)中在一個(gè)圖片框中構(gòu)造了一個(gè)4*4的網(wǎng)狀小塊,由這些小塊組合成新的形狀,每四個(gè)小塊連接在一起就可以構(gòu)造出一種造型,因此我們總共設(shè)計(jì)了7中造型,每種造型又可以通過(guò)旋轉(zhuǎn)而變化出2到4種形狀,利用隨機(jī)函數(shù)在一個(gè)欲覽窗體中提前展示形狀供用戶參考,然后將展示的形狀復(fù)制到游戲窗體中進(jìn)行擺放,在游戲窗體中用戶就可以使用鍵盤(pán)的方向鍵來(lái)控制方塊的運(yùn)動(dòng),然后利用遞歸語(yǔ)句對(duì)每一行進(jìn)行判斷,如果有某行的方塊是滿的,則消除這行的方塊,并且使上面的方塊自由下落,其中,方塊向下的速度是有時(shí)鐘控件控制的,在游戲中,用戶也可以使用向下鍵加快下落速度,定義一個(gè)變量,對(duì)消除的函數(shù)進(jìn)行記錄,最后就可以得出用戶的分?jǐn)?shù),用if 語(yǔ)句對(duì)分?jǐn)?shù)判斷,達(dá)到一定的積分就可以升級(jí)到下一個(gè)檔次。
俄羅斯方塊游戲設(shè)計(jì)的主要步驟為以下10個(gè)方面:
(1)游戲界面的設(shè)計(jì)。
(2)俄羅斯方塊的造型。
(3)俄羅斯方塊的旋轉(zhuǎn)。
(4)俄羅斯方塊的運(yùn)動(dòng)情況(包括向左,向右和向下)。
(5)俄羅斯方塊的自動(dòng)消行功能。
(6)游戲級(jí)別的自由選擇。
(7)游戲速度的自由選擇。
(8)游戲得分的計(jì)算。
(9)游戲菜單選項(xiàng)的設(shè)計(jì)及功能實(shí)現(xiàn)。
(10)游戲的背景音樂(lè)及特效。
2.4運(yùn)用的控件和主要對(duì)象
我們?cè)谠O(shè)計(jì)過(guò)程中主要用到的控件有:command控件,image控件,picture控件,label控件,timer控件,text控件,windows media player控件等等。
2.5主要實(shí)現(xiàn)的功能
我們開(kāi)發(fā)的俄羅斯方塊游戲,主要實(shí)現(xiàn)了以下幾種功能:
1.可以靈活控制方塊在圖形框中運(yùn)動(dòng)。
2.游戲過(guò)程中方塊可以自由旋轉(zhuǎn)。
3.當(dāng)某一行的方塊排列滿時(shí),將自動(dòng)將這一行方塊消除,然后將上面所有方塊向下移動(dòng),可以支持連續(xù)消行。
4.游戲前可以選擇游戲的速度和游戲的等級(jí),游戲速度既為方塊下落速度,游戲等級(jí)為初始游戲時(shí)在基層隨機(jī)生成一定行數(shù)的無(wú)規(guī)律方塊,生成的行數(shù)由你來(lái)選擇,每行至少產(chǎn)生5個(gè)以上的無(wú)規(guī)律方塊,這樣增加了游戲難度,對(duì)于游戲高手來(lái)說(shuō),無(wú)疑不是一個(gè)新的挑戰(zhàn)。
5.游戲的得分支持積分,并且按照公式:
得分 = 原來(lái)分?jǐn)?shù)+ 100 * (2 ^ 同時(shí)消除的行數(shù)-1)
這樣,你同一時(shí)間消除的行數(shù)越多,你的得分也就越高,當(dāng)游戲積分到了一定時(shí)可以自動(dòng)升級(jí),這個(gè)升級(jí)指速度升級(jí)。
6.游戲中提供了一個(gè)漂亮的場(chǎng)景和動(dòng)聽(tīng)的音樂(lè),給你帶來(lái)無(wú)限激情。
2.6開(kāi)發(fā)人員
由于這次課程設(shè)計(jì)所選的題目太復(fù)雜,而時(shí)間又比較緊張,指導(dǎo)老師建議和同學(xué)分工完成。我們小組成員包括組長(zhǎng)孫磊周,副組長(zhǎng)鄒海星,此游戲由我們兩個(gè)人共同開(kāi)發(fā)而成。
正文
3.1游戲設(shè)計(jì)的具體實(shí)現(xiàn)
在我們兩個(gè)人共同努力下,此次設(shè)計(jì),終于能夠圓滿完成。由于時(shí)間的緊促,在設(shè)計(jì)中,也許會(huì)有一些考慮不周之處,但其功能已經(jīng)能夠滿足大多用戶的需求,相信假以時(shí)日,一定能做出一個(gè)更經(jīng)典,更完美的俄羅斯方塊游戲,下面我們將對(duì)每一步的具體如何實(shí)現(xiàn)展示給大家。
3.1.1游戲界面的設(shè)計(jì)和背景音樂(lè)及特效的實(shí)現(xiàn)
俄羅斯方塊游戲主要由兩個(gè)界面構(gòu)成,登陸界面和開(kāi)始游戲界面,在登陸界面中我們可以首先看到圣誕節(jié)的晚上飄梅花的場(chǎng)景,梅花從窗體頂部做函數(shù)曲線的下落運(yùn)動(dòng),在窗體中定義一個(gè)Image控件組,在通用中定義梅花X坐標(biāo)變量動(dòng)態(tài)數(shù)組,Y坐標(biāo)變量動(dòng)態(tài)數(shù)組,步距X的變量動(dòng)態(tài)數(shù)組,步距Y的變量動(dòng)態(tài)數(shù)組,以及振幅變量動(dòng)態(tài)數(shù)組。然后在窗體form_load中可以定義梅花的數(shù)量,利用隨機(jī)函數(shù)產(chǎn)生隨機(jī)的梅花坐標(biāo),步距和振幅,Image控件在運(yùn)行時(shí)候就調(diào)用梅花圖片,Image控件就可以由時(shí)鐘控件控制下落速度,可以自由調(diào)節(jié),梅花按snow(i).Left = xp(i) + am(i) * Sin(dx(i))函數(shù)在做縱向的正玄函數(shù)軌跡運(yùn)動(dòng),豎直方向上為自由下落運(yùn)動(dòng),,有am(i)來(lái)控制梅花的左右移動(dòng)振幅。因此,我們就可以看到一個(gè)梅花在空中自由飄舞的畫(huà)面了。
背景畫(huà)面是用photoshop軟件處理的漂亮圖案,原本畫(huà)面中的動(dòng)畫(huà)效果都是由Image控件制作的,還有點(diǎn)擊進(jìn)入游戲的按鈕是由Label控件實(shí)現(xiàn)的,因?yàn)镮mage控件沒(méi)有置前置后功能,不能將下雪的場(chǎng)景體現(xiàn)完整性,所以將這些圖案全部放在背景上,不影響雪花飄落的效果,當(dāng)點(diǎn)擊畫(huà)面的時(shí)候一樣可以進(jìn)入游戲界面。
游戲的背景音樂(lè)是由一段代碼調(diào)用系統(tǒng)播放器Windows Player播放背景音樂(lè),由于本次設(shè)計(jì)主要是針對(duì)游戲如何設(shè)計(jì)的,所以在這里就不對(duì)播放背景音樂(lè)的功能做介紹了。
3.1.2俄羅斯方塊的造型
相信朋友們都玩過(guò)俄羅斯方塊,對(duì)這個(gè)游戲的玩法和方塊形狀都比較熟悉。我們這個(gè)游戲只選擇了最基本的7中造型,包括長(zhǎng)條型,正方型,正S型,反S型,正7型,反7型,T型。如果需要我們可以添加更多的造型。將游戲界面的游戲區(qū)圖片框分割成10*20的小塊,每個(gè)小塊放置一個(gè)command控件,預(yù)覽區(qū)圖片框按同樣比例分割成4*4的小塊,同樣有command控件構(gòu)成,我們可以把預(yù)覽區(qū)圖片框看作是從游戲區(qū)圖片框中選取的一個(gè)部分,游戲區(qū)的小方塊編號(hào)和欲覽區(qū)編號(hào)如下圖:
0 1 2 3 4 5 6 7 8 9
… … … … … … … … … …
… … … … … … … … … …
90 91 92 93 94 95 96 97 98 99
3 4 5 6
13 14 15 16
23 24 25 26
33 34 35 36
游戲區(qū)編號(hào) 欲覽區(qū)編號(hào)
利用Select將方塊的7中造型列出,比如長(zhǎng)條型的設(shè)計(jì),在欲覽區(qū)中分別有3.4.5.6和5.15.25.35四個(gè)方塊構(gòu)成兩中形態(tài),用數(shù)組為:
m(0) = 3: m(1) = 4: m(2) = 5: m(3) = 6: situation2 = 0
m(0) = 5: m(1) = 15: m(2) = 25: m(3) = 35: situation2 = 1
將它的形狀編號(hào)為0和1,在后面方便調(diào)用,其他的方塊造型同樣的方法。
3.1.3俄羅斯方塊的旋轉(zhuǎn)
俄羅斯方塊的旋轉(zhuǎn)主要將方塊的位置加以變換得到的,例如上述范例,長(zhǎng)條型有兩中樣式,根據(jù)小方塊的編號(hào)變動(dòng)來(lái)實(shí)現(xiàn)整個(gè)造型的旋轉(zhuǎn),比如:
If n(0) - 18 = 2 And n(3) + 9 = 198 Then
If cmdfang(n(0) - 18).Visible = False And _
cmdfang(n(1) - 9).Visible = False And _
cmdfang(n(3) + 9).Visible = False Then
hidefang 0
n(0) = n(0) - 18
n(1) = n(1) - 9
n(3) = n(3) + 9
showfang 0
situation = 1
End If
End If
方塊的造型在旋轉(zhuǎn)的時(shí)候存在一個(gè)公式,當(dāng)然首先要判斷是否滿足旋轉(zhuǎn)的要求,以上是一個(gè)長(zhǎng)條型由橫著變成豎立狀態(tài)的旋轉(zhuǎn),我們以它的造型中的第三個(gè)小方塊n(3)為中心旋轉(zhuǎn),這樣,在開(kāi)始運(yùn)動(dòng)的時(shí)候,長(zhǎng)條形要發(fā)生旋轉(zhuǎn)最少要運(yùn)動(dòng)到第三行,才能由橫著變成豎立狀態(tài),游戲區(qū)圖形框中第三行的第一個(gè)方塊的編號(hào)為20,所以長(zhǎng)條造型的第一個(gè)小方塊的編號(hào)n(0)必須要大于20。同樣,長(zhǎng)條型方塊在下落到底部的時(shí)候也有限制。如果長(zhǎng)條下落到最后一行也將無(wú)法由橫著變成豎立狀態(tài)。
3.1.4如何實(shí)現(xiàn)方塊的運(yùn)動(dòng)和自動(dòng)消除滿行的方塊
我們的這個(gè)俄羅斯方塊游戲主要是利用command控件的visible屬性完成效果的,其實(shí)在游戲區(qū)圖形框可以看成是由許多的command小方塊組成,方塊運(yùn)動(dòng)的過(guò)程就是造型里方塊顯示或者隱藏,就像現(xiàn)在的霓虹燈效果一樣,由時(shí)鐘控件控制visible屬性改變的速度,上一層的消失,下一層的顯示,這樣,從視覺(jué)效果可以看到方塊的下落運(yùn)動(dòng)效果。
方塊在下落的過(guò)程中會(huì)自動(dòng)判斷每一行方塊的visible屬性,如果全部為true時(shí),就會(huì)將這一行小方塊的visible屬性全部變成false,在將上面的小方塊向下移動(dòng),利用for語(yǔ)句進(jìn)行循環(huán)判斷,將所有這樣情況的行改變小方塊visible屬性。當(dāng)有多行同時(shí)出現(xiàn)這樣情況時(shí)使用遞歸調(diào)用,實(shí)現(xiàn)連續(xù)消行。具體程序代碼如下:
For i = 190 To 10 Step -10
If cmdfang(i).Visible = True And _
cmdfang(i + 1).Visible = True And _
cmdfang(i + 2).Visible = True And _
cmdfang(i + 3).Visible = True And _
cmdfang(i + 4).Visible = True And _
cmdfang(i + 5).Visible = True And _
cmdfang(i + 6).Visible = True And _
cmdfang(i + 7).Visible = True And _
cmdfang(i + 8).Visible = True And _
cmdfang(i + 9).Visible = True Then
For j = i + 4 To i Step -1
t = 1
cmdfang(j).Visible = False
cmdfang(2 * i + 9 - j).Visible = False
For k = 1 To 4000
DoEvents
Next
t = 0
Next
linenum = linenum + 1
For j = i - 1 To 0 Step -1
If cmdfang(j).Visible = True Then
cmdfang(j).Visible = False
cmdfang(j + 10).Visible = True
End If
Next
clearline '為了實(shí)現(xiàn)連消數(shù)行,這里使用遞歸調(diào)用
End If
Next
3.1.5游戲速度和游戲級(jí)別自由選擇
游戲速度的自由選擇無(wú)非就是改變時(shí)鐘控件的頻率,我們?cè)诓藛沃刑砑恿诉x擇速度的功能,還有添加了考驗(yàn)功能,將欲覽窗中的方塊造型隱藏,給玩家提高了難度,如果你不愿意接受考驗(yàn)也可以點(diǎn)擊顯示還原成原來(lái)狀態(tài)。
游戲級(jí)別的自由選擇是讓用戶選擇游戲開(kāi)始時(shí)候,游戲區(qū)底部出現(xiàn)一定行數(shù)的隨機(jī)方塊,同樣給玩家增加了難度,功能代碼如下:
For i = 19 To 20 - Val(txthard.Text) Step -1
For j = i * 10 To i * 10 + 9
If Rnd = 0.5 Then cmdfang(j).Visible = True
Next
Next
可以根據(jù)你選擇的難度系數(shù)在底層的每一行隨機(jī)產(chǎn)生超過(guò)半數(shù)(即5個(gè)以上)以上的小方塊,這樣適合喜歡高難度的玩家。
3.1.6游戲得分的計(jì)算和游戲菜單的編輯
游戲得分的計(jì)算主要是根據(jù)消除的行數(shù)來(lái)決定的,當(dāng)然每一次同時(shí)消除的行數(shù)不一樣,每一行的得分也不一樣,如果你每次消除的行數(shù)為1,則最后得分是100分,如果同時(shí)消除2行,則最后得分是300分,同時(shí)消除3行,得分為700分,同時(shí)消除4行,得分為1500分,這由公式:得分 = 原來(lái)分?jǐn)?shù)+ 100 * (2 ^ 同時(shí)消除的行數(shù)-1)。
游戲的編輯,讀者可以參照下面的功能介紹。
3.2 游戲功能的介紹
文件-------開(kāi)始:開(kāi)始游戲。
繼續(xù):繼續(xù)游戲。
暫停:暫時(shí)停止游戲,點(diǎn)擊繼續(xù)的時(shí)候可以繼續(xù)游戲。
退出:退出游戲。
設(shè)置-------選擇游戲級(jí)別。
選擇游戲速度。
考驗(yàn)-------顯示:顯示欲覽去方塊。
隱藏:隱藏欲覽去方塊。
幫助-------操作提示以及版本信息和作者資料。
用戶界面具體如圖:
圖—登陸界面 圖—游戲界面
圖—菜單編輯界面 圖—游戲幫助界面
有關(guān)說(shuō)明
經(jīng)過(guò)兩個(gè)多星期的設(shè)計(jì)和開(kāi)發(fā),俄羅斯方塊游戲已經(jīng)成功。其功能基本符合用戶需求,能夠完成游戲的控制,方塊的變換以及消層等功能。并提供游戲設(shè)置,對(duì)于一些技術(shù)性比較過(guò)硬的玩家,可以調(diào)游戲級(jí)別、以及游戲速度,使得玩家能夠充分的發(fā)揮競(jìng)技游戲的特色,可以不斷的挑戰(zhàn)自我,挑戰(zhàn)極限。
4.1游戲設(shè)計(jì)中的不足之處
但是由于課程設(shè)計(jì)時(shí)間較短,所以該游戲還有許多不盡如人意的地方,比如方塊類(lèi)型太少,退出游戲不能存儲(chǔ)進(jìn)度等多方面問(wèn)題。這些都有待進(jìn)一步改善,我們?cè)谟螒蛑羞€可以更換背景音樂(lè),以適合不同的玩家,在每通過(guò)一關(guān)可以給玩家播放一段flash,吸引玩家去挑戰(zhàn)極限,不斷提高玩家的興趣,相信在以后的制作過(guò)程中我們將給大家?guī)?lái)一個(gè)更新功能更全面的游戲。
4.2VB與C語(yǔ)言之間的不同之處
我們這個(gè)小游戲也可以用C語(yǔ)言來(lái)實(shí)現(xiàn),在程序的編程上沒(méi)有VB語(yǔ)言方便實(shí)用,C語(yǔ)言和VB語(yǔ)言之間存在很多的共同點(diǎn),雖然語(yǔ)法方面有點(diǎn)差異,但是在編程思路上完全一樣,VB能夠?qū)崿F(xiàn)很多C#不能做到的功能,如When語(yǔ)句、Optional參數(shù)、局部Static變量、對(duì)象實(shí)例訪問(wèn)靜態(tài)方法、Handles綁定事件、On Error處理異常、Object直接后期綁定等等。VB和C#語(yǔ)言,編譯出來(lái)的是同樣的CIL,但為什么VB支持很多有趣的特性呢。我們一起來(lái)探究一下。
4.21局部靜態(tài)變量
VB支持用Static關(guān)鍵字聲明局部變量,這樣在過(guò)程結(jié)束的時(shí)候可以保持變量的數(shù)值:
Public Sub Test1()
Static i As Integer
i += 1 '實(shí)現(xiàn)一個(gè)過(guò)程調(diào)用計(jì)數(shù)器
End Sub
我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的過(guò)程計(jì)數(shù)器。每調(diào)用一次Test,計(jì)數(shù)器的數(shù)值就增加1。其實(shí)還有很多情況我們希望保持變量的數(shù)值。而C#的static是不能用在過(guò)程內(nèi)部的。因此要實(shí)現(xiàn)過(guò)程計(jì)數(shù)器,我們必須聲明一個(gè)類(lèi)級(jí)別的變量。這樣做明顯不如VB好。因?yàn)闊o(wú)法防止其他過(guò)程修改計(jì)數(shù)器變量。這就和對(duì)象封裝一個(gè)道理,本來(lái)應(yīng)該是一個(gè)方法的局部變量,現(xiàn)在我要被迫把它獨(dú)立出來(lái),顯然是不好的設(shè)計(jì)。那么VB是怎么生成局部靜態(tài)變量的呢?將上述代碼返匯編,我們可以清楚地看到在VB生成的CIL中,i不是作為局部變量,而是作為類(lèi)的Field出現(xiàn)的: .field private specialname int32 $STATIC$Test1$2001$i
也就是說(shuō),i被改名作為一個(gè)類(lèi)的字段,但被冠以specialname。在代碼中試圖訪問(wèn)$STATIC$Test1$2001$i是不可能的,因?yàn)樗皇且粋€(gè)有效的標(biāo)識(shí)符。但是在IL中,將這個(gè)變量加一的代碼卻與一般的類(lèi)字段完全一樣,是通過(guò)ldfld加載的。我覺(jué)得這個(gè)方法十分聰明,把靜態(tài)變量變成生命周期一樣的類(lèi)字段,但是又由編譯器來(lái)控制訪問(wèn)的權(quán)限,讓它成為一個(gè)局部變量。同時(shí)也解釋了VB為什么要用兩個(gè)不同的關(guān)鍵字來(lái)聲明靜態(tài)變量——Static和Shared。由于局部靜態(tài)變量的實(shí)質(zhì)是類(lèi)的字段,所以它和真正的局部變量還是有所不同的。比如在多線程條件下,對(duì)局部靜態(tài)變量的訪問(wèn)就和訪問(wèn)字段相同。
4.2.2Handles和WithEvents
VB除了可以用C#那樣的方法來(lái)處理事件響應(yīng)以外,還有從VB5繼承下來(lái)的獨(dú)特的事件處理方式——WithEvents。
我喜歡稱這種事件處理方式為靜態(tài)的事件處理,書(shū)寫(xiě)響應(yīng)事件的方法時(shí)就已經(jīng)決定該方法響應(yīng)的是哪一個(gè)事件,而C#則是在代碼中綁定事件的。VB中WithEvents靜態(tài)方法是非常有用的,它可以顯著增強(qiáng)代碼可讀性,同時(shí)也讓VB.net中的事件處理非常方便,不像C#那樣離開(kāi)了窗體設(shè)計(jì)器就必須手工綁定事件。
4.2.3類(lèi)型轉(zhuǎn)換運(yùn)算符
在Visual Basic 2005中將加入一個(gè)新的運(yùn)算符——TryCast,相當(dāng)于C#的as運(yùn)算符。我一直希望VB有這樣一個(gè)運(yùn)算符。VB目前的類(lèi)型轉(zhuǎn)換運(yùn)算符主要有CType和DirectCast。他們的用法幾乎一樣。我詳細(xì)比較了一下這兩個(gè)運(yùn)算符,得出以下結(jié)論:
1.在轉(zhuǎn)換成引用類(lèi)型時(shí),兩者沒(méi)有什么區(qū)別,都是直接調(diào)用castclass指令,除非重載了類(lèi)型轉(zhuǎn)換運(yùn)算符CType。DirectCast運(yùn)算符是不能重載的。
2.轉(zhuǎn)換成值類(lèi)型時(shí),CType會(huì)調(diào)用VB指定的類(lèi)型轉(zhuǎn)換函數(shù)(如果有的話),比如將String轉(zhuǎn)換為Int32時(shí),就會(huì)自動(dòng)調(diào)用。
4.2.4默認(rèn)屬性和屬性參數(shù)
在原先的VB6里,有一項(xiàng)奇特的功能——默認(rèn)屬性。在VB6中,對(duì)象的名稱可以直接表示該對(duì)象的默認(rèn)屬性。
4.2.5可選參數(shù)和按名傳遞
VB從4.0開(kāi)始支持“可選參數(shù)”這一特性。就是說(shuō),函數(shù)或子程序的參數(shù)有些是可選的,調(diào)用的時(shí)候可以不輸入。其實(shí)VB從1.0開(kāi)始就有一些函數(shù)帶有可選參數(shù),只不過(guò)到了4.0才讓用戶自己開(kāi)發(fā)這樣的過(guò)程。在VB4里,可選參數(shù)可以不帶默認(rèn)值,而在VB里,如果使用可選參數(shù),則必須帶有默認(rèn)值。在調(diào)用的時(shí)候,VB若發(fā)現(xiàn)參數(shù)被省略,則自動(dòng)讀取.param部分的默認(rèn)值,并顯式傳遞給過(guò)程。這一部分完全由編譯器處理,而且沒(méi)有任何性能損失,和手工傳遞所有參數(shù)是完全一樣的。至于按名傳遞,VB會(huì)自動(dòng)調(diào)整參數(shù)的順序,其結(jié)果與傳統(tǒng)方式的傳遞也沒(méi)有任何的不同。這說(shuō)明我們可以放心地使用這項(xiàng)便利。而且?guī)в锌蛇x參數(shù)的過(guò)程拿到C#中,頂多變成不可選參數(shù),也不會(huì)造成什么其他的麻煩。
PS.很多COM組件都使用了默認(rèn)參數(shù),而且有些過(guò)程的參數(shù)列表非常長(zhǎng),在VB里可以輕松地處理它們,而在C#中經(jīng)常讓開(kāi)發(fā)者傳參數(shù)傳到吐血。
4.2.6在經(jīng)過(guò)對(duì)比之后可得以下一個(gè)結(jié)論:
1.目前的主流編程語(yǔ)言沒(méi)有簡(jiǎn)單的,如果你想學(xué)精通的話。
2.VB的門(mén)檻比較低,編程思想較容易接受。
3.學(xué)習(xí)C不能短期內(nèi)見(jiàn)到成效。
4.據(jù)用戶調(diào)查69%的考生覺(jué)得VB更容易接受
致謝
在本次課程設(shè)計(jì)中,我從指導(dǎo)老師牛榮和李鵬身上學(xué)到了很多東西。老師認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我收益匪淺。他無(wú)論在理論上還是在實(shí)踐中,都給與我很大的幫助,使我得到不少的提高這對(duì)于我以后的工作和學(xué)習(xí)都有一種巨大的幫助,感謝他耐心的輔導(dǎo)。
另外,在游戲開(kāi)發(fā)過(guò)程中化希耀老師和杜義君老師也給于我們很大的幫助,幫助解決了不少的難點(diǎn),使得游戲能及時(shí)開(kāi)發(fā)完成,還有所有的同學(xué)同樣給與我不少幫助,這里一并表示感。
參考文獻(xiàn):
[1]Vsual Basic 程序設(shè)計(jì)教程 作者:龔沛曾,陸慰民,楊志強(qiáng) 高等教育出版社出版
[2]Vsual Basic 6.0程序設(shè)計(jì) 作者:劉新民,蔡瓊,白糠生 清華大學(xué)出版社出版
[3]80例上手 VB6 編程 作者:唐凱軍,湯惠莉 山東電子音像出版社
[4]Vsual Basic 實(shí)例教程 作者:盧毅 科學(xué)出版社出版
[5]Vsual Basic 經(jīng)典范例50講 作者:趙欣勝,亢慧娟,劉晟宏 科學(xué)出版社出版
習(xí)題一
答案在教材上找。
習(xí)題二
1.對(duì)象指現(xiàn)實(shí)世界中的實(shí)體。每個(gè)對(duì)象有自己的特征(屬性)、行為(方法)和發(fā)生在該對(duì)象上的活動(dòng)(事件)。
類(lèi)是對(duì)同一種對(duì)象的集合與抽象。類(lèi)包含所創(chuàng)建對(duì)象的屬性數(shù)據(jù),以及對(duì)這些數(shù)據(jù)進(jìn)行操作的方法。封裝和隱藏是類(lèi)的重要特性,將數(shù)據(jù)結(jié)構(gòu)和對(duì)數(shù)據(jù)的操作封裝在一起,類(lèi)的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)對(duì)用戶來(lái)說(shuō)是透明的。
VB工具箱中的可視圖標(biāo)是VB系統(tǒng)設(shè)計(jì)好的標(biāo)準(zhǔn)控件類(lèi)。通過(guò)將控件類(lèi)實(shí)例化,得到真正的控件對(duì)象。在窗體上畫(huà)一個(gè)控件,就將類(lèi)轉(zhuǎn)換為對(duì)象,創(chuàng)建了一個(gè)控件對(duì)象。
VB中常用的對(duì)象是控件。此外,VB還提供了系統(tǒng)對(duì)象。窗體是個(gè)特例,它既是類(lèi)也是對(duì)象。當(dāng)向一個(gè)工程添加一個(gè)新窗體時(shí),實(shí)質(zhì)就由窗體類(lèi)創(chuàng)建了一個(gè)窗體對(duì)象。
對(duì)象的三要素:屬性、事件和方法。
屬性:存放對(duì)象的數(shù)據(jù)(決定對(duì)象外觀及功能)對(duì)象屬性的設(shè)置方法:在設(shè)計(jì)階段,利用屬性窗口直接設(shè)置屬性值;程序運(yùn)行時(shí),通過(guò)語(yǔ)句[對(duì)象名.]屬性名=屬性值。若屬性只能在設(shè)計(jì)階段設(shè)置,在程序運(yùn)行階段不可改變,稱為只讀屬性。
事件:發(fā)生在對(duì)象上的事情。同一事件,對(duì)不同的對(duì)象,會(huì)引發(fā)不同的反應(yīng)。
事件過(guò)程:應(yīng)用程序處理事件的步驟。應(yīng)用程序設(shè)計(jì)的主要工作就是為對(duì)象編寫(xiě)事件過(guò)程的代碼。
方法:面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,為程序設(shè)計(jì)人員提供了一種特殊的過(guò)程和函數(shù)。方法是面向?qū)ο蟮模{(diào)用時(shí)一定要指明對(duì)象。
2.窗體和控件具有的基本屬性“
(1) Name屬性:名稱
所創(chuàng)建的對(duì)象名稱,在程序中引用。
(2) Caption屬性:標(biāo)題
該屬性決定了對(duì)象上顯示的內(nèi)容。
(3) Height、Width、Top和Left屬性
決定對(duì)象的大小和位置。
(4) Enabled 屬性:對(duì)象是否允許操作
(5) Visible 屬性:對(duì)象是否可見(jiàn)
(6) Font 屬性組:文本的外觀
FontName字體、FontSize大小
FontBold粗體、FontItalic斜體
FontStrikethru 刪除線
FontUnderline 下劃線
(7) ForeColor屬性:前景顏色
(8) BackColor屬性:背景顏色
(9) MousePointer屬性:鼠標(biāo)指針類(lèi)型, 設(shè)置值范圍0~15,由系統(tǒng)指定 。若為99,由用戶提供的圖形文件定義鼠標(biāo)指針形狀。
(10) MouseIcon屬性:在MousePointer屬性值為99時(shí),存放自定義的鼠標(biāo)圖標(biāo)文件(.ico或.cur)。圖標(biāo)庫(kù)在Graphics目錄下。
3.窗體的事件:Load事件是在窗體被裝入工作區(qū)時(shí)觸發(fā)的事件。當(dāng)應(yīng)用程序啟動(dòng),自動(dòng)執(zhí)行該事件,該事件通常用來(lái)在啟動(dòng)應(yīng)用程序時(shí)對(duì)屬性和變量進(jìn)行初始化。
窗體的方法:(1)Print方法
用來(lái)顯示文本內(nèi)容,格式:[對(duì)象.]print 表達(dá)式
(2)Cls方法
清除運(yùn)行時(shí)在窗體或圖形框中產(chǎn)生的文本或圖形, Cls方法不能清除窗體在設(shè)計(jì)時(shí)的文本和圖形。
格式:[對(duì)象.]cls
(3)Move方法
可移動(dòng)窗體或控件,并可改變其大小。
語(yǔ)法格式如下:
[對(duì)象.]Move 左邊距離[,上邊距離[,寬度[,高度]]]
4.標(biāo)簽作用:用于顯示文本(輸出)信息,不能作為輸入信息的界面。其內(nèi)容只能通過(guò)Caption屬性設(shè)置或修改,不能直接編輯。
5.文本框是一個(gè)文本編輯區(qū)域,可以在該區(qū)域輸入、編輯、修改和顯示正文內(nèi)容。在VB中字符長(zhǎng)度以字為單位,也就是一個(gè)西文字符與一個(gè)漢字都是一個(gè)字,長(zhǎng)度為1。
重要屬性(1) Text 顯示或輸入的正文內(nèi)容。
(2) Maxlength 設(shè)置文本框可輸入的文字最大長(zhǎng)度。默認(rèn)值為0,表示可以輸入任意長(zhǎng)字符串。
(3) MultiLine 多行屬性
設(shè)置為T(mén)rue時(shí),文本框可以輸入或顯示多行正文,同時(shí)具有文字處理器的自動(dòng)換行功能,按Enter鍵可插入一空行。
(4) ScrollBars 滾動(dòng)條屬性
0-None 無(wú)滾動(dòng)條
1-Horizontal 水平滾動(dòng)條
2-Vertical 垂直滾動(dòng)條
3-Both 同時(shí)加水平和垂直滾動(dòng)條
注意:當(dāng)MultiLine為T(mén)rue時(shí),ScrollBars才有效
(5) PassWordChar 設(shè)置顯示文本的替代符。例如,當(dāng)設(shè)置為“*”,則在文本框輸入的內(nèi)容均以“*”顯示,而存儲(chǔ)的值是用戶輸入的原文。一般用于設(shè)置口令的輸入。
當(dāng)MultiLine為T(mén)rue時(shí),該屬性不起作用,密碼不允許多行。
(6) Locked 指定文本控件是否可被編輯,默認(rèn)值為False(可編輯),當(dāng)設(shè)置為T(mén)rue時(shí),文本控件相當(dāng)于標(biāo)簽控件的作用。
注意:Locked與Enabled的區(qū)別。
(7)文本內(nèi)容進(jìn)行選擇操作的三個(gè)屬性
SelStart 選定的正文開(kāi)始位置
SelLength 選定的正文長(zhǎng)度
SelText 選定的正文內(nèi)容
這3個(gè)屬性互相關(guān)聯(lián),例如設(shè)置SelStart、SelLength后,SelText 自動(dòng)存放指定的文本。
注意:屬性窗口中沒(méi)有這三個(gè)屬性,只能在程序代碼中使用。
6.文本框的事件:(1) Change事件:當(dāng)Text屬性值發(fā)生改變時(shí)引發(fā)該事件
(2) KeyPress事件:按下并且釋放鍵盤(pán)上的一個(gè)鍵時(shí),引發(fā)焦點(diǎn)所在控件的KeyPress事件,所按鍵的值存放在參數(shù)KeyAscii中。對(duì)回車(chē)的判斷 KeyAscii=13
7.文本框最有用的方法是SetFocus,把光標(biāo)移到指定的文本框中。
8.命令按鈕 Picture屬性:按鈕可顯示圖片文件(.bmp和.Ico),當(dāng)Style為1時(shí)有效。
10. 啟動(dòng)窗體時(shí)將命令按鈕定位在窗體中央的代碼
Private Sub Form_Load()
Command1.Left = Form1.ScaleWidth / 2 - Command1.Width / 2
Command1.Top = Form1.ScaleHeight / 2 - Command1.Height / 2
End Sub
11.vb圖片文件在 C:\Program Files\Microsoft Visual Studio\Common\Graphics 文件夾。
安裝VB時(shí)可選擇是否安裝這些圖片文件。
習(xí)題三
1. 合法常量:
(1) Double
(2) 錯(cuò)誤
(3) Double
(4) Double
(5) 錯(cuò)誤
(6) Integer
(7) String
(8) String
(9) Date
(10) Double
(11) 錯(cuò)誤(漢字字符)
(12)Integer(八進(jìn)制)
(13) 錯(cuò)誤(八進(jìn)制無(wú)數(shù)碼8)
(14) Integer
(15) Boolean
(16) 錯(cuò)誤
(17) 錯(cuò)誤(十六進(jìn)制無(wú)數(shù)碼g)
(18) Single
說(shuō)明:浮點(diǎn)型變量默認(rèn)為Double類(lèi)型而非Single。
2. 合法變量名:
(1) √
(2) √
(3) 誤:數(shù)字開(kāi)頭
(4) 誤:含空格
(5) 誤:關(guān)鍵字
(6) √
(7) 誤:關(guān)鍵字
(8) 誤:有括號(hào)
(9) √
(10) √
(11) √
(12) √(漢字字符可作為變量名,但不常用,且此名稱易誤解)
變量命名規(guī)則見(jiàn)P.41-42。
字母(漢字)開(kāi)頭,字母(漢字)、數(shù)字、下劃線組成,長(zhǎng)度為1-255個(gè)字符;關(guān)鍵字不可作為變量名,但可在變量名中嵌入關(guān)鍵字;不區(qū)分大小寫(xiě)。
常量、數(shù)組、類(lèi)型、函數(shù)、過(guò)程、對(duì)象命名規(guī)則與此相同。常量名通常全用大寫(xiě)。
3. 寫(xiě)VB表達(dá)式
(1) Abs(x + y) + z ^ 5
(2) (1 + x * y) ^ 6
(3) (10 * x + Sqr(3 * y)) / (x * y)
(4) (-b + Sqr(b ^ 2 - 4 * a * c)) / (2 * a)
(5) 1 / (1 / r1 + 1 / r2 + 1 / r3)
(6) Sin(45 * 3.14159 / 180) + (Exp(10) + Log(10)) / Sqr(x + y + 1)
4. 根據(jù)條件寫(xiě)表達(dá)式
(1) 隨機(jī)產(chǎn)生大寫(xiě)字母 Chr(Int(Rnd * (Asc("L") - Asc("C") + 1) + Asc("C")))
(2) [100,200]內(nèi)的隨機(jī)數(shù) Int(Rnd * 101) + 100
(3) 點(diǎn)(x,y)位于第一或第三象限 x 0 And y 0 Or x 0 And y 0 或 x * y 0
(4) x是5或7的整數(shù)倍 x Mod 5 = 0 Or Int(x / 7) = x / 7
(5) 將兩位整數(shù)x的個(gè)位與十位對(duì)換 x \ 10 + (x Mod 10) * 10
(6) 四舍五入取兩位小數(shù) Round(x, 2)
(7) 字符變量C是字母字符(不區(qū)分大小寫(xiě))——準(zhǔn)確地說(shuō)是:字符變量C的第一個(gè)字符是字母
C = "A" And C = "Z" Or C = "a" And C "z"
或 UCase(C) = "A" And UCase(C) = "Z"
或 LCase(C) = "a" And LCase(C) = "z"
(8) 字符變量S第5個(gè)字符起取6個(gè)字符 Mid(S, 5, 6)
(9) 10≤x<20 10 = x And x 20
(10) x,y至少有一個(gè)小于z x z Or y z
(11)x,y都大于z x z And y z
5. 寫(xiě)表達(dá)式的值
(1) 188 ——注意運(yùn)算的優(yōu)先級(jí)順序,以及整除運(yùn)算“\”的計(jì)算
(2) 200100 —— 計(jì)算100 + "100"時(shí),由于兩個(gè)操作數(shù)類(lèi)型不同,在可能的情況下自動(dòng)采用精度較高的類(lèi)型,即把字符型轉(zhuǎn)換為數(shù)值型,100 +100 得到200;然后進(jìn)行字符串連接運(yùn)算200 100 ,再自動(dòng)將兩個(gè)數(shù)值轉(zhuǎn)換為字符串,得200100。
(3) 68.56 ——在四舍五入函數(shù)產(chǎn)生之前,這就是四舍五入的計(jì)算方法
(4) 876554 ——先進(jìn)行字符串的“+”運(yùn)算,再轉(zhuǎn)換成數(shù)值。在變量名和函數(shù)名后可加上類(lèi)型符,以強(qiáng)調(diào)其類(lèi)型,但不是必須的。
(5) 2000-2-29
(6) 6
6.Shell函數(shù)調(diào)用
i = Shell("mspaint.exe", 1) '啟動(dòng)畫(huà)圖
i = Shell("C:\Program Files\Microsoft Office\OFFICE11\winword.exe", 1) '啟動(dòng)Word
說(shuō)明:“畫(huà)圖”是Windows本身提供的程序,可以省略路徑。
8. 答:?jiǎn)尉雀↑c(diǎn)型
第7,9題答案在教材中找。
習(xí)題四
第1,3,5,8題答案在教材中找。
2. 賦值語(yǔ)句的錯(cuò)誤
(1)10x 不能做變量名。
上機(jī)驗(yàn)證結(jié)果:VB將10識(shí)別為行號(hào),x = Sin(x) + y是為變量x賦值。故無(wú)語(yǔ)法錯(cuò)誤。
(2)Sqr函數(shù)的參數(shù)為負(fù)數(shù)。
上機(jī)驗(yàn)證結(jié)果:“無(wú)效的過(guò)程調(diào)用或參數(shù)”
(3)賦值號(hào)左邊不是變量名。
上機(jī)驗(yàn)證結(jié)果:“缺少子程序、函數(shù)或?qū)傩浴?/p>
(4)除數(shù)為0
上機(jī)驗(yàn)證結(jié)果:“溢出”。
4. [答案略]
說(shuō)明:小數(shù)位可以使用四舍五入函數(shù)Round或輸出格式函數(shù)Format。例如Round(x, 2)和Format(x, “0.00”)均可使結(jié)果只保留兩位小數(shù)。但如果四舍五入后要進(jìn)行數(shù)值運(yùn)算,則使用Round函數(shù),例如z=Round(x,2)+Round(y,2)。而Format函數(shù)通常只用于輸出格式設(shè)置。
6.指出錯(cuò)誤
(1)“≥”應(yīng)改為“=”,前者是中文字符,不具有運(yùn)算功能。
(2)“10x20”應(yīng)改為“10x And x20”,否則運(yùn)行結(jié)果錯(cuò)誤。
7.寫(xiě)條件語(yǔ)句
(1)
Dim c As String
c = InputBox("c=")
If Mid(c, 3, 1) = "C" Then
MsgBox "Yes"
Else
MsgBox "No"
End If
(2)
# 使用If語(yǔ)句
Dim x As Single, y As Single
x = Val(InputBox("x="))
If x 20 Then
y = x ^ 2 + 3 * x + 2
ElseIf x = 10 Then
y = Sqr(3 * x) - 2
ElseIf x 0 Then
y = 1 / x + Abs(x)
End If
Print "y="; y
# 使用Select Case語(yǔ)句
Dim x As Single, y As Single
x = Val(InputBox("x="))
Select Case x
Case Is 20
y = x ^ 2 + 3 * x + 2
Case Is = 10
y = Sqr(3 * x) - 2
Case Is 0
y = 1 / x + Abs(x)
End Select
Print "y="; y
(3)
# 使用If語(yǔ)句
Dim x As Single, y As Single, z As Single, Max As Single
x = Val(InputBox("x="))
y = Val(InputBox("y="))
z = Val(InputBox("z="))
Max = x
If y Max Then Max = y
If z Max Then Max = z
Print "Max="; Max
# 使用IIF函數(shù)
x = Val(InputBox("x="))
y = Val(InputBox("y="))
z = Val(InputBox("z="))
Max = IIf(x y, x, y)
Max = IIf(z Max, z, Max)
Print "Max="; Max
9. 計(jì)算循環(huán)次數(shù)
(1) 6
(2)19
(3)0
(4)死循環(huán)直至溢出
10. 40號(hào)語(yǔ)句執(zhí)行 4次;第50 號(hào)語(yǔ)句執(zhí)行12次;
執(zhí)行第90號(hào)語(yǔ)句輸出的結(jié)果是: 13,0,2
說(shuō)明:該程序?yàn)榍短籽h(huán),其中外循環(huán)由j值變化(1,4,7,10)控制執(zhí)行4次,當(dāng)j值為13時(shí)結(jié)束循環(huán);內(nèi)循環(huán)由k值變化(6,4,2)控制執(zhí)行3次,當(dāng)k值為0時(shí)結(jié)束循環(huán)。第40 行是外循環(huán)的循環(huán)體,故執(zhí)行4次;第50 行是內(nèi)循環(huán)的循環(huán)體,故執(zhí)行4*3=12次。
11. 可以定一個(gè)較大的循環(huán)次數(shù),在循環(huán)體中根據(jù)條件用Exit For退出。
但這種情況通常用Do While循環(huán)控制。
12. 編程(并非唯一正確答案)
(1)
Dim i As Integer, s As Integer
For i = 1 To 10
s = s + (i + 1) * (2 * i + 1)
Next i
Print "s="; s
(2)
Dim i As Integer, n3 As Integer, n7 As Integer
For i = 1 To 100
If i Mod 3 = 0 Then n3 = n3 + 1
If Int(i / 7) = i / 7 Then n7 = n7 + 1
Next i
Print "1-100中3的倍數(shù)有"; n3; "個(gè)"
Print "1-100中7的倍數(shù)有"; n7; "個(gè)"
(3)
Dim s1 As String, s2 As String, i As Integer
s1 = InputBox("Input String")
s2 = ""
For i = 1 To Len(s1)
s2 = Mid(s1, i, 1) + s2
Next i
Print "原序:"; s1
Print "反序:"; s2
或
For i = Len(s1) To 1 Step -1
s2 = s2 + Mid(s1, i, 1)
Next i
13. 輸出字符串“10100”。該程序功能是將十進(jìn)制數(shù)轉(zhuǎn)化為二進(jìn)制。
說(shuō)明:要理解該程序需要了解數(shù)制轉(zhuǎn)換的計(jì)算方法(有興趣者參看百度百科)。48是字符"0"的ASCII碼。
14. 運(yùn)行時(shí)輸出 22 484
該程序功能是求x和y最大公約數(shù)和最小公倍數(shù)。
說(shuō)明:此算法稱為“輾轉(zhuǎn)相減法”??蓪?duì)照例4.17的輾轉(zhuǎn)相除(輾轉(zhuǎn)求余)法。
15.[50,100]間的20個(gè)隨機(jī)數(shù),求最大值、最小值、平均值。
Dim x As Integer, sum As Integer, aver As Single
Dim n%, i%, max%, min%
Randomize
max = 50: min = 100: n = 20
For i = 1 To n
x = Int(Rnd * 51 + 50)
List1.AddItem x
sum = sum + x
If x max Then max = x
If x min Then min = x
Next i
aver = sum / n
Print "最大值:"; max, "最小值:"; min, "平均值:"; aver
習(xí)題五
1. 指定數(shù)組的默認(rèn)下界 Option Base 1
2.合理的數(shù)組聲明
(1)錯(cuò)。定義數(shù)組不可用變量(教材99頁(yè))。
(2)正確。該數(shù)組下標(biāo)為0-11。
(3)錯(cuò)。VB中數(shù)組下標(biāo)用圓括號(hào)。
(4)正確。三維數(shù)組三個(gè)下標(biāo)分別為0-1,0-1,0-2,共12個(gè)元素。
(5)錯(cuò)誤。非動(dòng)態(tài)數(shù)組,不可重定義。
(6)錯(cuò)誤。動(dòng)態(tài)數(shù)組重定義時(shí)不可改變數(shù)據(jù)類(lèi)型。
(7)正確。二維數(shù)組兩個(gè)下標(biāo)分別為0-2,0-3,共12個(gè)元素。
(8)語(yǔ)法錯(cuò)誤,二維數(shù)組定義中漏寫(xiě)逗號(hào)——可能是印刷錯(cuò)誤,加上此逗號(hào)則正確。
3.當(dāng)引用數(shù)組元素時(shí)下標(biāo)值小于定義的最小下標(biāo),或大于最大下標(biāo)時(shí),會(huì)發(fā)生“下標(biāo)越界”錯(cuò)誤。
4.?dāng)?shù)組名:a ;數(shù)組類(lèi)型:Single(單精度浮點(diǎn)型);維數(shù):二維;
各維的上下界:第一維下界(最小下標(biāo))為 -1,上界(最大下標(biāo))為2,
第二維下界(最小下標(biāo))為 0,上界(最大下標(biāo))為3;
數(shù)組的大小:4行4列共16個(gè)元素
以矩陣的格式輸出二維數(shù)組:
For i = -1 To 2
For j = 0 To 3
Print a(i, j);
Next j
Next i
或?qū)懗筛油ㄓ玫拇a形式:
For i = LBound(a, 1) To UBound(a, 1)
For j = LBound(a, 2) To UBound(a, 2)
Print Tab(j * 8); a(i, j);
Next j
Next i
6.一維字符數(shù)組
Dim a(1 To 20) As String
Private Sub Command1_Click() '(1)隨機(jī)產(chǎn)生字符串
Dim i As Integer, j As Integer, n As Integer, c As String * 1
Randomize
For i = 1 To 20
a(i) = "" '將第i個(gè)元素清空
n = Int(Rnd * 10 + 1) '產(chǎn)生[1,10]的隨機(jī)數(shù)
For j = 1 To n 'a(i)中有n個(gè)字符
c = Chr(Int(Rnd * 26 + 97)) '隨機(jī)產(chǎn)生字母97是字母a的ASCII碼
a(i) = a(i) + c
Next j
Next i
End Sub
Private Sub Command2_Click() '(2)輸出字符串
Dim i As Integer
For i = 1 To 20
Print Tab(((i - 1) Mod 5) * 11); a(i);
If i Mod 5 = 0 Then Print
Next i
End Sub
Private Sub Command3_Click() '(3)最長(zhǎng)的字符串
Dim i As Integer, imax As Integer
imax = 1
For i = 2 To 20
If Len(a(i)) Len(a(imax)) Then
imax = i
End If
Next i
Print "最長(zhǎng)的字符串:"; a(imax)
End Sub
第7,8題答案在教材中找。
第9題“自定義變量”含義不明,暫時(shí)無(wú)法回答。
第5,10 題 [暫略]
習(xí)題六
第1,2,6-8題答案可在教材中找到。
3.指出過(guò)程說(shuō)明中的錯(cuò)誤
(1)Sub子過(guò)程不應(yīng)該定義類(lèi)型
(2)函數(shù)與形式參數(shù)不應(yīng)該同名
(3)數(shù)組作為形式參數(shù)時(shí),應(yīng)使用傳地址方式,不可使用傳值(ByVal)
(4)形式參數(shù)應(yīng)該是變量或數(shù)組名,不可以是一個(gè)數(shù)組元素
4.指出調(diào)用過(guò)程語(yǔ)句的錯(cuò)誤
(1)無(wú)語(yǔ)法錯(cuò)誤,但因形參sum所對(duì)應(yīng)的實(shí)參是常量3,故計(jì)算結(jié)果無(wú)法傳遞給主調(diào)程序。
(2)實(shí)參變量c與形參sum的類(lèi)型不一致。
(3)類(lèi)似于(1),形參sum所對(duì)應(yīng)的實(shí)參是表達(dá)式a+b,故計(jì)算結(jié)果無(wú)法傳遞給主調(diào)程序。
(4)類(lèi)似于(1)和(2),形參sum所對(duì)應(yīng)的實(shí)參是表達(dá)式Sqr(c),故計(jì)算結(jié)果無(wú)法傳遞給主調(diào)程序。另外srq(a)存在語(yǔ)法錯(cuò)誤(拼寫(xiě)錯(cuò))。
(5)與(2)相同,實(shí)參c與形參sum的類(lèi)型不一致。
5.迭代法求平方根
(1)自定義函數(shù)的定義及調(diào)用
Function FSqr1(a As Single) As Single
Dim x0 As Single, x As Single
x = a
Do
x0 = x
x = (x0 + a / x0) / 2
Loop While Abs(x - x0) 0.00001
FSqr1 = x
End Function
Private Sub Command1_Click()
Dim x!, y!
x = Val(InputBox("x="))
If x = 0 Then
y = FSqr1(x)
Print y
End If
End Sub
(2)自定義子過(guò)程的定義及調(diào)用
Sub FSqr2(a As Single, x As Single)
Dim x0 As Single
x = a
Do
x0 = x
x = (x0 + a / x0) / 2
Loop While Abs(x - x0) 0.00001
End Sub
Private Sub Command2_Click()
Dim x!, y!
x = Val(InputBox("x="))
If x = 0 Then
Call FSqr2(x, y)
Print y
End If
End Sub
(3)遞歸函數(shù)及調(diào)用 [略]
習(xí)題七
第1-9題,答案在教材上找;第10,12-14題,略。
11.檢測(cè)Ctrl和F3同時(shí)按下的代碼:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If Shift = 2 And KeyCode = 114 Then MsgBox "HAHA"
End Sub
習(xí)題八
第1,2,6,7,9題答案可閱讀教材找到。
3.寫(xiě)Open語(yǔ)句
(1) Open "Seqnew.dat" For Output As #1 '重寫(xiě)
或 Open "Seqnew.dat" For Append As #1 '添加
(2)Open "Seqold.dat" For Input As #2
(3)Open "Seqappend.dat" For Append As FreeFile
4.編程,將文件Text.dat 讀入變量strTest。
Dim strTest As String
Open "Text.dat" For Input As #2
Do While Not EOF(2)
strTest = strTest + Input(1, #2)
Loop
8.本課程不涉及二進(jìn)制文件。故此處以順序文件讀寫(xiě)方式編程。另外合并的結(jié)果可以是合并到其中某一個(gè)文件,也可以是合并到一個(gè)新的文件,此處代碼是合并到其中一個(gè)文件F1.txt。
'方法一,在2號(hào)文件一次讀一個(gè)字符并寫(xiě)入1號(hào)文件
Dim strTemp As String * 1
Open "d:\F1.txt" For Append As #1
Open "d:\F2.txt" For Input As #2
Do While Not EOF(2)
strTemp = Input(1, #2)
Print #1, strTemp; '注意結(jié)尾有分號(hào),否則每個(gè)字符一行
Loop
Close
'方法二,在2號(hào)文件一次讀一個(gè)字符并累加,最后將累加結(jié)果寫(xiě)入1號(hào)文件
Dim strTemp As String '注意方法一變量定義的區(qū)別
Open "d:\F1.txt" For Append As #1
Open "d:\F2.txt" For Input As #2
strTemp = ""
Do While Not EOF(2)
strTemp = strTemp + Input(1, #2)
Loop
Print #1, strTemp
Close
習(xí)題九
答案在教材上找。
習(xí)題十
答案在教材上找
Wrox紅皮的《Visual Basic 2010 入門(mén)經(jīng)典》還是不錯(cuò)的,畢竟是比較權(quán)威的書(shū)。不過(guò)這個(gè)還是要靠興趣和編程量的。我覺(jué)得作為教材的書(shū)基礎(chǔ)一點(diǎn)就可以了,有深度的可以作為課下資料或者上網(wǎng)查。個(gè)人覺(jué)得多編一些實(shí)際一點(diǎn)的有意思的程序比較好吧
你以前若是 一點(diǎn)都沒(méi)學(xué)過(guò),確實(shí)有困難,有很多名詞是你以前沒(méi)有見(jiàn)過(guò)的。
有困難的時(shí)候必須有人解答才行?。。?/p>
想系統(tǒng)學(xué)習(xí)編程(高深),那就去學(xué)習(xí)C
若只是編寫(xiě)一些小程序,那就去學(xué)VB
現(xiàn)在所用到中小型應(yīng)用程序,VB編寫(xiě)的占多數(shù)!!
WOrd字處理軟件就是用VB編的 系統(tǒng)是用C編寫(xiě)的
VB程序設(shè)計(jì)簡(jiǎn)明教程 高等教育出版社
這本書(shū)編寫(xiě)的相當(dāng)好!?。?!
Visual Basic程序設(shè)計(jì)簡(jiǎn)明教程(第二版)
ISBN:7-04-011549,P334
龔沛曾等,已出版,定價(jià):25.60元
本書(shū)是為將Visual Basic作為程序設(shè)計(jì)第一語(yǔ)言課程的學(xué)校編寫(xiě)的。在第一版的基礎(chǔ)上,本書(shū)針對(duì)初學(xué)者的特點(diǎn),在內(nèi)容編排、敘述嚴(yán)謹(jǐn)、實(shí)驗(yàn)題選擇等方面做了進(jìn)一步修改,力圖便于教與學(xué)。
本書(shū)分為教學(xué)篇和實(shí)驗(yàn)篇。教學(xué)篇從兩個(gè)方面即程序設(shè)計(jì)語(yǔ)言和可視化界面設(shè)計(jì)進(jìn)行介紹,重點(diǎn)在第一方面。對(duì)程序設(shè)計(jì)的基本知識(shí)、基本語(yǔ)法、編程方法和常用算法進(jìn)行了較為系統(tǒng)、詳細(xì)的介紹,讓學(xué)生學(xué)會(huì)分析問(wèn)題、掌握簡(jiǎn)單問(wèn)題編程的能力;而可視化界面設(shè)計(jì)是實(shí)際應(yīng)用當(dāng)中不可缺少的。本書(shū)將兩者有機(jī)地結(jié)合,既可提高學(xué)生學(xué)習(xí)積極性又可提高編程效率和教學(xué)效果,真正達(dá)到學(xué)以致用的目的。
實(shí)驗(yàn)篇根據(jù)教學(xué)篇的布局,安排了相應(yīng)的十一個(gè)實(shí)驗(yàn),每個(gè)實(shí)驗(yàn)有若干個(gè)題目。根據(jù)教學(xué)規(guī)律和讀者的建議,凡奇數(shù)號(hào)的實(shí)驗(yàn)給出了解答,偶數(shù)號(hào)實(shí)驗(yàn)答案則在配套的《Visual Basic實(shí)驗(yàn)指導(dǎo)與測(cè)試》(第二版)一書(shū)中給出,以培養(yǎng)學(xué)生獨(dú)立解題的能力。返回
作者介紹:
龔沛曾(GONG PEIZENG),女,1953年8月生,1969年1月參加工作,1982年1月畢業(yè)于華東理工大學(xué)。現(xiàn)任同濟(jì)大學(xué)計(jì)算機(jī)系教授,基礎(chǔ)學(xué)科組主任,全國(guó)高校計(jì)算機(jī)教育研究會(huì)常務(wù)理事,上海市計(jì)算機(jī)基礎(chǔ)教育協(xié)會(huì)秘書(shū)長(zhǎng)。
長(zhǎng)期從事計(jì)算機(jī)基礎(chǔ)教學(xué)和科研工作。主講《高級(jí)程序設(shè)計(jì)語(yǔ)言(C、VB、FORTRAN、PASCAL、COBOL)》、《計(jì)算機(jī)文化》、《實(shí)用軟件技術(shù)》、《數(shù)據(jù)結(jié)構(gòu)》、《Web技術(shù)》等課程。研究方向計(jì)算機(jī)輔助教育。
主編教材10余本、發(fā)表論文20余篇。主要教材有:《計(jì)算機(jī)文化基礎(chǔ)》、《Visual Basic程序設(shè)計(jì)教程》、《Visual Basic計(jì)算機(jī)繪圖》、《C語(yǔ)言程序設(shè)計(jì)》等系列教材;發(fā)表的主要論文有:"通用學(xué)分制智能教務(wù)管理系統(tǒng)的研究與實(shí)踐"、"研究集教學(xué)、實(shí)驗(yàn)、考試于一體化的CAI課件的有效途徑"、"多媒體CAI課件開(kāi)發(fā)的技術(shù)和方法"等。承擔(dān)了教育部《基于網(wǎng)絡(luò)環(huán)境的計(jì)算機(jī)基礎(chǔ)教學(xué)改革與實(shí)踐》等教改項(xiàng)目。
主要成果有:負(fù)責(zé)的《面向21世紀(jì)計(jì)算機(jī)基礎(chǔ)教學(xué)改革與實(shí)踐》項(xiàng)目2001年獲國(guó)家級(jí)教學(xué)成果二等獎(jiǎng)、上海市教學(xué)成果一等獎(jiǎng);主編的《計(jì)算機(jī)文化基礎(chǔ)》、《Visual Basic程序設(shè)計(jì)教程》教材2000年分別獲上海市優(yōu)秀教材二、三等獎(jiǎng),其中《計(jì)算機(jī)文化基礎(chǔ)》教材列入國(guó)家十五規(guī)劃教材,《Visual Basic程序設(shè)計(jì)教程》列入教育部面向21世紀(jì)教材;參加的國(guó)家七?五攻關(guān)項(xiàng)目"城市環(huán)境噪聲防治系統(tǒng)"1992年獲上海市科技進(jìn)步三等獎(jiǎng);承擔(dān)的《通用學(xué)分制智能智能教務(wù)管理系統(tǒng)》、《計(jì)算機(jī)文化CAI課件》兩項(xiàng)目1997年分別獲教育部、全國(guó)工科協(xié)作組優(yōu)秀CAI軟件三等獎(jiǎng)。返回
專家書(shū)評(píng):
探索 創(chuàng)新 實(shí)用--評(píng)《Visual Basic程序設(shè)計(jì)簡(jiǎn)明教程》
同濟(jì)大學(xué) 吳啟迪
由龔沛曾編著的《Visual Basic程序設(shè)計(jì)簡(jiǎn)明教程》已由高等教育出版社出版。從一些使用高校反饋的信息看,這是一本適用于計(jì)算機(jī)第二層次教學(xué)的優(yōu)秀教材,它有以下特色。
一、 體現(xiàn)時(shí)代特征,選材超前
教育部關(guān)于計(jì)算機(jī)基礎(chǔ)教育三個(gè)層次的課程體系中的第一層次--計(jì)算機(jī)文化教育的重要性,已成為廣大教育工作者的共識(shí)。探索改革第二層次中程序設(shè)計(jì)語(yǔ)言課程教學(xué),體現(xiàn)21世紀(jì)的時(shí)代特征,是深入教育改革的研究?jī)?nèi)容。為此,作者提出了將傳統(tǒng)的程序設(shè)計(jì)語(yǔ)言教學(xué)轉(zhuǎn)向反映21世紀(jì)潮流的面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù),并以VB為環(huán)境進(jìn)行實(shí)施。VB不僅具有面向?qū)ο?、可視化、事件?qū)動(dòng)等特點(diǎn),而且繼承了 Basic簡(jiǎn)單易學(xué)的優(yōu)點(diǎn),尤其適合于非計(jì)算機(jī)專業(yè)學(xué)生的學(xué)習(xí)。教材的出版對(duì)探索和推廣面向21世紀(jì)的程序設(shè)計(jì)語(yǔ)言教學(xué)改革有著重要的意義。
二、 結(jié)構(gòu)合理,層次清楚,適用性強(qiáng)
該書(shū)兼顧到讀者的不同程度,從打好基礎(chǔ)和培養(yǎng)學(xué)生應(yīng)用計(jì)算機(jī)的能力角度出發(fā),分為基礎(chǔ)篇、提高篇和實(shí)驗(yàn)篇。 基礎(chǔ)篇分為8章。針對(duì)程序設(shè)計(jì)的初學(xué)者,注重VB的基礎(chǔ)知識(shí)。對(duì)VB的程序設(shè)計(jì)語(yǔ)言基礎(chǔ)做了較詳細(xì)的介紹,列舉了一般程序設(shè)計(jì)語(yǔ)言教學(xué)中必須掌握的常用算法,同時(shí)介紹了VB的控件、菜單、文件、圖形設(shè)計(jì)等。此篇可作為大學(xué)生的程序設(shè)計(jì)語(yǔ)言的必修課教學(xué)內(nèi)容。
提高篇分四章。對(duì)已掌握了程序設(shè)計(jì)的學(xué)生,注重VB與當(dāng)前新技術(shù)應(yīng)用的結(jié)合,包括與數(shù)據(jù)庫(kù)、OLE、API函數(shù)、WEB等相結(jié)合,這些可作為選修課或自學(xué)內(nèi)容。
實(shí)驗(yàn)篇提供了15個(gè)單元的實(shí)驗(yàn)和自我測(cè)試題。通過(guò)針對(duì)性的上機(jī)實(shí)踐,使讀者掌握程序設(shè)計(jì)與調(diào)試的方法,提高動(dòng)手能力,鞏固所學(xué)的知識(shí)。
三、 兩個(gè)結(jié)合,注重應(yīng)用
教材始終貫穿了兩個(gè)結(jié)合,即將面向?qū)ο蟪绦蛟O(shè)計(jì)方法和結(jié)構(gòu)化程序設(shè)計(jì)方法有機(jī)結(jié)合,計(jì)算機(jī)文化基礎(chǔ)和計(jì)算機(jī)技術(shù)基礎(chǔ)兩個(gè)層次有機(jī)結(jié)合。
面向?qū)ο蟮某绦蛟O(shè)計(jì)方法還是要以結(jié)構(gòu)化程序設(shè)計(jì)為基礎(chǔ)。因此,該書(shū)與其他同類(lèi)VB教材不同之處在于加強(qiáng)了結(jié)構(gòu)化程序設(shè)計(jì)和常用算法的訓(xùn)練,并與VB中的對(duì)象屬性和方法相聯(lián)系,使讀者既掌握了程序設(shè)計(jì)的基本方法,更加深了對(duì)面向?qū)ο蟾拍畹睦斫?。例如,在分析?shù)組排序算法的同時(shí),也介紹了利用VB列表框的SORT屬性可實(shí)現(xiàn)數(shù)據(jù)的有序,同時(shí)指出兩者的特點(diǎn)和利弊。
利用學(xué)生已在計(jì)算機(jī)文化基礎(chǔ)課程中對(duì)Windows圖形界面及軟件熟練使用的基礎(chǔ),在該書(shū)中,大量的實(shí)例都圍繞著第一層次中已學(xué)過(guò)的軟進(jìn)行剖析,如對(duì)計(jì)算器、圖形瀏覽器、文本編輯器、數(shù)據(jù)庫(kù)管理等的分析。通過(guò)實(shí)例分析,并加以編程實(shí)現(xiàn),使學(xué)生既掌握了VB內(nèi)容的學(xué)習(xí),進(jìn)行了開(kāi)發(fā)實(shí)用軟件的訓(xùn)練,更激發(fā)了探索VB奧妙的興趣,達(dá)到事半功倍的效果。
四、 在精字上下功夫,有創(chuàng)新
為了解決內(nèi)容多、學(xué)時(shí)少的矛盾,作者花費(fèi)了大量的創(chuàng)造性勞動(dòng),在精字上下功夫。表現(xiàn)在:精練的文筆簡(jiǎn)述基本語(yǔ)法的使用規(guī)則,淡化繁瑣的語(yǔ)法規(guī)則。短小精悍的實(shí)例引路,通過(guò)問(wèn)題的展開(kāi)導(dǎo)出對(duì)象屬性和方法,加深讀者對(duì)新知識(shí)的理解。精心設(shè)置了思考題并留有余地,給學(xué)生提供較多的獨(dú)立思考的機(jī)會(huì),鞏固學(xué)習(xí)內(nèi)容。精選了與實(shí)際生活密切相關(guān)的問(wèn)題作為實(shí)例或?qū)嶒?yàn)內(nèi)容,既調(diào)動(dòng)了學(xué)生的學(xué)習(xí)積極性,又使得學(xué)與用密切結(jié)合,增強(qiáng)了學(xué)生運(yùn)用知識(shí)的能力。提供了與教材配套的CAI課件,構(gòu)成了立體化教材,利用大屏幕投影,真正貫徹精講多練的原則,提高了教學(xué)的質(zhì)量和效率。提供了與教材配套的教學(xué)網(wǎng)站,并提供了網(wǎng)絡(luò)化VB考試與評(píng)分系統(tǒng),隨時(shí)可進(jìn)行相關(guān)測(cè)評(píng)。教材結(jié)構(gòu)緊湊,層次清楚、圖文并茂、好教易學(xué)。
這些特色在同類(lèi)計(jì)算機(jī)基礎(chǔ)教材改革中具有一定的創(chuàng)新意義,使學(xué)生通過(guò)該書(shū)的學(xué)習(xí),提高獲取知識(shí)的能力、分析問(wèn)題和解決問(wèn)題的能力以及開(kāi)發(fā)實(shí)用軟件的能力。這在一般程序設(shè)計(jì)語(yǔ)言課程教學(xué)中難以完全兼顧到。
我已經(jīng)買(mǎi)了你說(shuō)的這本書(shū),好像就從亞馬遜買(mǎi)的,現(xiàn)在已經(jīng)看得差不多了。這本書(shū)的例子不太好,用圖片查看器開(kāi)發(fā)作為例子。整本書(shū)講得比較淺,不過(guò)寫(xiě)書(shū)的比較有經(jīng)驗(yàn),翻譯比較口語(yǔ)化,比vb.net入門(mén)經(jīng)典第6版容易懂一些。
vb.net入門(mén)經(jīng)典第6版是必看書(shū),建議你買(mǎi)一本
網(wǎng)站標(biāo)題:vb.net龔沛曾 大學(xué)計(jì)算機(jī) 龔沛曾
標(biāo)題來(lái)源:http://m.rwnh.cn/article26/doophjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、全網(wǎng)營(yíng)銷(xiāo)推廣、關(guān)鍵詞優(yōu)化、標(biāo)簽優(yōu)化、品牌網(wǎng)站制作、軟件開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)