2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

3、口的頂部。計分標準如下:</p><p>  1、慢速+小寫字母:打中一個1分</p><p>  2、慢速+大寫字母:打中一個2分</p><p>  3、慢速+混合字符:打中一個3分 </p><p>  4、中速+小寫字母:打中一個4分</p><p>  5、中速+大寫字母:打中一個5分</p>

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

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

6、程中,屏幕的頂部顯示已用的時間和當前的分數(shù),按F1功能鍵則彈出鍵盤布局窗口以供用戶參考.</p><p>  6)單擊”查看成績”按鈕,彈出“成績”對話框,顯示當前用戶每次的練習時間和成績.</p><p><b>  三、程序代碼展示</b></p><p><b>  Frmstart:</b></p>

7、<p>  Option Explicit</p><p>  Dim strtime As String '得到輸入時間文本框的時間</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("沒有您的成績紀錄", 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, "錯誤")</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() '輸入游戲時間,默認一分鐘</p><p>  Dim int3 As Single '用來在strtime 和inttime 中間轉(zhuǎn)換的一個變量</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>  '如果是時間到了以后退出,則往文本文件里面寫文件</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é)束練習嗎?", 36, "打字練習")</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 '標簽控件賦初值</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 '隨機生成字體</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 '若大于游戲時間,則退出</p><p>  int5 = MsgBox("本次練習你的成績是" & CSt

42、r(t) & "分" & Chr(13) & Chr(10) & _</p><p>  "游戲結(jié)束,要繼續(xù)嗎?", 36, "打字練習")</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>  '下面的代碼控制窗體頂部時間的顯示</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)時,游戲窗體暫停</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 '記錄分數(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 ‘使得隨機</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è)計過程中出現(xiàn)的問題</p><p>  由于對程序中涉及的一些書本外的知識,盡管看了資料,但是還是不能應用自如,所以本程序的背景音樂和打擊聲沒有實現(xiàn).可用Keypress事件檢測鍵入的字符是否正確。判斷Esc和F1等控制鍵或功能鍵,應該使用Keydown事件.關(guān)于這兩個所涉及的鍵碼,有一些不懂得的地方,經(jīng)過翻閱書籍和詢問同學,解決了這個問題.還有一些小的細節(jié)問題,經(jīng)過自己不斷地閱讀程序,把這些小

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

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

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

溫馨提示

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

評論

0/150

提交評論