VB課程設(shè)計報告-打字練習_第1頁
VB課程設(shè)計報告-打字練習_第2頁
VB課程設(shè)計報告-打字練習_第3頁
VB課程設(shè)計報告-打字練習_第4頁
VB課程設(shè)計報告-打字練習_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

VISUAL BASIC 課程設(shè)計報告 題目 打字練習 姓名 學號 班級 1 題目介紹 在計算機及其它數(shù)碼產(chǎn)品日益普及的今天 人們使用鍵盤應(yīng) 像使用筆寫字一樣熟練 進行打字練習是熟悉鍵盤并提高打字速 度的豪放法 本題目要求編制一個打字練習游戲 是用戶在游戲 過程中練習指法 2 設(shè)計過程中用到的知識點 1 控件數(shù)組 2 鍵盤事件處理 3 文本文件的讀寫 4 多模塊程序設(shè)計 5 隨機值的生成 3 課題要求和承擔的任務(wù) 1 游戲開始時出現(xiàn) 打字設(shè)置 窗口 在 您的姓名 文本 框中輸入用戶名 若未輸入名字 就點擊 開始練習 與 查看成績 按鈕 則提示用戶輸入姓名 若未輸入時間 就點擊 開始練習 與 查看成績 按鈕 則提示用戶輸 入時間 在 打字設(shè)置 窗口可以設(shè)置打字速度和難度 速度決定字母下落的快慢 共分高 中 低速三檔 難度 等級也分為三檔 小寫字母 大寫字母 所有混合 字母 數(shù)字和符號 2 選擇速度和難度之后 單擊 開始練習 按鈕后 主頁面 以全屏方式顯示 根據(jù)難度的設(shè)置 屏幕上隨即產(chǎn)生并落 下各種字符 若用戶在字符落到屏幕底部之前敲擊了相應(yīng) 的鍵盤鍵 則該字符被 擊中 后消失 擊中時在字符位 置上顯示一個爆炸的效果 程序根據(jù)速度和難度的不同自 動進行計分 分數(shù)實時地顯示在主界面的頂部 計分標準為 1 慢速 小寫字母 打中一個 1 分 2 慢速 大寫字母 打中一個 2 分 3 慢速 混合字符 打中一個 3 分 4 中速 小寫字母 打中一個 4 分 5 中速 大寫字母 打中一個 5 分 6 中速 混合字符 打中一個 6 分 7 高速 小寫字母 打中一個 7 分 8 高速 大寫字母 打中一個 8 分 9 高速 混合字符 打中一個 9 分 3 打字前可以選擇打字的時間 時間一到彈出消息框顯示 用戶本次練習得分 并提示是否繼續(xù)練習 如果選 否 返回 打 字設(shè)置 窗口 用戶的成績被保存在 SCORE TXT 文件中 供以 后查詢 4 當下落字符中有相同字符時 一次只能打掉一個 5 在打字過程中 可以按 ESC 鍵中止游戲 返回打字設(shè)置窗 口 但游戲的成績并不保存 6 打字過程中如果按 F1 功能鍵 彈出鍵盤布局窗口供用戶 參考 顯示該窗口時主窗口的字符暫停下落 關(guān)閉此窗口 游戲繼續(xù)進行 7 在 打字設(shè)置 窗口中 點擊 查看成績 按鈕 顯示當 前用戶的歷次練習的成績和時間 8 要求程序運行時將各個字符均勻地分布占滿屏幕寬度 4 程序關(guān)鍵代碼 frmSet 界面代碼 Option Explicit 強制變量聲明 Private Sub Form Load Label2 Caption Now End Sub Private Sub cmdPlay Click If txtName Text Then MsgBox 您還沒有輸入姓名 32 打字設(shè)置 txtName SetFocus Exit Sub End If If Text1 Text Then MsgBox 您還沒有輸入時間 32 打字設(shè)置 Text1 SetFocus Exit Sub End If games Show games deadtime Val Text1 Text 60 Me Hide End Sub Private Sub cmdScore Click Dim pd1 As PersonData Dim pd2 As PersonData Dim str As String Dim strFind As Boolean pd1 name txtName Text If Dir App Path Score txt Then 測試一個指定的路徑下是否有指定的文件或文 件夾 MsgBox 文件不存在 48 成績查看 Exit Sub Else Open App Path Score txt For Input As 1 If txtName Text Then 讀取成績 Do While Not EOF 1 Input 1 pd2 name pd2 score pd2 time 讀入值賦給相應(yīng)的變量 strFind True Grade Text1 Text Grade Text1 Text pd2 name Space 2 pd2 score 分 Space 2 pd2 time Chr 13 Chr 10 Loop Else Do While Not EOF 1 Input 1 pd2 name pd2 score pd2 time If pd2 name pd1 name Then strFind True Grade Text1 Text Grade Text1 Text pd2 name Space 2 pd2 score 分 Space 2 pd2 time Chr 13 Chr 10 End If Loop End If Close 1 If strFind True Then Grade Show Me Hide Else MsgBox 沒有您的成績記錄 48 成績查看 End If End If End Sub Private Sub cmdExit Click Unload Me End Sub Private Sub Form Unload Cancel As Integer Unload games End Sub Private Sub Frame2 DragDrop Source As Control X As Single Y As Single End Sub Private Sub Label2 Click End Sub Games 界面代碼 Option Explicit Dim second As Integer Public deadtime As Integer Private Sub Form KeyDown KeyCode As Integer Shift As Integer If KeyCode vbKeyF1 Then Timer1 Enabled False frmKB Show 1 Timer1 Enabled True End If End Sub Private Sub Form Load Dim i As Integer For i 1 To 9 Load lblLetter i Next For i 0 To 9 lblLetter i Left Screen Width 11 i 1 lblLetter i Top 0 lblLetter i Visible True Next Start End Sub Private Sub Form KeyPress KeyAscii As Integer Dim i As Integer For i 0 To lblLetter Count 1 If Chr KeyAscii lblLetter Item i Caption Then 有匹配字符 ScoreCount imgExplode Left lblLetter Item i Left imgExplode Top lblLetter Item i Top imgExplode Visible True Timer2 Enabled True lblLetter Item i Top 0 Letter i Label2 Caption frmSet txtName Text 你現(xiàn)在的得分是 TotalScore 分 Exit Sub End If Next If KeyAscii 27 Then If MsgBox 真的要結(jié)束練習嗎 vbYesNo vbQuestion 打字練習 vbYes Then Unload Me frmSet Visible True End If End If TotalScore TotalScore 1 Label2 Caption frmSet txtName Text 你現(xiàn)在的得分是 TotalScore 分 End Sub Private Sub Image1 Click End Sub Private Sub Timer1 Timer Dim i As Integer For i 0 To lblLetter Count 1 Randomize Speed i Next Label2 Caption frmSet txtName Text 你現(xiàn)在的得分是 TotalScore 分 End Sub Private Sub Timer2 Timer Dim i As Integer For i 0 To lblLetter Count 1 If lblLetter Item i Top Me Height Then Letter i End If Next imgExplode Visible False Timer2 Enabled False End Sub Private Sub Timer3 Timer Dim person As PersonData second second 1 lblTime second 60 second Mod 60 If second deadtime Then person name frmSet txtName Text person score TotalScore person time frmSet Label2 Caption Open App Path Score txt For Append As 1 Write 1 person name person score person time Close 1 If MsgBox frmSet txtName Text 本次練習您的得分是 TotalScore 分 Chr 13 Chr 10 游戲結(jié)束 繼續(xù)嗎 vbYesNo vbQuestion 打字練習 vbYes Then TotalScore 0 second 0 Label2 Caption frmSet txtName Text 你現(xiàn)在的得分是 TotalScore 分 Start Else Unload Me frmSet Visible True End If End If End Sub Grade 界面代碼 Private Sub Command1 Click frmSet Show Unload Me End Sub 模塊代碼 Type PersonData name As String score As String time As String End Type Public TotalScore As Integer 游戲總得分 Public Sub ScoreCount 計算總分數(shù) If frmSet LSpeed Value And frmSet Lowercase Value Then TotalScore TotalScore 1 ElseIf frmSet LSpeed Value And frmSet Uppercase Value Then TotalScore TotalScore 2 ElseIf frmSet LSpeed Value And frmSet Mixcase Value Then TotalScore TotalScore 3 ElseIf frmSet MSpeed Value And frmSet Lowercase Value Then TotalScore TotalScore 4 ElseIf frmSet MSpeed Value And frmSet Uppercase Value Then TotalScore TotalScore 5 ElseIf frmSet MSpeed Value And frmSet Mixcase Value Then TotalScore TotalScore 6 ElseIf frmSet HSpeed Value And frmSet Lowercase Value Then TotalScore TotalScore 7 ElseIf frmSet HSpeed Value And frmSet Uppercase Value Then TotalScore TotalScore 8 ElseIf frmSet HSpeed Value And frmSet Mixcase Value Then TotalScore TotalScore 9 End If End Sub Public Sub Letter n As Integer 根據(jù)選擇產(chǎn)生英文字母 If frmSet Lowercase Value Then j Int Rnd 26 97 產(chǎn)生小寫字母 ElseIf frmSet Uppercase Value Then If n Mod 2 0 Then 產(chǎn)生大小寫混合字母 j Int Rnd 26 65 Else j Int Rnd 26 97 End If ElseIf frmSet Mixcase Value Then j Int Rnd 79 48 產(chǎn)生混合字母 End If games lblLetter Item n Caption Chr j games lblLetter Item n ForeColor RGB Rnd 254 Rnd 254 Rnd 254 End Sub Public Sub Speed n As Integer 根據(jù)選擇產(chǎn)生不同的速度 If frmSet LSpeed Value Then games lblLetter Item n Top games lblLetter Item n Top 50 ElseIf frmSet MSpeed Value Then games lblLetter Item n Top games lblLetter Item n Top 90 ElseIf frmSet HSpeed Value Then games lblLetter Item n Top games lblLetter Item n Top 130 End If If games lblLetter Item n Top games Height Then games lblLetter Item n Top 0 TotalScore TotalScore 10 Letter n End If End Sub Public Sub Start With games 調(diào)用會反復出現(xiàn)的對象名 Label2 Caption frmSet txtName Text 您現(xiàn)在的得分是 TotalScore 分 imgExplode Visible False Dim i As Integer For i 0 To lblLetter Count 1 lblLetter Item i Top 1000 Next For i 0 To lblLetter Count 1 Randomize 為隨機數(shù)生成器生成一個隨機數(shù)省略 EXPN1 則用系統(tǒng)時鐘返回 值作為 種子 值 Letter i Next End With End Sub 5 課程設(shè)計中的一些問題以及解決的方法 1 在編 frmSet 中的程序時 為了讓沒輸入名字和時間都要提示 玩家輸入 我為兩個都編寫了語句 但卻發(fā)現(xiàn) 當兩者都沒 輸入的時候 它是先后跳出兩個對話框來提示 這顯然是沒 有必要的 所以 一直在那想該怎么達到好的效果 后來才 想到應(yīng)該在對名字文本框確認后如不符合就應(yīng)強制退出 這 樣就不會重復 2 最令我頭疼的還是那個更上一層樓的要求 怎么樣才能使在 游戲過程中碰到相同并符合的字符時 最先擊打最靠近底部 的字符呢 我已開始的時候就是把從左往右十列建立一個變 量數(shù)組 用 for next 語句來依次實行 這樣就程序在每一回 查找相同字符時都是呆板地從左往右掃描一遍 一旦找到合 適字符就引發(fā)擊中事件 并返回最左端重新開始掃描 但是怎么樣才能達到更上一層樓的效果呢 我想了很多方法 并查找了相關(guān)的資料 并覺得這種方法可行 那就是先把所 有的相同的符合的字符先全都找出來 并繼續(xù)在這些滿足條 件的字符中再挑選出 top 值最大的一個字符 即是最靠近屏 幕底端的字符 再擊中就可以了 3 還一個 問題就是設(shè)計在同意屏幕中弄出不同的速度 這一點 我就沒有做到 深表遺憾 6 對游戲改進的建議以及一些控件的其它設(shè)置方法 1 覺得游戲的查成績部分有值得完善的地方 成績被保存 在指定的文件中 但是如果玩的次數(shù)多了會有一大堆成績保存在里 面顯得很亂而且不便于成績查詢 因此我建議在成績查詢界面加一 個清除成績的控件 點擊控件已有的成績被清除 2 我覺得控制下落速度除了可以加控件的 TOP 值之外 還 可以在 TOP 值一定的情況下用 TIMER 的 INTERVAL 屬性 不同 的下落速度使用不同的屬性值 如低速 300 中速 200 高速 100 也可實現(xiàn)此功能 3 在記分時 難度不同得分不同 在此程序中我用最笨的方 法就是把所有情況的用文字列出來 其實用它們的 INDEX 屬

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論