版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課程設(shè)計(jì)題目 打字游戲</p><p> 功能:本程序?yàn)闊o(wú)聲版打字練習(xí):有四個(gè)窗體,其中一個(gè)為開(kāi)始窗體frmstart,游戲界面frmplay,還有一個(gè)為彈出鍵盤(pán)的界面frmkeyboard,還有一個(gè)為察看成績(jī)界面frmscore其中frmstart為啟動(dòng)窗體還有一個(gè)模塊用來(lái)存放全局變量和一個(gè)控制字母生成的全局過(guò)程 ziti。還有一個(gè)文本文件用來(lái)儲(chǔ)存玩家的信息。</p>
2、<p><b> 二.課程詳細(xì)設(shè)計(jì):</b></p><p> 1)程序開(kāi)始顯示“打字設(shè)置”窗口,在“你的姓名”文本框中輸入姓名。若未輸入姓名就單擊“開(kāi)始練習(xí)”或“查看成績(jī)”按鈕,則在屏幕上出現(xiàn)一個(gè)消息框。在”打字屏幕上隨機(jī)產(chǎn)生并下落各種字符.若用戶(hù)在字符落到屏幕底下之前,敲擊了鍵盤(pán)上的相應(yīng)的鍵,則該字符被“擊中”,然后消失。程序根據(jù)速度和難度的設(shè)置自動(dòng)計(jì)分,分?jǐn)?shù)實(shí)時(shí)顯示在窗
3、口的頂部。計(jì)分標(biāo)準(zhǔn)如下:</p><p> 1、慢速+小寫(xiě)字母:打中一個(gè)1分</p><p> 2、慢速+大寫(xiě)字母:打中一個(gè)2分</p><p> 3、慢速+混合字符:打中一個(gè)3分 </p><p> 4、中速+小寫(xiě)字母:打中一個(gè)4分</p><p> 5、中速+大寫(xiě)字母:打中一個(gè)5分</p>
4、<p> 6、中速+混合字符:打中一個(gè)6分</p><p> 7、高速+小寫(xiě)字母:打中一個(gè)7分</p><p> 8、高速+大寫(xiě)字母:打中一個(gè)8分</p><p> 9、高速+混合字符:打中一個(gè)9分 </p><p> 所有字符包括大小寫(xiě)字母,數(shù)字和符號(hào)字符.</p><p> 2)當(dāng)
5、下落字符中有相同字符時(shí),一次只能打掉一個(gè).如果按了屏幕上沒(méi)有的字符則扣1分,如果有字符落到屏幕底下則扣10分.</p><p> 3)為了增加游戲的趣味性,可增加背景音樂(lè)和打中時(shí)的打擊聲.在此不作要求。</p><p> 4)時(shí)間一到則顯示用戶(hù)本次的得分并提示是否繼續(xù)進(jìn)行.打字過(guò)程中可以按Esc鍵則中止游戲,返回打字設(shè)置窗口.</p><p> 5)打字練習(xí)過(guò)
6、程中,屏幕的頂部顯示已用的時(shí)間和當(dāng)前的分?jǐn)?shù),按F1功能鍵則彈出鍵盤(pán)布局窗口以供用戶(hù)參考.</p><p> 6)單擊”查看成績(jī)”按鈕,彈出“成績(jī)”對(duì)話(huà)框,顯示當(dāng)前用戶(hù)每次的練習(xí)時(shí)間和成績(jī).</p><p><b> 三、程序代碼展示</b></p><p><b> Frmstart:</b></p>
7、<p> Option Explicit</p><p> Dim strtime As String '得到輸入時(shí)間文本框的時(shí)間</p><p> Private Sub cmdExit_Click() '退出按鈕</p><p> Unload frmPlay: Unload frmStart: Unload frm
8、Score</p><p><b> End Sub</b></p><p> Private Sub cmdScore_Click() '察看成績(jī)按鈕</p><p> Dim int7 As Integer</p><p> Open "score.txt" For Input
9、 As 3</p><p> Do While Not EOF(3)</p><p> Input #3, str1, str2, str3</p><p> str4 = str1 + " " + str2 + " " + str3</p><p> If str1 = frmStart
10、.txtName.Text Then '如果找到則添加到列表框中</p><p> frmScore.lstScore.AddItem str4</p><p><b> End If</b></p><p> If frmStart.txtName.Text = "" Then '
11、;如果搜索內(nèi)容為空則全部顯示</p><p> frmScore.lstScore.AddItem str4</p><p><b> End If</b></p><p><b> str1 = ""</b></p><p><b> str2 = "
12、;"</b></p><p><b> str3 = ""</b></p><p><b> str4 = ""</b></p><p><b> Loop</b></p><p> If frmScore.
13、lstScore.ListCount = 0 Then '如果為空即姓名不存在則顯示提示框</p><p> int7 = MsgBox("沒(méi)有您的成績(jī)紀(jì)錄", 48, "成績(jī)查看")</p><p> If int7 = 1 Then</p><p> Unload frmScore&l
14、t;/p><p><b> End If</b></p><p><b> Else</b></p><p> frmScore.Show</p><p><b> End If</b></p><p><b> Close 3</
15、b></p><p><b> End Sub</b></p><p> Private Sub Form_Load()</p><p> frmStart.lblTime.Caption = Now</p><p> txtTime.Text = "1"</p><
16、p> optSpeed(0).Value = True: optZimu(0).Value = True</p><p> txtName.Text = ""</p><p><b> End Sub</b></p><p> Private Sub cmdStart_Click() '開(kāi)始按鈕
17、</p><p> Dim m As Integer</p><p> If frmStart.txtName.Text = "" Then</p><p> m = MsgBox("請(qǐng)您輸入您的姓名", 32, "錯(cuò)誤")</p><p><b> Exit Su
18、b</b></p><p><b> End If</b></p><p> frmStart.Visible = False</p><p> frmPlay.Show</p><p><b> End Sub</b></p><p> Private
19、 Sub txtTime_Change() '輸入游戲時(shí)間,默認(rèn)一分鐘</p><p> Dim int3 As Single '用來(lái)在strtime 和inttime 中間轉(zhuǎn)換的一個(gè)變量</p><p> strtime = txtTime.Text</p><p> int3 = CSng(strtime)</p>
20、<p> inttime = int3 * 60</p><p><b> End Sub</b></p><p><b> Frmplay:</b></p><p> Option Explicit</p><p> Dim intSecond As Integer</
21、p><p> Dim intMinute As Integer</p><p> Private X As Integer '控制爆炸圖畫(huà)的出現(xiàn)和消失</p><p> Private intend As Integer '控制游戲的結(jié)束</p><p> Private Sub Form_Deactivate
22、()</p><p> If intend >= inttime Then</p><p> intend = 0: Timer2.Enabled = False</p><p> '如果是時(shí)間到了以后退出,則往文本文件里面寫(xiě)文件</p><p> Open "score.txt" For Appen
23、d As 1</p><p> Write #1, frmStart.txtName.Text, CStr(t), frmStart.lblTime.Caption</p><p><b> Close 1</b></p><p><b> End If</b></p><p><b&g
24、t; End Sub</b></p><p> Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)</p><p> Dim int4 As Integer</p><p> If KeyCode = 27 Then '用戶(hù)按了ESC</p>&
25、lt;p> int4 = MsgBox("真的要結(jié)束練習(xí)嗎?", 36, "打字練習(xí)")</p><p> If int4 = 6 Then</p><p> Unload frmPlay: frmStart.Visible = True</p><p><b> End If</b><
26、;/p><p><b> End If</b></p><p> If KeyCode = 112 Then '用戶(hù)按了F1</p><p> frmKeyboard.Show 1</p><p><b> End If</b></p><p><b
27、> End Sub</b></p><p> Private Sub Form_Load()</p><p> intSecond = 0: intMinute = 0: intend = 0: t = 0</p><p> Timer2.Enabled = True: Image1.Visible = False</p>&
28、lt;p> frmPlay.WindowState = 2</p><p> Dim h As Integer, z As Integer '循環(huán)變量</p><p> For z = 0 To 9 '標(biāo)簽控件賦初值</p><p> lblShow(z).BackColor = frmPlay.BackColor</
29、p><p> lblShow(z).ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)</p><p> lblShow(z).Top = frmPlay.Top - lblShow(z).Height</p><p><b> Next z</b></p><p> F
30、or h = 0 To 2 '根據(jù)速度的設(shè)定來(lái)控制下落的速度</p><p> If frmStart.optSpeed(h).Value = True Then</p><p> Timer1.Interval = 50 * (3 - h)</p><p> Call Ziti '隨機(jī)生成字體</p><p>
31、;<b> End If</b></p><p><b> Next h</b></p><p> Label1.BackColor = Frame1.BackColor: Label2.BackColor = Frame1.BackColor: Label3.BackColor = Frame1.BackColor</p>
32、<p> Frame1.Width = frmPlay.Width + 1000</p><p><b> End Sub</b></p><p> Private Sub Timer1_Timer() '搜索是否有字母到底</p><p><b> Randomize</b></p>
33、<p> Dim intx As Integer</p><p> For intx = 0 To 9</p><p> If lblShow(intx).Top >= frmPlay.Height - lblShow(intx).Height Then</p><p> t = t – 10 ‘有字母
34、到底即扣去十分</p><p> If frmStart.optZimu(0).Value = True Then</p><p><b> Randomize</b></p><p> frmPlay.lblShow(intx).Caption = Chr(Rnd * 25 + 97)</p><p><b
35、> End If</b></p><p> If frmStart.optZimu(1).Value = True Then</p><p><b> Randomize</b></p><p> frmPlay.lblShow(intx).Caption = Chr(Rnd * 47 + 65)</p>
36、<p> If Asc(frmPlay.lblShow(intx).Caption) < 97 And Asc(frmPlay.lblShow(intx).Caption) > 90 Then</p><p> frmPlay.lblShow(intx).Caption = Chr(Rnd * 47 + 65)</p><p><b> End If
37、</b></p><p><b> End If</b></p><p> If frmStart.optZimu(2).Value = True Then</p><p><b> Randomize</b></p><p> frmPlay.lblShow(intx).Cap
38、tion = Chr(Rnd * 57 + 65)</p><p><b> End If</b></p><p> lblShow(intx).Top = frmPlay.Top - lblShow(intx).Height</p><p> lblShow(intx).ForeColor = RGB(Rnd * 255, Rnd *
39、255, Rnd * 255)</p><p><b> End If</b></p><p> lblShow(intx).Top = lblShow(intx).Top + Rnd * 200</p><p><b> Next intx</b></p><p> Label3.Capt
40、ion = "歡迎" & frmStart.txtName.Text & _</p><p> "您現(xiàn)在的得分是 " & t</p><p><b> End Sub</b></p><p> Private Sub Timer2_Timer()</p><
41、;p><b> '控制游戲的結(jié)束</b></p><p> Dim int5 As Integer</p><p> If intend >= inttime Then '若大于游戲時(shí)間,則退出</p><p> int5 = MsgBox("本次練習(xí)你的成績(jī)是" & CSt
42、r(t) & "分" & Chr(13) & Chr(10) & _</p><p> "游戲結(jié)束,要繼續(xù)嗎?", 36, "打字練習(xí)")</p><p> If int5 = 6 Then</p><p> Call Form_Load</p><
43、p> ElseIf int5 = 7 Then</p><p> Unload frmPlay: frmStart.Visible = True</p><p><b> End If</b></p><p><b> End If</b></p><p> intend = int
44、end + 1</p><p> '下面的代碼控制窗體頂部時(shí)間的顯示</p><p> intSecond = intSecond + 1</p><p> If intSecond >= 60 Then</p><p> intSecond = intSecond - 60: intMinute = intMinute
45、 + 1</p><p><b> End If</b></p><p> frmPlay.Label1.Caption = CStr(intMinute) & ":" & CStr(intSecond)</p><p><b> End Sub</b></p>&l
46、t;p> Private Sub form_keypress(keyascii As Integer)</p><p> Dim inty As Integer '循環(huán)變量</p><p> For inty = 0 To 9</p><p> If keyascii = Asc(lblShow(inty).Caption) T
47、hen</p><p><b> '生成新的字符</b></p><p> If frmStart.optZimu(0).Value = True Then</p><p><b> Randomize</b></p><p> frmPlay.lblShow(inty).Capti
48、on = Chr(Rnd * 25 + 97)</p><p><b> End If</b></p><p> If frmStart.optZimu(1).Value = True Then</p><p><b> Randomize</b></p><p> frmPlay.lblS
49、how(inty).Caption = Chr(Rnd * 25 + 65)</p><p><b> End If</b></p><p> If frmStart.optZimu(2).Value = True Then</p><p><b> Randomize</b></p><p>
50、; frmPlay.lblShow(inty).Caption = Chr(Rnd * 57 + 65)</p><p><b> End If</b></p><p> Image1.Visible = True: Image1.Left = lblShow(inty).Left: Image1.Top = lblShow(inty).Top</p>
51、;<p> Timer3.Enabled = True</p><p> lblShow(inty).Top = frmPlay.Top - lblShow(inty).Height</p><p><b> '加分</b></p><p> Dim intxunhuan As Integer '循環(huán)
52、變量</p><p> Dim temp As Integer '循環(huán)變量</p><p> For intxunhuan = 0 To 2</p><p> If frmStart.optSpeed(intxunhuan).Value = True Then</p><p> For temp = 0 To
53、 2</p><p> If frmStart.optZimu(temp) = True Then</p><p> t = t + 1 + temp + 3 * intxunhuan</p><p><b> End If</b></p><p><b> Next</b></p&g
54、t;<p><b> End If</b></p><p><b> Next</b></p><p><b> Exit Sub</b></p><p><b> End If</b></p><p><b> Next
55、 inty</b></p><p> If inty = 10 Then '若沒(méi)有則減去一分</p><p><b> t = t - 1</b></p><p><b> End If</b></p><p><b> End Sub</b>
56、;</p><p> Private Sub timer3_Timer() '控制爆炸圖畫(huà)的出現(xiàn)和消失</p><p> Dim X As Integer</p><p><b> X = X + 1</b></p><p> If X = 1 Then</p><p>
57、Image1.Visible = False: X = 0</p><p><b> End If</b></p><p><b> End Sub</b></p><p> Frmkeyboard:</p><p> Option Explicit</p><p>
58、 Private Sub Form_Load()</p><p> Image1.Picture = LoadPicture("resource\Keyboard.bmp")</p><p> frmPlay.KeyPreview = False: frmPlay.Timer1.Enabled = False '使鍵盤(pán)出現(xiàn)時(shí),游戲窗體暫停</p
59、><p> frmPlay.Timer2.Enabled = False</p><p><b> End Sub</b></p><p> Private Sub Form_Unload(Cancel As Integer)</p><p> frmPlay.KeyPreview = True: frmPlay.T
60、imer1.Enabled = True</p><p> frmPlay.Timer2.Enabled = True</p><p><b> End Sub</b></p><p><b> Modulel1:</b></p><p> Option Explicit</p>
61、<p> Public t As Integer '記錄分?jǐn)?shù)</p><p> Public str1 As String, str2 As String, str3 As String, str4 As String</p><p> Public inttime As Single</p><p> Public S
62、ub Ziti() '控制出現(xiàn)字符的種類(lèi)</p><p> Dim a As Integer, b As Integer, c As Integer</p><p> If frmStart.optZimu(0).Value = True Then</p><p> For a = 0 To 9</p><p><
63、b> Randomize</b></p><p> frmPlay.lblShow(a).Caption = Chr(Rnd * 25 + 97)</p><p><b> Next a</b></p><p><b> End If</b></p><p> If fr
64、mStart.optZimu(1).Value = True Then</p><p> For b = 0 To 9</p><p> Randomize ‘使得隨機(jī)</p><p> frmPlay.lblShow(b).Caption = Chr(Rnd * 47 + 65)</p><p> If Asc(fr
65、mPlay.lblShow(b).Caption) < 97 And Asc(frmPlay.lblShow(b).Caption) > 90 Then</p><p><b> b = b - 1</b></p><p><b> End If</b></p><p><b> Next b&
66、lt;/b></p><p><b> End If</b></p><p> If frmStart.optZimu(2).Value = True Then</p><p> For c = 0 To 9</p><p><b> Randomize</b></p>
67、<p> frmPlay.lblShow(c).Caption = Chr(Rnd * 57 + 65)</p><p><b> Next c</b></p><p><b> End If</b></p><p><b> End Sub</b></p><p
68、> 四.設(shè)計(jì)過(guò)程中出現(xiàn)的問(wèn)題</p><p> 由于對(duì)程序中涉及的一些書(shū)本外的知識(shí),盡管看了資料,但是還是不能應(yīng)用自如,所以本程序的背景音樂(lè)和打擊聲沒(méi)有實(shí)現(xiàn).可用Keypress事件檢測(cè)鍵入的字符是否正確。判斷Esc和F1等控制鍵或功能鍵,應(yīng)該使用Keydown事件.關(guān)于這兩個(gè)所涉及的鍵碼,有一些不懂得的地方,經(jīng)過(guò)翻閱書(shū)籍和詢(xún)問(wèn)同學(xué),解決了這個(gè)問(wèn)題.還有一些小的細(xì)節(jié)問(wèn)題,經(jīng)過(guò)自己不斷地閱讀程序,把這些小
69、的問(wèn)題解決了。在編寫(xiě)的過(guò)程中由于本人對(duì)整個(gè)問(wèn)題缺乏系統(tǒng)性,所以出現(xiàn)了一些邏輯錯(cuò)誤,經(jīng)過(guò)同學(xué)和我不斷的調(diào)試,最終完成了程序的設(shè)計(jì)。</p><p><b> 五.程序設(shè)計(jì)小結(jié)</b></p><p> 經(jīng)驗(yàn)與教訓(xùn):本程序星級(jí)較高,相對(duì)較難,因此功能的實(shí)現(xiàn)是分塊進(jìn)行的,由于事前沒(méi)有很好的規(guī)劃,導(dǎo)致有的功能實(shí)現(xiàn)以后,卻發(fā)現(xiàn)與別的功能相沖突,不得以重新再來(lái),這樣反復(fù)的刪改
70、導(dǎo)致的直接后果是有的變量發(fā)現(xiàn)沒(méi)用了被刪掉了以后卻沒(méi)有被刪干凈,結(jié)果有些變量自己也不知道到底有沒(méi)有用,是干什么用的,歸根到底還是自己沒(méi)有養(yǎng)成良好的編程習(xí)慣,變量不經(jīng)定義就胡亂使用,即使定義了也經(jīng)常是用什么IJ之類(lèi)的代替,不具有描述性,結(jié)果自己也被搞混了。而且有些東西書(shū)上本來(lái)就講的不詳細(xì),我卻錯(cuò)誤的以為是放之天下皆準(zhǔn)的真理,結(jié)果運(yùn)行時(shí)以為萬(wàn)無(wú)一失的東西卻總是長(zhǎng)長(zhǎng)出錯(cuò),這時(shí)才明白什么叫“實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)”,明白書(shū)說(shuō)的并不是百分之百的正
71、確,要根據(jù)實(shí)踐來(lái)修正書(shū)本上學(xué)到的東西,而且明白實(shí)踐也是獲得經(jīng)驗(yàn)的一種重要方式。</p><p> 還有就是暴露了自己平時(shí)學(xué)習(xí)的不扎實(shí),有的相關(guān)問(wèn)題老師講的時(shí)候總學(xué)的似是而非,考試的時(shí)候主要就是憑運(yùn)氣好壞,自己還為自己的學(xué)習(xí)方法沾沾自喜,覺(jué)的無(wú)所謂,等到真正運(yùn)用的時(shí)候才發(fā)現(xiàn)了問(wèn)題,平時(shí)掌握的似是而非的問(wèn)題,運(yùn)用時(shí)不是出錯(cuò)就是達(dá)不到想要的狀態(tài)沒(méi)辦法只好臨時(shí)抱著書(shū)死啃。這時(shí)才后悔平時(shí)沒(méi)有多下點(diǎn)功夫把知識(shí)掌握牢靠了,否
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- vb課程設(shè)計(jì)報(bào)告---打字游戲
- c課程設(shè)計(jì)報(bào)告-打字游戲
- vb課程設(shè)計(jì)報(bào)告---打字程序設(shè)計(jì)報(bào)告
- vb課程設(shè)計(jì)報(bào)告---打字程序設(shè)計(jì)報(bào)告
- VB課程設(shè)計(jì)報(bào)告---打字程序設(shè)計(jì)報(bào)告.doc
- 匯編課程設(shè)計(jì)打字游戲
- 匯編語(yǔ)言課程設(shè)計(jì)報(bào)告---打字游戲
- vb課程設(shè)計(jì)報(bào)告--拼圖游戲
- vb課程設(shè)計(jì)--打字練習(xí)應(yīng)用程序
- 打字游戲-匯編語(yǔ)言課程設(shè)計(jì)
- vb黑白棋游戲課程設(shè)計(jì)報(bào)告
- vb課程設(shè)計(jì)報(bào)告---用vb語(yǔ)句實(shí)現(xiàn)貪吃蛇游戲
- vb課程設(shè)計(jì)報(bào)告--英語(yǔ)詞匯游戲
- vb課程設(shè)計(jì)拼圖游戲
- vb課程設(shè)計(jì)--制作小游戲
- vb課程設(shè)計(jì)--九格游戲
- vb課程設(shè)計(jì)-- 基于vb語(yǔ)言的賽車(chē)小游戲
- vb課程設(shè)計(jì)報(bào)告模板
- vb掃雷課程設(shè)計(jì)報(bào)告
- [vb畢設(shè)]vb俄羅斯方塊游戲課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論