vb課程設(shè)計(jì)報(bào)告---打字游戲_第1頁
已閱讀1頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  課程設(shè)計(jì)題目 打字游戲</p><p>  功能:本程序?yàn)闊o聲版打字練習(xí):有四個(gè)窗體,其中一個(gè)為開始窗體frmstart,游戲界面frmplay,還有一個(gè)為彈出鍵盤的界面frmkeyboard,還有一個(gè)為察看成績界面frmscore其中frmstart為啟動窗體還有一個(gè)模塊用來存放全局變量和一個(gè)控制字母生成的全局過程 ziti。還有一個(gè)文本文件用來儲存玩家的信息。</p>

2、<p><b>  二.課程詳細(xì)設(shè)計(jì):</b></p><p>  1)程序開始顯示“打字設(shè)置”窗口,在“你的姓名”文本框中輸入姓名。若未輸入姓名就單擊“開始練習(xí)”或“查看成績”按鈕,則在屏幕上出現(xiàn)一個(gè)消息框。在”打字屏幕上隨機(jī)產(chǎn)生并下落各種字符.若用戶在字符落到屏幕底下之前,敲擊了鍵盤上的相應(yīng)的鍵,則該字符被“擊中”,然后消失。程序根據(jù)速度和難度的設(shè)置自動計(jì)分,分?jǐn)?shù)實(shí)時(shí)顯示在窗

3、口的頂部。計(jì)分標(biāo)準(zhǔn)如下:</p><p>  1、慢速+小寫字母:打中一個(gè)1分</p><p>  2、慢速+大寫字母:打中一個(gè)2分</p><p>  3、慢速+混合字符:打中一個(gè)3分 </p><p>  4、中速+小寫字母:打中一個(gè)4分</p><p>  5、中速+大寫字母:打中一個(gè)5分</p>

4、<p>  6、中速+混合字符:打中一個(gè)6分</p><p>  7、高速+小寫字母:打中一個(gè)7分</p><p>  8、高速+大寫字母:打中一個(gè)8分</p><p>  9、高速+混合字符:打中一個(gè)9分 </p><p>  所有字符包括大小寫字母,數(shù)字和符號字符.</p><p>  2)當(dāng)

5、下落字符中有相同字符時(shí),一次只能打掉一個(gè).如果按了屏幕上沒有的字符則扣1分,如果有字符落到屏幕底下則扣10分.</p><p>  3)為了增加游戲的趣味性,可增加背景音樂和打中時(shí)的打擊聲.在此不作要求。</p><p>  4)時(shí)間一到則顯示用戶本次的得分并提示是否繼續(xù)進(jìn)行.打字過程中可以按Esc鍵則中止游戲,返回打字設(shè)置窗口.</p><p>  5)打字練習(xí)過

6、程中,屏幕的頂部顯示已用的時(shí)間和當(dāng)前的分?jǐn)?shù),按F1功能鍵則彈出鍵盤布局窗口以供用戶參考.</p><p>  6)單擊”查看成績”按鈕,彈出“成績”對話框,顯示當(dāng)前用戶每次的練習(xí)時(shí)間和成績.</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() '察看成績按鈕</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("沒有您的成績紀(jì)錄", 48, "成績查看")</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() '開始按鈕

17、</p><p>  Dim m As Integer</p><p>  If frmStart.txtName.Text = "" Then</p><p>  m = MsgBox("請您輸入您的姓名", 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 '用來在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 '控制爆炸圖畫的出現(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í)間到了以后退出,則往文本文件里面寫文件</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 '用戶按了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 '用戶按了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è)定來控制下落的速度</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í)你的成績是" & 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 '若沒有則減去一分</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() '控制爆炸圖畫的出現(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 '使鍵盤出現(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)字符的種類</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ì)過程中出現(xiàn)的問題</p><p>  由于對程序中涉及的一些書本外的知識,盡管看了資料,但是還是不能應(yīng)用自如,所以本程序的背景音樂和打擊聲沒有實(shí)現(xiàn).可用Keypress事件檢測鍵入的字符是否正確。判斷Esc和F1等控制鍵或功能鍵,應(yīng)該使用Keydown事件.關(guān)于這兩個(gè)所涉及的鍵碼,有一些不懂得的地方,經(jīng)過翻閱書籍和詢問同學(xué),解決了這個(gè)問題.還有一些小的細(xì)節(jié)問題,經(jīng)過自己不斷地閱讀程序,把這些小

69、的問題解決了。在編寫的過程中由于本人對整個(gè)問題缺乏系統(tǒng)性,所以出現(xiàn)了一些邏輯錯(cuò)誤,經(jīng)過同學(xué)和我不斷的調(diào)試,最終完成了程序的設(shè)計(jì)。</p><p><b>  五.程序設(shè)計(jì)小結(jié)</b></p><p>  經(jīng)驗(yàn)與教訓(xùn):本程序星級較高,相對較難,因此功能的實(shí)現(xiàn)是分塊進(jìn)行的,由于事前沒有很好的規(guī)劃,導(dǎo)致有的功能實(shí)現(xiàn)以后,卻發(fā)現(xiàn)與別的功能相沖突,不得以重新再來,這樣反復(fù)的刪改

70、導(dǎo)致的直接后果是有的變量發(fā)現(xiàn)沒用了被刪掉了以后卻沒有被刪干凈,結(jié)果有些變量自己也不知道到底有沒有用,是干什么用的,歸根到底還是自己沒有養(yǎng)成良好的編程習(xí)慣,變量不經(jīng)定義就胡亂使用,即使定義了也經(jīng)常是用什么IJ之類的代替,不具有描述性,結(jié)果自己也被搞混了。而且有些東西書上本來就講的不詳細(xì),我卻錯(cuò)誤的以為是放之天下皆準(zhǔn)的真理,結(jié)果運(yùn)行時(shí)以為萬無一失的東西卻總是長長出錯(cuò),這時(shí)才明白什么叫“實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)”,明白書說的并不是百分之百的正

71、確,要根據(jù)實(shí)踐來修正書本上學(xué)到的東西,而且明白實(shí)踐也是獲得經(jīng)驗(yàn)的一種重要方式。</p><p>  還有就是暴露了自己平時(shí)學(xué)習(xí)的不扎實(shí),有的相關(guān)問題老師講的時(shí)候總學(xué)的似是而非,考試的時(shí)候主要就是憑運(yùn)氣好壞,自己還為自己的學(xué)習(xí)方法沾沾自喜,覺的無所謂,等到真正運(yùn)用的時(shí)候才發(fā)現(xiàn)了問題,平時(shí)掌握的似是而非的問題,運(yùn)用時(shí)不是出錯(cuò)就是達(dá)不到想要的狀態(tài)沒辦法只好臨時(shí)抱著書死啃。這時(shí)才后悔平時(shí)沒有多下點(diǎn)功夫把知識掌握牢靠了,否

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論